GDAL: 地理空间数据抽象库
项目描述
这个Python包和扩展是一系列用于编程和操作GDAL地理空间数据抽象库的工具。
GDAL项目维护由SWIG生成的GDAL/OGR的Python绑定。一般来说,类和方法与GDAL和OGR的C++类基本一致。没有特定的Python参考文档,但https://gdal.org/api/python_bindings.html#tutorials中包含了Python示例。
依赖项
libgdal(3.9.2或更高版本)和头文件(gdal-devel)
numpy(1.0.0或更高版本)和头文件(numpy-devel)(虽然不是明确要求,但许多示例和实用程序没有它将无法工作)
安装
Conda
构建和安装GDAL可能相当复杂,尤其是在Windows和MacOS上。为conda系统提供了预构建的二进制文件
https://docs.conda.org.cn/en/latest/
由conda-forge项目提供
安装Anaconda或Miniconda后,您应该可以使用以下命令安装GDAL
conda install -c conda-forge gdal
pip
由于GDAL及其组件的性质复杂,不同的绑定可能需要额外的包和安装步骤。可以从Python包索引安装GDAL
pip install gdal
为了启用基于numpy的栅格支持,除了libgdal及其开发头文件外,还必须安装Python包numpy、setuptools和wheel。为了安装Python依赖项并构建基于numpy的栅格支持
pip install numpy>1.0.0 wheel setuptools>=67 pip install gdal[numpy]=="$(gdal-config --version).*"
用户可以使用以下方法验证是否已安装基于numpy的栅格支持
python3 -c 'from osgeo import gdal_array'
如果此命令引发ImportError,则基于numpy的栅格支持未正确安装
Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/local/lib/python3.12/dist-packages/osgeo/gdal_array.py", line 10, in <module> from . import _gdal_array ImportError: cannot import name '_gdal_array' from 'osgeo' (/usr/local/lib/python3.12/dist-packages/osgeo/__init__.py)
这通常是由于pip重复使用缓存的GDAL安装引起的。请确保已安装必要的依赖项,然后运行以下命令以强制进行干净的构建
pip install --no-cache --force-reinstall gdal[numpy]=="$(gdal-config --version).*"
GDAL >= 3.9,Python >= 3.9和NumPy 2.0的潜在问题
GDAL 3.9的pyproject.toml文件需要numpy >= 2.0.0rc1(对于Python >= 3.9),以便在构建时构建与NumPy 1和NumPy 2兼容的绑定。如果由于某种原因无法安装numpy >= 2.0.0rc1构建依赖项,则可以手动安装构建要求,并使用pip install命令的--no-build-isolation标志调用。
pip install numpy==<required_version> wheel setuptools>=67 pip install gdal[numpy]=="$(gdal-config --version).*" --no-build-isolation
作为GDAL库源树的构建部分
从源代码构建GDAL时,默认会生成Python绑定。有关详细信息,请参阅Python绑定选项
GDAL Python包使用SWIG构建。当前支持的版本是SWIG >= 4
使用方法
导入
GDAL Python绑定中包含了GDAL的五个主要模块。
>>> from osgeo import gdal >>> from osgeo import ogr >>> from osgeo import osr >>> from osgeo import gdal_array >>> from osgeo import gdalconst
API
Numpy
GDAL Python绑定中的一项高级功能是与其他语言绑定中找不到的与Python数值数组设施的集成。可以使用gdal.Dataset.ReadAsArray()方法将栅格数据作为数值数组读取,以便与Python数值数组功能一起使用。
教程
注意事项
尽管GDAL和OGR的Python绑定在底层C++代码周围提供了一个相当“Pythonic”的包装,但Python绑定与典型的Python库在几个方面有所不同。这些差异可能会让Python程序员感到意外并导致意外结果。这些差异是由于在继续维护向后兼容性的同时开发大型、长期存在的库而导致的复杂性。它们正在逐步解决,但在它们全部消失之前,请参阅以下列表https://gdal.org/api/python_gotchas.html
示例
其他样例可以在Python GitHub 样例目录中找到,其中包含一些描述,详见https://gdal.org/api/python_bindings.html#examples。
一些GDAL 工具是用 Python 实现的,可以作为有用的示例。
大多数 GDAL 回归测试是用 Python 编写的。它们可以在https://github.com/OSGeo/gdal/tree/master/autotest找到。
GDAL/numpy 集成的示例可以在val_repl.py脚本中找到。
项目详情
gdal-3.9.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | cf9c1add09ce152975c94d48a1a89dd300c292e0761fd3d22a8071a98852e129 |
|
MD5 | 9fd86f700670b4413a26d92b0aea543e |
|
BLAKE2b-256 | bd1085c41cc7c520be9cf755f5862e8c6c8b0c91c8987cb1c706f7092f9893ee |