Skip to main content

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 项目:

https://conda-forge.org/

一旦你安装了 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 绑定的安装:

如 README_EXE.txt 文件中所述,解压缩 GDAL 二进制文件后,您需要修改系统路径和变量。如果您不确定如何执行此操作,请阅读Microsoft 知识库文档

  1. 将安装目录的bin文件夹添加到你的系统PATH中,记得在添加到现有路径之前在它前面加上一个分号。

    C:\gdalwin32-1.7\bin
  2. 使用安装中的数据文件夹创建新的用户或系统变量。

    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 期望制作栅格波段或数据集的完整副本,除非数据作为函数调用的一部分被显式子集化。对于大数据,这种方法预计会占用大量内存。

项目详情