首页 > 基础资料 博客日记
Ubuntu系统中配置GDAL(JAVA)的过程及所遇到的坑
2024-08-13 16:00:06基础资料围观296次
项目背景:利用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博客
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: