转载来源
Java 调用 GDAL,使用编译好的库方法,获取 tif 文件信息及 tif 波段信息
https://www.pianshen.com/article/8695336579/
参考上文进行了试验。下面为操作步骤。
1.下载文件
到这里下载:https://www.gisinternals.com/release.php
解压得到:
2.复制到jdk
事先配置好jdk的环境变量(略)。
进入上面的bin文件夹:
- 把里面所有
dll
后缀的文件,全部复制到java的jdk里面的bin文件夹里面。 - 在上面的bin文件夹里面有个叫做gdal的文件夹,进入后可以看到一个叫做java的文件夹,继续进入,把里面的那个dll文件也复制到java的jdk里面的bin文件夹里:
可以看到上面还有一个gdal.jar,在下文的例子中,会把它复制到工程目录中使用。
3.例子
以VScode编辑器为例(eclipse、IDEA等其他编辑器同理),使用前面配置好的gdal读取一个tif图片。(我用的是jdk1.8)
例子的代码如下:
import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
public class Hello {
public static void main(String[] args) {
gdal.AllRegister();
String fileName_tif = "G:\\TEMP2\\scene.tif";
Dataset hDataset = gdal.Open(fileName_tif, gdalconstConstants.GA_ReadOnly);
if (hDataset == null) {
System.err.println("GDALOpen failed - " + gdal.GetLastErrorNo());
System.err.println(gdal.GetLastErrorMsg());
System.exit(1);
}
Driver hDriver = hDataset.GetDriver();
System.out.println("Driver: " + hDriver.getShortName() + "/" + hDriver.getLongName());
System.out.println("Size is " + hDataset.getRasterXSize() + ", " + hDataset.getRasterYSize());
Band band = hDataset.GetRasterBand(1);
System.out.println(band.getXSize());
hDataset.delete();
// 可选
gdal.GDALDestroyDriverManager();
}
}