一、部署要求

java,ant,pcre和swig:其中pcre是swig所需的依赖项,因此必须先于swig安装。java、ant和swig都可以通过 -version查看。ava和ant的安装比较类似,将下载下来的压缩包解压好后,在/etc/profile文件中配置好JAVA_HOME、ANT_HOME以及CLASSPATH后即可记得对这三个变量进行export,并把前两个加入到PATH中。

gcc和g++ :这个如果没有去装一个就好了,可以通过命令gcc -v 和 g++ -v 来查看

SQLite3:PROJ需要的环境 下载地址: https://www.sqlite.org/download.html

PROJ:gdal需要的环境 下载地址:https://proj.org/download.html

GEOS:gdal需要的环境 下载地址:http://download.osgeo.org/geos/

注:gadl3.0以上需要proj6以上


二、安装

1、SQLite3:解压,配置 并编译安装 SQLite3:

powershell

tar -zxvf sqlite-autoconf-3330000.tar.gz

cd sqlite-autoconf-3330000/

./configure

make

make install

2、PROJ:解压、配置 并编译 PROJ:

tar -zxvf proj-6.3.0.tar.gz

cd proj-6.3.0/

./configure

make

make install

4、GEOS:解压、配置并编译安装GEOS:

tar -xvf geosXXX.tar.gz

cd ./geosXXX

./configure --prefix=/opt/geosXXX

make 

make install

提示:其中/opt/geosXXX为定义的安装位置


5、配置动态链接库

让gdal能够找到proj及geos的所在位置。共享文件默认安装在/usr/local/lib位置下:


cd /etc/ld.so.conf.d/


touch local.conf


echo "/usr/local/lib" > local.conf


最后可使用ldconfig -v来查看详细信息。

6、GDAL 解压、配置 并编译安装 GDAL:

因为是liunx系统,直接去官网下载二进制源文件 编译


官网:https://gdal.org/download.html

或者直接运行命令:


# wget -c -P /storage/software/gdal http://download.osgeo.org/gdal/3.3.2/gdal-3.3.2.tar.gz

1

解压、配置。编译


tar -zxvf gdal-3.2.0.tar.gz

cd gdal-3.2.0/

./configure

make

make install

不配置./configure编译路径 默认在/usr/local/lib下

修改配置文件


vi /etc/profile

1

新增:


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

1

刷新:


source /etc/profile

1

检测gdal是否编译成功


gdalinfo -version

1

7、GDAL编译java

编辑 vi gdal-3.2.0/swig/java/java.opt 配置 JAVA_HOME 路径:


#

# Java Stuff

#JAVA_HOME = "C:\Program Files\Java\jdk1.6.0_16"

#JAVA_HOME = /usr/lib/jvm/java-6-openjdk/

#JAVA_HOME = /usr/lib/jvm/java-7-openjdk-amd64/

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

JAVA_HOME = /usr/local/jdk1.8.0_261/

编译:


cd gdal-3.2.0/swig/java/

make

make install

make成功,在当前文件夹下生成了 gdal.jar 和 一堆 *.so 文件。


8、添加动态链接库

把/gdal/gdal-3.3.2/swig/java/下的.so文件拷贝到/usr/local/lib/下去:

执行:# cp /gdal/gdal-3.3.2/swig/java/*.so /usr/local/lib/

因为之前安装gdal的时候,配置的 /etc/profile中库指向的是/usr/local/lib


9、 gdal.jar打包到maven

gdal.jar拷贝到本地项目根目录下

然后在项目pom文件中引用:


      <dependency>

            <groupId>org.gdal</groupId>

            <artifactId>gdal</artifactId>

            <version>3.0.0</version>

            <scope>system</scope>

            <systemPath>${project.basedir}/.idea/libraries/gdal.jar</systemPath>

        </dependency>

搞定。


三、问题

1、编译gdal时,出现:


/gdal-3.1.1/.libs/libgdal.so: undefined reference to `sqlite3_column_origin_name'

/gdal-3.1.1/.libs/libgdal.so: undefined reference to `sqlite3_column_table_name'

解决办法:sqlite3需要配置一个宏:

cd ./sqlite-autoconf-3320300

找到./sqlite3.c文件,添加


#define SQLITE_ENABLE_COLUMN_METADATA 1

1

如下:


#define SQLITE_CORE 1

#define SQLITE_AMALGAMATION 1

#ifndef SQLITE_PRIVATE

# define SQLITE_PRIVATE static

#endif

#define SQLITE_ENABLE_COLUMN_METADATA 1


/************** Begin file ctime.c *******************************************/

然后再:


./configure

make

sudo make install 

2、编辑proj从报错

configure: error: Package requirements (sqlite3 >= 3.11) were not met:

是因为缺少sqlite3相关库,解决办法:


yum -y install sqlite-devel

1

3、make 编译gdal报错jpeg2000dataset.cpp:35:10: fatal error: jasper/jasper.h: No such file or directory

解决办法:


下载jasper:http://download.osgeo.org/gdal/jasper-1.900.1.uuid.tar.gz

安装:参考官网


安装:


 wget http://download.osgeo.org/gdal/jasper-1.900.1.uuid.tar.gz

 tar xvf jasper-1.900.1.uuid.tar.gz

 cd jasper-1.900.1.uuid

 ./configure

 make

 make install

等待编译完成,在bashrc文件中添加库链接:


vi ~/.bashrc

在最后添加如下:


export PATH=$PATH:/usr/local/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

保存应用:


 :wq

 source ~/.bashrc

再去重新make GDAL

原文链接:https://blog.csdn.net/qq_43921184/article/details/121765417