在 Amazon Linux 2023 上安装 GDAL:全面技术指南
GDAL(Geospatial Data Abstraction Library) 是一个开源的栅格和矢量地理空间数据转换库,支持超过 200 种数据格式(如 GeoTIFF、Shapefile、CSV 等),被广泛应用于地理信息系统(GIS)、遥感数据处理、地图服务开发等领域。无论是开发者构建地理空间应用,还是数据科学家分析卫星影像,GDAL 都是不可或缺的工具。
Amazon Linux 2023 是 AWS 推出的新一代 Linux 发行版,基于 Fedora,优化了云环境下的性能、安全性和可维护性。本文将详细介绍在 Amazon Linux 2023 上安装 GDAL 的两种方法(包管理器安装和源代码编译),并涵盖环境配置、依赖处理和故障排除,帮助用户快速搭建稳定的地理空间数据处理环境。
目录#
1. 简介#
GDAL(Geospatial Data Abstraction Library) 是一个开源的栅格和矢量地理空间数据转换库,支持超过 200 种数据格式(如 GeoTIFF、Shapefile、CSV 等),被广泛应用于地理信息系统(GIS)、遥感数据处理、地图服务开发等领域。无论是开发者构建地理空间应用,还是数据科学家分析卫星影像,GDAL 都是不可或缺的工具。
Amazon Linux 2023 是 AWS 推出的新一代 Linux 发行版,基于 Fedora,优化了云环境下的性能、安全性和可维护性。本文将详细介绍在 Amazon Linux 2023 上安装 GDAL 的两种方法(包管理器安装和源代码编译),并涵盖环境配置、依赖处理和故障排除,帮助用户快速搭建稳定的地理空间数据处理环境。
2. 前提条件#
在开始安装前,请确保满足以下条件:
- Amazon Linux 2023 实例:已启动并运行 Amazon Linux 2023(可通过 AWS EC2 控制台创建,推荐至少 2GB 内存以确保编译效率)。
- SSH 访问权限:通过 SSH 客户端(如 PuTTY、Terminal)连接到实例,或使用 EC2 Instance Connect。
- 管理员权限:拥有
sudo权限,用于安装系统包和修改配置文件。 - 网络连接:实例需能访问互联网,以下载安装包和源代码(若使用私有网络,需配置 VPC 网关或 NAT 实例)。
准备工作:更新系统#
首先更新系统软件包至最新版本,确保依赖兼容性:
sudo dnf update -y说明:
dnf是 Amazon Linux 2023 的默认包管理器,替代了旧版的yum。
3. 安装方法#
GDAL 的安装有两种主流方式:通过 DNF 包管理器安装(简单快捷,适合大多数用户)和从源代码编译安装(可获取最新版本或自定义配置,适合高级用户)。
3.1 通过 DNF 包管理器安装(推荐)#
Amazon Linux 2023 的默认软件仓库已包含 GDAL 包,适合需要快速部署且对版本要求不苛刻的场景。
3.1.1 搜索 GDAL 可用包#
首先确认仓库中 GDAL 相关包的版本和名称:
dnf search gdal输出示例(版本可能因系统更新变化):
gdal.x86_64 : Geospatial Data Abstraction Library
gdal-devel.x86_64 : Development files for GDAL
gdal-libs.x86_64 : Shared libraries for GDAL
python3-gdal.x86_64 : Python 3 bindings for GDAL
3.1.2 安装核心包和依赖#
根据需求安装以下包:
gdal:GDAL 核心命令行工具(如gdalinfo、ogrinfo)。gdal-devel:开发文件(头文件、静态库),用于编译依赖 GDAL 的应用。python3-gdal:Python 3 绑定,支持在 Python 中调用 GDAL API(如import gdal)。
执行安装命令:
sudo dnf install -y gdal gdal-devel python3-gdal说明:
-y选项自动确认安装,无需手动输入y。
3.1.3 验证包安装路径#
安装完成后,可通过以下命令查看文件路径:
# 查看 GDAL 可执行文件位置
which gdalinfo # 输出:/usr/bin/gdalinfo
# 查看库文件位置
rpm -ql gdal-libs | grep libgdal.so # 输出:/usr/lib64/libgdal.so.323.2 从源代码编译安装(最新版本)#
若需使用 GDAL 最新特性(如 3.8+ 版本的 COG 优化、新数据格式支持),或需要自定义编译选项(如启用特定驱动),可从源代码编译安装。
3.2.1 安装编译依赖#
GDAL 依赖多个地理空间和系统库,需先安装编译工具和开发包:
sudo dnf install -y \
gcc gcc-c++ make cmake \
libcurl-devel proj-devel geos-devel \
openssl-devel zlib-devel libjpeg-turbo-devel \
libpng-devel libtiff-devel libwebp-devel \
sqlite-devel libxml2-devel hdf5-devel \
netcdf-devel python3-devel # Python 绑定依赖依赖说明:
proj-devel:PROJ 库(地理投影转换),GDAL 核心依赖。geos-devel:GEOS 库(空间几何运算),支持矢量数据处理。libcurl-devel:支持 HTTP/HTTPS 数据源(如读取云存储中的 GeoTIFF)。python3-devel:Python 开发文件,用于编译 Python 绑定。
3.2.2 下载 GDAL 源代码#
从 GDAL 官方下载页 获取最新稳定版源代码(以 3.8.4 为例,可替换为最新版本号):
# 下载源代码压缩包
wget https://download.osgeo.org/gdal/3.8.4/gdal-3.8.4.tar.gz
# 解压
tar -xvf gdal-3.8.4.tar.gz
cd gdal-3.8.43.2.3 配置编译选项#
运行 configure 脚本生成 Makefile,可通过 --help 查看所有选项。常用配置:
./configure \
--prefix=/usr/local \ # 安装路径(默认 /usr/local)
--with-proj=/usr \ # PROJ 库路径(Amazon Linux 2023 中默认 /usr)
--with-geos=/usr/bin/geos-config \ # GEOS 配置工具路径
--with-curl \ # 启用 curl 支持(HTTP/HTTPS)
--with-python \ # 启用 Python 绑定
--with-openjpeg \ # 支持 JPEG2000 格式
--with-libtiff # 支持 TIFF 格式提示:配置过程中若提示缺少依赖,需返回 3.2.1 步骤安装对应
*-devel包。
3.2.4 编译与安装#
编译源代码(使用多线程加速,-j$(nproc) 利用所有 CPU 核心):
make -j$(nproc) # 编译(耗时 5-15 分钟,取决于实例性能)
sudo make install # 安装到 /usr/local3.2.5 更新动态链接库缓存#
编译安装的库文件位于 /usr/local/lib64,需更新系统动态链接器缓存,否则可能提示“找不到共享库”:
# 创建库路径配置文件
sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/gdal.conf
# 更新缓存
sudo ldconfig3.2.6 安装 Python 绑定(可选)#
若在 configure 中启用了 --with-python,需单独编译 Python 绑定:
# 进入 Python 绑定目录
cd swig/python
# 编译并安装
python3 setup.py build
sudo python3 setup.py install验证 Python 绑定:安装后可通过
python3 -c "import gdal; print(gdal.__version__)"检查版本。
4. 安装验证#
无论通过哪种方法安装,均需验证 GDAL 是否正常工作。
4.1 验证命令行工具#
运行以下命令检查 GDAL 版本:
gdalinfo --version # 输出示例:GDAL 3.8.4, released 2024/01/04
ogrinfo --version # 输出示例:GDAL 3.8.4, released 2024/01/04测试数据读取功能(以内置示例数据为例):
# 查看 GDAL 支持的格式
gdalinfo --formats | head -5 # 列出前 5 种支持的格式
# 读取示例 Shapefile(若系统无数据,可下载测试文件)
wget https://github.com/OSGeo/gdal/raw/master/autotest/ogr/data/poly.shp
ogrinfo -so poly.shp poly # 输出图层信息(-so 简化输出)4.2 验证 Python 绑定(若安装)#
通过 Python 代码测试 GDAL 导入:
python3 -c "
import gdal
import ogr
print('GDAL 版本:', gdal.__version__)
print('OGR 版本:', ogr.__version__)
"预期输出:
GDAL 版本: 3.8.4
OGR 版本: 3.8.4
5. 配置环境变量#
GDAL 运行时依赖 GDAL_DATA 环境变量(指向投影、坐标系统等数据文件目录),若未正确配置,可能导致投影解析错误(如 ERROR 1: PROJ: proj_create_from_database: Cannot find proj.db)。
5.1 确定 GDAL_DATA 路径#
- DNF 安装:数据文件位于
/usr/share/gdal/[版本号],例如/usr/share/gdal/3.8.4。 - 源代码安装:数据文件位于
/usr/local/share/gdal。
可通过以下命令查找:
# DNF 安装
rpm -ql gdal-libs | grep gdal_data # 输出:/usr/share/gdal/3.8.4
# 源代码安装
find /usr/local -name gdal_data # 输出:/usr/local/share/gdal5.2 设置环境变量#
将 GDAL_DATA 添加到环境变量,并持久化到用户配置文件(如 ~/.bashrc):
# 假设 GDAL_DATA 路径为 /usr/local/share/gdal(源代码安装)
echo "export GDAL_DATA=/usr/local/share/gdal" >> ~/.bashrc
# 立即生效
source ~/.bashrc
# 验证
echo $GDAL_DATA # 输出:/usr/local/share/gdal6. 处理依赖关系#
GDAL 功能依赖于底层库(如 PROJ、GEOS),需确保这些库版本兼容:
6.1 检查依赖版本#
# 查看 PROJ 版本
proj --version # 输出:Rel. 9.2.1, January 1st, 2023
# 查看 GEOS 版本
geos-config --version # 输出:3.11.26.2 升级依赖库(可选)#
若需升级 PROJ/GEOS 到新版本,可通过源码编译(参考 GDAL 源码安装步骤),或启用 EPEL 仓库(Amazon Linux 2023 需手动配置 EPEL):
# 安装 EPEL 仓库(仅适用于需要更新依赖的场景)
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo dnf update -y proj geos7. 常见问题与故障排除#
7.1 “找不到 libgdal.so” 错误#
症状:运行 gdalinfo 提示 error while loading shared libraries: libgdal.so.32: cannot open shared object file。
原因:动态链接器未找到 GDAL 库文件。
解决:
# 源代码安装时更新缓存
sudo ldconfig
# 检查库路径是否在配置中
cat /etc/ld.so.conf.d/gdal.conf # 应包含 /usr/local/lib647.2 Python 导入 gdal 失败#
症状:python3 -c "import gdal" 提示 ModuleNotFoundError。
原因:Python 绑定未安装或路径未被识别。
解决:
- DNF 安装:确保
python3-gdal已安装:sudo dnf reinstall -y python3-gdal。 - 源代码安装:重新编译 Python 绑定:
cd gdal-3.8.4/swig/python sudo python3 setup.py install
7.3 “PROJ: Cannot find proj.db” 错误#
症状:运行 gdalinfo 提示投影数据库缺失。
原因:GDAL_DATA 未配置或路径错误。
解决:重新设置 GDAL_DATA 并验证:
export GDAL_DATA=/usr/local/share/gdal # 替换为实际路径
gdalinfo --version # 无错误则配置正确8. 总结#
本文详细介绍了在 Amazon Linux 2023 上安装 GDAL 的两种方法:
- DNF 包管理器:适合快速部署,无需手动处理依赖,推荐大多数用户使用。
- 源代码编译:适合需要最新版本或自定义配置的场景,需手动管理依赖和环境变量。
安装后,通过验证 gdalinfo 命令和 Python 绑定,确保 GDAL 正常工作,并配置 GDAL_DATA 环境变量避免投影错误。若遇到问题,可参考故障排除部分解决常见依赖或路径问题。
GDAL 作为地理空间数据处理的基石,结合 Amazon Linux 2023 的云环境优势,可高效支持遥感分析、地图服务、空间数据库等应用开发。如需进一步学习,可参考 GDAL 官方文档 或 OSGeo 教程。
欢迎在评论区分享安装经验或提问,如需深入探讨特定场景(如 Docker 容器化、AWS Lambda 部署),可留言告知!