首页 > 基础资料 博客日记

Ubuntu系统中配置GDAL(JAVA)的过程及所遇到的坑

2024-08-13 16:00:06基础资料围观296

本篇文章分享Ubuntu系统中配置GDAL(JAVA)的过程及所遇到的坑,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识

项目背景:利用JAVA的GDAL库把海洋环境数据(数据格式为NC)转成TIF,并在GIS服务器中进行发布。gdal部署的服务器为ubuntu22.04。

一、安装ANT

1、建立安装目录,安装gdal所有依赖文件全部安装到一个文件夹下

adminljj@adminljj-virtual-machine:~$ cd /usr/local/
adminljj@adminljj-virtual-machine:/usr/local$ sudo mkdir gdaldp

2、执行以下命令,授予文件移动复制的权限,将所有文件压缩包移动到创建的文件夹下

adminljj@adminljj-virtual-machine:~$ sudo nautilus 
[sudo] adminljj 的密码:

3、将ANT压缩包进行解压

adminljj@adminljj-virtual-machine:/usr/local$ sudo tar -zxvf apache-ant-1.9.16-bin.tar.gz

4、修改系统环境变量,打开profile文件,并在文末添加下面两句话

adminljj@adminljj-virtual-machine:/usr/local$ sudo vim /etc/profile
添加内容:
export ANT_HOME=/usr/local/gdaljai/apache-ant-1.9.16
export PATH=$PATH:$ANT_HOME/bin

5、更新环境变量,使文件生效

adminljj@adminljj-virtual-machine:/usr/local$ source  /etc/profile

6、查看ant版本信息,确保ant的正确安装

adminljj@adminljj-virtual-machine:/usr/local$ ant -version
Apache Ant(TM) version 1.9.16 compiled on July 10 2021

二、安装prce

1、进入建立的文件夹下

adminljj@adminljj-virtual-machine:/usr/local$ cd gdaldp/

2、对pcre压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo tar -zxvf pcre-8.41.tar.gz
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd pcre-8.41/

3、编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd pcre-8.41/sudo ./configure
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd pcre-8.41/sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd pcre-8.41/sudo make install

4、查看pcre版本信息,确保pcre的正确安装

adminljj@adminljj-virtual-machine:/usr/local$ pcre-config --version
8.41

三、安装swig

1、对swig压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo tar -zxvf swig-3.0.12.tar.gz
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd swig-3.0.12/

2、编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/swig-3.0.12$ sudo ./configure
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/swig-3.0.12$ sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/swig-3.0.12$ sudo make install

3、查看swig版本信息,确保swig的正确安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/swig-3.0.12$ swig -version

SWIG Version 3.0.12

Compiled with g++ [x86_64-pc-linux-gnu]

Configured options: +pcre

四、安装sqlite3

1、对sqlite压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo unzip sqlite-src-3310100.zip
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd sqlite-src-3310100/

2、编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/sqlite-src-3310100$ sudo ./configure
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/sqlite-src-3310100$ sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/sqlite-src-3310100$ sudo make install

3、查看sqlite版本信息,确保sqlite的正确安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sqlite3 -version
3.31.1

五、安装proj6

1、对proj压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo tar -zxvf  proj-6.3.1.tar.gz
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd proj-6.3.1/

2、编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo ./configure
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo make install

3、查看proj版本信息,确保proj的正确安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ proj
Rel. 6.3.1, February 10th, 2020

4、坑:注意

这里要注意安装的proj的版本,笔者这里本来安装proj-6.1.0.tar.gz这个版本,但是后面在idea利用gdal将海洋环境数据(数据格式为NC)转成tif时,会报如下错误,其原因在于proj的安装版本不对,后面重新卸载再继续安装proj-6.3.1版本,成功进行数据格式的转换。

ERROR 1: PROJ: proj_create_from_database: cannot build geodeticCRS 4326: 
SQLite error on SELECT name, ellipsoid_auth_name, ellipsoid_code, 
prime_meridian_auth_name, prime_meridian_code, area_of_use_auth_name, 
area_of_use_code, publication_date, deprecated FROM geodetic_datum WHERE 
auth_name = ? AND code = ?: no such column: publication_date

六、安装geos

1、对geos压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo tar -xjf geos-3.6.3.tar.bz2
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd geos-3.6.3/

2、编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/geos-3.6.3$ sudo ./configure
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/geos-3.6.3$ sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/geos-3.6.3$ sudo make install

3、查看geos版本信息,确保geos的正确安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/geos-3.6.3$ geos-config --version
3.6.3

