Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

java调用GDAL动态库(dll)的一点心得



java调用GDAL动态库(dll)的一点心得

准备工作
1.下载支持java语言的GDAL类库
2.下载jna/jni (GDAL的调用需要jni的支持jna对jni进行了简单的封装)
3.下载gdal后配置相关的环境变量(百度一大堆)
4.(重中之重) 将 下载好的gdal.jar jna.jar/jni.jar platform-3.5.1.jar 添加到jdk-jre-bin-ext目录下(没有进行此步骤可以在main方法中调用,但是web端调用会抛出类库加载异常/类库嵌套异常)
5.将使用的DLL以及其依赖的DLL放在system32目录下(没错此步会抛出DLL 加载失败异常/not found DLL)
进去正文
新建java项目
将GDAL\bin\gdal\java文件夹下的dl添加到项目的根目录或者SRC的根目录下
在这里插入图片描述在这里插入图片描述
现在准备工作完全就绪,上代码
public static void main(String[] args)
{
//支持所有驱动
gdal.AllRegister();
//要读取的文件
String fileName_tif = “D:/qhxm/NDVI_Haibei_geo_tif_8bit.tif”;
//只读方式读取数据
Dataset hDataset = gdal.Open(fileName_tif, gdalconstConstants.GA_ReadOnly);
//支持中文路径
gdal.SetConfigOption(“gdal_FILENAME_IS_UTF8”, “YES”);
//判断是否非空
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());
int iXSize = hDataset.getRasterXSize();
int iYSize = hDataset.getRasterYSize();
// System.out.println(“Size is ” + iXSize + “, ” + iYSize);
Band band = hDataset.GetRasterBand(1);
double[] dGeoTrans = hDataset.GetGeoTransform();
hDataset.delete();
// 可选
gdal.GDALDestroyDriverManager();
}
java 调用GDAL 的基本操作完成.

笔者自己遇到的错误和大家分享一下,希望对刚接触的人有所帮助

错误1: DLL找不到异常
解决方式1:将使用的DLL库以及依赖库放入system32下
解决方式2:放入jdk的bin目录下
由于没有大牛指导自己遇到很多坑,希望这篇文章能给你一点小小的帮助

转载自:https://blog.csdn.net/admintys/article/details/86164008