使用 gdal java 绑定时出错

Error in using gdal java binding

我正在使用 gdal 的 java 绑定,使用 gdal 的 CoordinateTransformation Class 将一组坐标点从 UTM 投影到 lat/log。我写的代码如下:

    SpatialReference oUTM = new SpatialReference();
    SpatialReference oLatLog = new SpatialReference();

    oUTM.SetProjCS("UTM 44/ WGS84");
    oUTM.SetWellKnownGeogCS("WGS84");
    oUTM.SetUTM(44, 1);

    oLatLog = oUTM.CloneGeogCS();

    double[] arr = new double[2];
    arr[0]=10;
    arr[1]=10;

    double x = arr[0] , y = arr[1];

    CoordinateTransformation transform = new CoordinateTransformation(oUTM,oLatLog);

    transform.TransformPoint(arr);

    System.out.println("Before:"+x+" "+y+"\nAfter:"+arr[0]+" "+arr[1]);

但是当我在主函数中 运行 this 时,出现以下错误: 线程 "main" java.lang.UnsatisfiedLinkError 中的异常:

org.gdal.osr.osrJNI.new_SpatialReference__SWIG_1()J
    at org.gdal.osr.osrJNI.new_SpatialReference__SWIG_1(Native Method)
    at org.gdal.osr.SpatialReference.<init>(SpatialReference.java:117)
    at controller.CrsConverterGDAL.main(CrsConverterGDAL.java:8)

有谁知道如何解决这个问题? 谢谢,

我尝试执行您的源代码,但出现错误

Native library load failed. java.lang.UnsatisfiedLinkError: no osrjni in java.library.path

因此仅在您的项目构建路径中添加 gdal.jar 不足以执行您的程序。有一些外部本机库依赖项。

看看这个 link,https://trac.osgeo.org/gdal/ticket/3598。这里提到,

The gdaljni.dll, ogrjni.dll, gdalconstjni.dll and osrjni.dll as well as gdal17.dll and other dependant libraries must be in your path.

并且为了为 windows OS 生成这些 dll 并将它们包含在构建路径中,这里提到了步骤,https://trac.osgeo.org/gdal/wiki/GdalOgrInJavaBuildInstructions

我没有尝试过上面提到的步骤 link,但它们看起来很简单。但是,如果您遇到一些问题,请告诉我们,我们会尽力而为。

希望这对您有所帮助。