七、设置动态链接库

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/geos-3.6.3$ cd /etc/ld.so.conf.d/
adminljj@adminljj-virtual-machine:/etc/ld.so.conf.d$ sudo touch local.conf
adminljj@adminljj-virtual-machine:/etc/ld.so.conf.d$ sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf"
adminljj@adminljj-virtual-machine:/etc/ld.so.conf.d$ sudo ldconfig

八、安装GDAL

1、进入第一步创建的文件夹下

adminljj@adminljj-virtual-machine:/etc/ld.so.conf.d$ cd /usr/local/gdaldp/

2、对gdal压缩包进行解压,并进入其文件夹下

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo tar -zxvf gdal-3.0.1.tar.gz
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/

3、对gdal编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/sudo ./configure --with-static-proj4=/usr/local --with-java=$JAVA_HOME
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/sudo make install

4、查看jdk的安装位置

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ sudo echo  $JAVA_HOME
/usr/local/java/jdk1.8.0_161

5、修改java的配置文件

adminljj@adminljj-virtual-machine:/usr/local/gdaldp/gdal-3.0.1/swig/java$
adminljj@adminljj-virtual-machine:/usr/local/gdaldp/gdal-3.0.1/swig/java$ sudo vim java.opt

将图片中第四行换成自己Ubuntu系统中jdk的安装目录。

6、最后再次进行编译安装

adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/sudo make
adminljj@adminljj-virtual-machine:/usr/local/gdaldp$ cd gdal-3.0.1/sudo make install

7、安装gdal中所遇到的bug

①下图中的错误是由于r2000.cpp文件头缺失所造成,找到r2000.cpp文件,在命令行中打开,添加如下两行代码

adminljj@adminljj-virtual-machine:/usr/local/gdaljai/gdal-3.0.1$ cd ogr/
adminljj@adminljj-virtual-machine:/usr/local/gdaljai/gdal-3.0.1/ogr$ cd ogrsf_frmts/cad/libopencad/dwg/
adminljj@adminljj-virtual-machine:/usr/local/gdaljai/gdal-3.0.1/ogr/ogrsf_frmts/cad/libopencad/dwg$ sudo vim r2000.cpp
在文件头添加代码如下:
#include <stdexcept>
#include <limits>

错误图:

②错误二:

make[1]: *** [GNUmakefile:82:gdalinfo]

错误 1 make[1]: 离开目录“/usr/local/gdaljai/gdal-3.0.1/apps” make: *** [GNUmakefile:112:apps-target]

此处错误是由GNUmakefile文件错误引起的,可以卸载已安装的gdal,重新安装,或者换成其他版本的gdal再进行安装。

③错误三:

/bin/bash /usr/local/gdaljai/gdal-3.0.1/libtool --mode=link --silent g++  gdalinfo_bin.lo  /usr/local/gdaljai/gdal-3.0.1/libgdal.la  -o gdalinfo /usr/bin/ld: /usr/local/gdaljai/gdal-3.0.1/.libs/libgdal.so: undefined reference to `sqlite3_column_origin_name' /usr/bin/ld: /usr/local/gdaljai/gdal-3.0.1/.libs/libgdal.so: undefined reference to `sqlite3_column_table_name'

此处报错主要是由于sqlite3未将sqlite3_column_origin_name和sqlite3_column_table_name的相关函数进行编译。

解决措施:

找到sqlite3的文件夹,打开sqlite3.c,添加相关内容

sqlite-src-3310100$ sudo vim sqlite3.c
#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
#define SQLITE_ENABLE_COLUMN_METADATA 1   //添加这一行

最后:不要忘了再次编译安装更新一下

九:配置GDAL依赖包,类似于在window系统中配置

1、进入gdal-3.0.1/swig/java中,查看安装后生成的文件,如下图所示:

 2、将文件夹下的gdal.jar复制到下面文件下(自己安装jdk的位置)

adminljj@adminljj-virtual-machine:/usr/local$ cd java/jdk1.8.0_161/jre/lib/ext/

3、将文件夹下的所有文件全部复制到下面文件下(自己安装jdk的位置)

adminljj@adminljj-virtual-machine:/usr/local$ cd java/jdk1.8.0_161/jre/lib/amd64/server/

总结:在Ubuntu系统中配置gdal,并将海洋环境数据转成tif,花了笔者四天左右时间,其中参考了网上大部分的相关内容,安装了多次,走了不少弯路,希望此片文章能够给大家一点帮助。

参考:

(1)linux机器搭建java版gdal环境_checking for sqlite3... configure: error: package -CSDN博客

(2)Linux系统编译安装GDAL库_configure: error: please install sqlite3 binary.-CSDN博客


文章来源:https://blog.csdn.net/m0_62498143/article/details/137610949
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云