一、什么是gdal
gdal 中文版官网文档地址: GDAL — GDAL 文档
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,提供了一系列用于读取、写入和处理各种地理空间数据格式的功能。它是一个跨平台的库,可以在多种操作系统上使用,包括 Windows、Linux 和 macOS。
GDAL 库的一些主要功能和特性如下:
- 地理空间数据格式支持: GDAL 支持多种常见的地理空间数据格式,包括栅格数据(如 GeoTIFF、JPEG2000、HDF、NetCDF)、矢量数据(如 Shapefile、GeoJSON、KML)和栅格矢量数据集(如 GeoPackage)等。
- 数据转换和处理: GDAL 提供了一系列功能强大的工具和函数,用于数据转换、重投影、裁剪、合并、分割和统计等操作,使得用户能够灵活地处理和分析地理空间数据。
- 数据读取和写入: GDAL 提供了统一的 API,用于读取和写入各种地理空间数据格式,使得用户可以方便地将数据加载到内存中进行处理,或者将处理结果写入到文件中保存。
- 投影和坐标系支持: GDAL 支持各种常见的地理空间投影和坐标系,包括经纬度坐标系、投影坐标系、地心地固坐标系等,并提供了一系列函数用于投影转换和坐标系转换。
- Python 接口: GDAL 提供了 Python 接口,允许用户使用 Python 编程语言调用 GDAL 库中的函数和工具,从而进行地理空间数据处理和分析。
- 跨平台性: GDAL 是一个跨平台的库,可以在 Windows、Linux、macOS 等多种操作系统上使用,并且支持多种编程语言,包括 C/C++、Python、Java、JavaScript 等。
- GDAL 是地理信息系统(GIS)领域中最重要和最常用的开源库之一,被广泛应用于地图制图、遥感影像处理、空间分析和地理空间数据可视化等领域。
二、Windows 环境下安装GDAL
Windows安装包下载地址:download_gdal_Windows
1、选择下载gdal版本。
点击左侧目录树中的 "Older Release" ,根据需求选择gdal版本进行下载。
2、拷贝 " *.dll " 文件。
下载好后,将安装包解压到指定文件夹下(保证不会被移动或删除),打开下载的压缩包,打开到release-1928-x64-gdal-3-3-0-mapserver-7-6-3\bin目录下,把 bin 目录下的所有 " *.dll " 文件复制到自己所对应的 java jdk 的 bin 目录下(注意:64位就要对应64位的jdk),复制到 jdk bin过程中有重复的,就选择跳过就好
同样把release-1928-x64-gdal-3-3-0-mapserver-7-6-3\bin\gdal\java目录下的
"gdalalljni.dll" 文件复制到 Java jdk 的 bin 里面
3、配置环境变量
打开“设置”->“系统”->“系统信息”->“高级系统设置”->"环境变量",配置环境变量。
配置 "GDAL_HOME" 变量,配置到所下载的 gdal 目录下
配置 "PROJ_LIB" 变量,配置到所下载的 gdal 目录下的 "\bin\proj7\share" 下。
配置path的变量,在path中新增 两个变量
"%GDAL_HOME%\bin","%GDAL_HOME%\bin\gdal-data" 。
注意:设置完 gdal 这几个环境变量后,重启电脑,否则可能不会生效
4、gdal 使用
在spring boot 项目中 添加如下依赖:
<dependency>
<groupId>org.gdal</groupId>
<artifactId>gdal</artifactId>
<version>3.3.0</version>
</dependency>
三、Linux 环境下安装GDAL
Linux 安装包下载地址:download_gdal_Linux
将所需要的安装包拷贝到 指定文件夹下(本人使用文件夹为:/usr/local/gdaljai)。
1、安装 gcc g++
检查版本gcc -v(使用默认版本即可)
gcc -v
显示以下内容则表明gcc 已安装
如果没有gcc,可使用yum安装最新版本
yum -y install gcc automake autoconf libtool make
检查版本 g++ -v(使用默认版本即可)
g++ -v
显示以下内容则表明g++ 已安装成功
如果没有g++,可使用yum安装最新版本
yum install gcc-c++ libstdc++-devel
2、安装Ant、pcre、swig、geos
2.1 安装Ant
# 进入安装包目录下
cd /usr/local/gdaljai
# 解压
tar -zxvf apache-ant-1.9.16-bin.tar.gz
# 改变权限
chmod 777 apache-ant-1.9.16
# 修改系统环境变量,在文件的最后加上如下两行代码
vim /etc/profile
export ANT_HOME=/usr/local/gdaljai/apache-ant-1.9.16
export PATH=$PATH:$ANT_HOME/bin
# 使环境变量生效
source /etc/profile
# 测试ant是否生效(如果正常显示版本信息,则证明Ant安装成功)
ant -version
2.2 安装pcre
# 进入安装包目录
cd /usr/local/gdaljai
# 解压
tar -zxvf pcre-8.41.tar.gz
cd pcre-8.41
# 编译
./configure
# 安装
make && make install
2.3 安装swig
cd /usr/local/gdaljai
# 解压
tar -zxvf swig-3.0.12.tar.gz
cd swig-3.0.12
# 编译
./configure
# 安装
make && make install
# 查看版本信息
swig -version
2.4 安装geos
cd /usr/local/gdaljai
# 解压
tar -xjf geos-3.6.3.tar.bz2
cd geos-3.6.3
# 编译
./configure
# 安装
make && make install
3、安装 SFCGAL
(SFCGAL-1.3.0.tar.gz),需要以下依赖环境:
3.1 安装cmake、boost、boost-devel
yum install cmake
yum install boost
yum install boost-devel
3.2 安装 gmp
# 下载gmp
wget https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2
# 解压
tar -jxvf gmp-6.1.2.tar.bz2
# 进入安装包
cd gmp-6.1.2
# 编译
./configure --enable-cxx
# 安装
make
make check
make install
3.3 安装mpfr
# 下载
wget https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.bz2
# 解压
tar -jxvf mpfr-4.0.2.tar.bz2
cd mpfr-4.0.2
# 编译
./configure
# 安装
make
make check
make install
3.4 安装cgal
wget https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.7/cgal-4.7.tar.gz
tar -xzvf CGAL-4.7.tar.gz
cd CGAL-4.7
cmake .
make
make install
3.5 安装SFCGAL
wget https://github.com/Oslandia/SFCGAL/archive/v1.3.0.tar.gz -O SFCGAL-1.3.0.tar.gz
tar -xzvf SFCGAL-1.3.0.tar.gz
cd SFCGAL-1.3.0/
cmake .
make
make install
4、安装 SQLite3
检查SQLite3版本。(SQLite3如果满足版本需求可不安装,大于3.11即可)
安装SQLite3。
安装好的sqlite3默认可执行文件在/usr/local/bin/sqlite3 ;
默认库文件在/usr/local/lib;
默认配置文件在/usr/local/etc;
默认头文件在/usr/local/include;
官网 SQLite Download Page 下载 sqlite-autoconf-3400000.tar.gz 。
# 解压sqlite3
tar -zxvf sqlite-autoconf-3400000.tar.gz
# 进入sqlite3目录
cd sqlite-autoconf-3400000/
# 编辑
vim sqlite3.c
# 在以下内容后 新增 #define SQLITE_ENABLE_COLUMN_METADATA 1
#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
#define SQLITE_ENABLE_COLUMN_METADATA 1
# 配置sqlite3
./configure
# 安装编译sqlite3
make && make install
# 配置sqlite的环境变量
vim /etc/profile
# 配置地址
# export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
# export LD_RUN_PATH=/usr/local/lib
# 配置生效
source /etc/profile
# 查看sqlite版本信息
sqlite3 --version
5、安装PROJ6
# 进入安装包目录下
cd /usr/local/gdaljai
# 解压
tar -zxvf proj-6.1.0.tar.gz
# 进入安装包目录
cd proj-6.1.0
# 编译(这步可能报错,在满足版本的需求前提下,如果报错内容和下文一致,可参考解决)
./configure
# 安装
make && make install
安装proj6可能出现的问题 checking for SQLITE3... configure: error: Package requirements (sqlite3 >= 3.7) were not met:
解决办法:
yum install sqlite-devel
6、安装gdal
6.1 设置动态链接库
让gdal能够找到proj及geos的所在位置。共享文件默认安装在/usr/local/lib位置下,因此可执行如下命令进行配置。
cd /etc/ld.so.conf.d/
touch local.conf
echo “/usr/local/lib” > local.conf
6.2 安装gdal
cd /usr/local/gdaljai
# 解压
tar -zxvf gdal-3.3.0.tar.gz
cd gdal-3.3.0/
# 编译安装 !!!提示:该过程比较耗时,请耐心等待
./configure --with-static-proj4=/usr/local --with-java=$JAVA_HOME
# 编译安装 !!!提示:该过程比较耗时,请耐心等待
make && make install
# 查看版本信息
gdalinfo --version
查询Java jdk安装位置
echo $JAVA_HOME
修改java版配置文件
cd swig/java/
vim java.opt
设置JAVA_HOME=$JAVA_HOME为JDK安装目录
最后执行编译安装
make && make install
执行完成上述命令,会在"/usr/local/gdaljai/gdal-3.3.0/swig/java"目录下生成gdal依赖包。
6.3 配置 gdal 依赖包
- 把gdal根目录/swig/java中生成的gdal.jar文件复制到$JAVA_HOME/jre/lib/ext下
- 把.so、.lo、.o、.la、*.a复制到自己方便的文件夹下,一般是$JAVA_HOME/jre/lib/amd64/server
- 在/etc/profile中添加:export LD_LIBRARY_PATH=.:$JAVA_HOME/jre/lib/amd64/server
- 文件生效:source /etc/profile
7、可能会遇到的问题
1、
ogr_sfcgal.h:34:34: 致命错误:SFCGAL/capi/sfcgal_c.h:没有那个文件或目录
#include <SFCGAL/capi/sfcgal_c.h>
^
编译中断。
make[1]: *** [ogrgeometryfactory.lo] 错误 1
make[1]: 离开目录“/usr/local/gdaljai/gdal-3.3.0/ogr”
make: *** [ogr-target] 错误 2
解决办法:
需要安装SFCGAL(SFCGAL-1.3.0.tar.gz)
2、
/usr/local/gdaljai/gdal-3.3.0/.libs/libgdal.so: undefined reference to `sqlite3_column_origin_name'
/usr/local/gdaljai/gdal-3.3.0/.libs/libgdal.so: undefined reference to `sqlite3_column_table_name'
collect2: error: ld returned 1 exit status
make[1]: *** [gdalinfo] 错误 1
make[1]: 离开目录“/usr/local/gdaljai/gdal-3.3.0/apps”
make: *** [apps-target] 错误 2
解决方法:
# 进入sqlite安装目录
cd /usr/local/gdaljai/sqlite-autoconf-3400000
vim sqlite3.c
# 在以下内容后 新增 #define SQLITE_ENABLE_COLUMN_METADATA 1
#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
#define SQLITE_ENABLE_COLUMN_METADATA 1
# 清除编译配置 重新进行sqlite的编译配置安装
make clean
./configure
make && make install
# 进入gdal安装目录 清除编译配置 重新编译安装
cd /usr/local/gdaljai/gdal-3.3.0
make clean
./configure --with-static-proj4=/usr/local --with-java=$JAVA_HOME
make && make install
3、
解决办法:
将以下三个文件拷贝到 /usr/local/lib/ 目录下
-- Up-to-date: /usr/local/lib64/libSFCGAL.so.1.3.0
-- Up-to-date: /usr/local/lib64/libSFCGAL.so.1
-- Up-to-date: /usr/local/lib64/libSFCGAL.so
参考链接:
linux机器搭建java版gdal环境_checking for sqlite3... configure: error: package -CSDN博客
Linux下安装GDAL(含docker部分)_linux安装gdal-CSDN博客
Linux(CentOS)编译安装GDAL3.0.4+Postgresql 12.2+Postgis-3.0.1_postgis 下载 linux 安装tar,gz-CSDN博客