软件版本:gdal-3.20、jdk-1.80
一、开发环境搭建流程
- 首先从官网下载编译好的二进制包 GISInternals Support Site,名称release-1911-x64-gdal-3-2-0-mapserver-7-6-1.zip。
下载完成后的文件如下:
文件解压后如下:
- 将gdal的bin目录下所有dll拷贝到jdkin目录下(或jdkjrein,根据自己情况选择),如图所示:
- 在IDEA中创建一个JAVA项目,在项目根目录创建lib目录,将3个必要的文件拷贝到lib中(
ingdal302.dll
、bingdaljavagdalalljni.dll
、bingdaljavagdal.jar
)。
- 在项目中引用gdal的库。文件-项目结构-项目设置-库-添加-
gdal.jar
。
- 开始编码。在项目的java文件夹中创建一个类,编写如下代码:
import org.gdal.gdal.gdal;
import org.gdal.ogr.ogr;
public class HelloGdal {
public static void printVectorDrivers(){
ogr.RegisterAll();
int count =ogr.GetDriverCount();
System.out.println(count);
for(int i=0; i<count; i++){
System.out.println(ogr.GetDriver(i).GetName());
}
gdal.GDALDestroyDriverManager();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
printVectorDrivers();
}
}
运行结果如下:
二、问题总结
- 引用库报错
Native library load failed.
java.lang.UnsatisfiedLinkError: no gdalalljni in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.AllRegister()V
这个问题是gdal的dll文件拷贝位置不正确,导致java程序不能找到相应的dll引用。将dll拷贝到jdkin或jdkjrein,这里自己多尝试几次。
- 找不到proj.db
在系统环境变量中配置,PROJ_LIB:C:Program FilesGDALprojlibproj.db
如果没有该文件,下载gdal core进行安装。