GDAL:地理空间数据抽象库
项目描述
这个 Python 包和扩展是许多用于编程和操作GDAL地理空间数据抽象库的工具。实际上,它是两个库——用于处理地理空间栅格数据的 GDAL 和用于处理地理空间矢量数据的 OGR——但出于本文的目的,我们将整个包称为 GDAL 库。
GDAL 项目(主要是 Even Rouault)维护 SWIG 为 GDAL 和 OGR 生成的 Python 绑定。一般来说,这些类和方法大多与 GDAL 和 OGR C++ 类的类和方法相匹配。没有特定于 Python 的参考文档,但GDAL API 教程包含 Python 示例。
依赖项
libgdal(3.5.2 或更高版本)和头文件(gdal-devel)
numpy(1.0.0 或更高版本)和头文件(numpy-devel)(没有明确要求,但许多示例和实用程序没有它就无法工作)
安装
康达
GDAL 的构建和安装可能非常复杂,尤其是在 Windows 和 MacOS 上。为 conda 系统提供了预构建的二进制文件:
https://docs.conda.io/en/latest/
通过 conda-forge 项目:
一旦你安装了 Anaconda 或 Miniconda,你应该能够安装 GDAL:
conda install -c conda- forge gdal
Unix
GDAL Python 绑定支持 distutils 和 setuptools,并优先使用 setuptools。如果 setuptools 可以导入,默认情况下 setup 将使用它来构建一个 egg。如果无法导入 setuptools,将进行 GDAL 包的简单 distutils root 安装(并且没有 numpy 的依赖链)。
点子
GDAL 可以从 Python Package Index 安装:
$点安装GDAL
如果希望 pip 进行源代码构建,则必须安装 libgdal 及其开发头文件,因为您指定的平台和 Python 版本没有可用的轮子。
安装程序.py
setup.py 的大部分重要变量都由 setup.cfg 文件控制。在 setup.cfg 中,您可以修改指针以包含文件和库。可能需要修改的最重要的选项是 gdal_config 参数。如果你从一个包中安装了 GDAL,这个程序的位置很可能是 /usr/bin/gdal-config,但它可能在另一个地方,这取决于你的打包程序是如何安排的。
修改gdal-config的位置后,就可以用setup脚本编译安装了:
$ python setup.py build $ python setup.py install
如果你安装了 setuptools,你也可以生成一个 egg:
$ python setup.py bdist_egg
作为 GDAL 库源代码树的一部分进行构建
您还可以通过将 --with-python 指定为配置行的一部分来将 GDAL Python 绑定构建为源构建的一部分:
$ ./configure --with-python
使用典型的 make 和 make install 命令完成安装:
$ make $ make install
关于 setuptools 的说明
./configure 尝试检测您是否在给出它的 Python 二进制文件的树中安装了 setuptools(或在执行路径上检测到),并且在该实例中默认情况下它将使用 egg 构建。如果您需要使用仅 distutils 安装,则必须编辑 setup.py 以确保 HAVE_SETUPTOOLS 变量最终设置为 False 并继续执行典型的“python setup.py install”命令。
视窗
您将需要以下项目才能在 Windows 上完成 GDAL Python 绑定的安装:
GDAL Windows Binaries下载与您的环境最匹配的软件包。
如 README_EXE.txt 文件中所述,解压缩 GDAL 二进制文件后,您需要修改系统路径和变量。如果您不确定如何执行此操作,请阅读Microsoft 知识库文档
将安装目录的bin文件夹添加到你的系统PATH中,记得在添加到现有路径之前在它前面加上一个分号。
C:\gdalwin32-1.7\bin
使用安装中的数据文件夹创建新的用户或系统变量。
Name : GDAL_DATA Path : C:\gdalwin32-1.7\data
跳到使用部分来测试您的安装。请注意,可能需要重新启动。
痛饮
GDAL Python 包是使用SWIG构建的。 支持生成包装器代码的SWIG的最早版本是 1.3.40。可用绑定可能会使用 1.3.40 之前的版本构建,但没有针对低于该版本的开发工作。您不必在开发树中运行 SWIG 来生成绑定代码,因为它通常包含在源代码中。但是,如果您确实需要重新生成,您可以使用 ./swig/python 目录中的以下 make 命令执行此操作:
$ make generate
为确保重新生成所有绑定,您可以在生成命令之前通过发出以下命令清除绑定代码:
$ make veryclean
用法
进口
GDAL Python 绑定包含五个主要模块:
>>> from osgeo import gdal >>> from osgeo import ogr >>> from osgeo import osr >>> from osgeo import gdal_array >>> from osgeo import gdalconst
此外,还包括五个兼容性模块,但会提供通知以声明它们已被弃用并将消失。如果您使用的是 GDAL 1.7 绑定,您应该更新您的导入以利用上述用法,但以下内容将在 GDAL 3.1 之前有效。
>>> import gdal >>> import ogr >>> import osr >>> import gdalnumeric >>> import gdalconst
如果您之前有导入全局模块的代码并且仍然需要支持旧的导入,那么一个简单的尝试...除了导入可以消除弃用警告并保持名称与以前基本相同:
>>> try: ... from osgeo import gdal ... except ImportError: ... import gdal
文档字符串
目前,只有 OGR 模块具有从 C/C++ API doxygen 材料生成的文档字符串。一些参数和类型可能与您从 Python 中看到的不完全匹配,但它们应该足以让您继续前进。GDAL 和 OSR 的文档字符串计划在未来发布。
麻木的
在其他语言绑定中找不到的 GDAL Python 绑定的一个高级功能是与 Python 数值数组工具的集成。gdal.Dataset.ReadAsArray() 方法可用于将栅格数据读取为数值数组,可与 Python 数值数组功能一起使用。
例子
在val_repl.py脚本中可以找到 GDAL/numpy 集成的一个示例。
性能说明
ReadAsArray 期望制作栅格波段或数据集的完整副本,除非数据作为函数调用的一部分被显式子集化。对于大数据,这种方法预计会占用大量内存。