2015-04-25 2 views
0

Я использую java-привязку gdal для проектирования набора координатных точек от UTM до lat/log с использованием класса CoordinateTransformation gdal. Я написал код следующим образом:Ошибка при использовании привязки gdal java

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]); 

Но когда я запускаю это в моей основной функции, я получаю следующее сообщение об ошибке: исключения в потоке «основной» 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) 

Кто-нибудь знает, как это можно исправить? Спасибо,

ответ

0

Я попробовал выполнение исходного кода, и я получил ошибку

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

Так просто добавить gdal.jar на своем пути сборки проекта не является достаточным для выполнения программы. Существуют некоторые внешние зависимые библиотеки.

Проверьте эту ссылку, 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.

И для того, чтобы генерировать эти DLL для ОС Windows и включить их в путь сборки, упоминаются здесь шаги, https://trac.osgeo.org/gdal/wiki/GdalOgrInJavaBuildInstructions

Я не пробовал шаги, указанные в приведенной выше ссылке, но они кажутся прямолинейными. Но если вы столкнетесь с некоторыми проблемами, сообщите нам, мы попробуем посмотреть.

Надеюсь, это поможет.

+0

Спасибо за ответ. :). Я исправил это, связав родные библиотеки. Я установил переменные GDAL_DATA и LD_LIBRARY_PATH в среду выполнения затмений. Я использую ubuntu, поэтому они отличались от того, что вы упомянули выше. Еще раз спасибо. :) – zelta

+0

спасибо за отзыв, я отредактирую ответ соответственно –