在 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 核心命令行工具(如 gdalinfoogrinfo)。
  • 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.32

3.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.4

3.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/local

3.2.5 更新动态链接库缓存#

编译安装的库文件位于 /usr/local/lib64,需更新系统动态链接器缓存,否则可能提示“找不到共享库”:

# 创建库路径配置文件
sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/gdal.conf
 
# 更新缓存
sudo ldconfig

3.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/gdal

5.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/gdal

6. 处理依赖关系#

GDAL 功能依赖于底层库(如 PROJ、GEOS),需确保这些库版本兼容:

6.1 检查依赖版本#

# 查看 PROJ 版本
proj --version  # 输出:Rel. 9.2.1, January 1st, 2023
 
# 查看 GEOS 版本
geos-config --version  # 输出:3.11.2

6.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 geos

7. 常见问题与故障排除#

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/lib64

7.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 部署),可留言告知!