Java使用GDAL

    在使用Java處理圖像時使用Gdal,爲了保持軟件在Windows/Linux的通用性,本文着重介紹Windows和Linux環境的gdal配置,爲了簡便期間,使用gdal-2.2.3。

一、Windows

    Windows下gdal配置比較簡單,下載release-1600-x64-gdal-2-2-3-mapserver-7-0-7.zip,解壓縮。將“……\release-1600-x64-gdal-2-2-3-mapserver-7-0-7\bin”添加到環境變量path中。進入“……\release-1600-x64-gdal-2-2-3-mapserver-7-0-7\bin\gdal\java”目錄,包含gdal.jar、gdalconstjni.dll、gdaljni.dll、ogrjni.dll、osrjni.dll。將gdal.jar拷貝到java工程的lib中,將gdalconstjni.dll、gdaljni.dll、ogrjni.dll、osrjni.dll拷貝到java.library.path路徑中,此處選爲jdk安裝路徑C:\Program Files\Java\jdk1.8.0_121\bin和C:\Program Files\Java\jdk1.8.0_121\jre\bin目錄下,經測試,java調用gdal正常運行。

二、Linux

    Linux配置gdal比較繁瑣, 在進行編譯前,首先查看系統是否有gcc-c++、gcc、swig等基礎環境。下載gdal-2.2.3.tar.gz,編譯gdal,之後編譯gdal-java。大體流程如下,中間根據提示可能安裝若干工具:

1、編譯proj

     在編譯gdal之前,需要 proj4以提供投影支持,因此先安裝

[root@bogon gdal]# tar -zxvf proj-4.9.3.tar.gz
[root@bogon gdal]# cd proj-4.9.3/
[root@bogon proj-4.9.3]# ./configure
[root@bogon proj-4.9.3]# make
[root@bogon proj-4.9.3]# make install

2、編譯geos

[root@bogon gdal]# tar -jxvf geos-3.6.2.tar.bz2
[root@bogon gdal]# cd geos-3.6.2/
[root@bogon geos-3.6.2]# ./configure
[root@bogon geos-3.6.2]# make
[root@bogon geos-3.6.2]# make install

3、編譯gdal

[root@bogon gdal]# tar -zxvf gdal-2.2.3.tar.gz 
[root@bogon gdal]# cd gdal-2.2.3
[root@bogon gdal-2.2.3]# ./configure
[root@bogon gdal-2.2.3]# make
[root@bogon gdal-2.2.3]# make install

若make遇到以下錯誤,請參照本人另一篇博客。


ogr_sfcgal.h:34:34:致命錯誤:SFCGAL/capi/sfcgal_c/h:沒有那個文件或目錄
#include<SFCGAL/capi/sfcgal_c.h>

ogr_sfcgal.h:34:34:fatal error:SFCGAL/capi/sfcgal_c/h:No such file or directory

#include<SFCGAL/capi/sfcgal_c.h>


經過一段時間,編譯完成後,編輯swig/java/java.opt,配置JAVA_HOME 路徑。

#
# Java Stuff
JAVA_HOME = /usr/java/jdk1.8.0_151
JAVADOC=$(JAVA_HOME)/bin/javadoc
JAVAC=$(JAVA_HOME)/bin/javac
JAVA=$(JAVA_HOME)/bin/java
JAR=$(JAVA_HOME)/bin/jar
JAVA_INCLUDE=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux

 編譯gdal的java庫:

[root@bogon gdal-2.2.3]#cd swig/java
[root@bogon java]# make

       編譯後再當前目錄生成gdal.jar、ibgdalconstjni.so、libgdaljni.so、libgnmjni.so、libogrjni.so、libosrjni.so。在Linux中使用Linux版的gdal.jar,將ibgdalconstjni.so、libgdaljni.so、libgnmjni.so、libogrjni.so、libosrjni.so拷貝到java.library.path路徑中,此處放在/usr/lib64目錄下,經測試,java調用gdal正常運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章