14.1. GDAL:栅格处理的瑞士军刀

14.1.1. GDAL的用途是什么?

地理空间数据抽象库(GDAL)是一个免费的数据库,致力于以栅格和矢量格式读写地理空间数据。 该项目由FrankWarmerdam于1998年发起,目前由开源地理空间基金会(OSGeo)维护。 该基金会旨在支持和构建开源地理空间软件,开发QGIS和GRASS GIS等众多应用程序。

GDAL在所有现代操作系统(类Unix操作系统、Windows)上运行。它支持32位和64位架构。 如今,已有近100个软件声称使用该组件。

14.1.2. 许可证

GDAL是一款免费开源软件(FOSS)。根据X11/MIT许可证的条款分发, 旨在无限制地赋予用户使用、复制、修改、合并、发布、分发、再许可和/或销售副本的权利。

由于某些模块(libpng、libjpeg、libtiff和libgeotif),GDAL 的一小部分条款略有不同。一些外部和可选库受到更严格的许可证, 因为它们通常与专有文件格式(增强压缩Wavelet“ECW”、多分辨率无缝图像数据库“MrSID”等)关联。

14.1.3. GDAL如何使用?

有几种解决方案使我们能够将GDAL 用于各种用途和技能。并非所有解决方案都提供相同的功能多样性,也不是相同的模块化。

GDAL API

GDAL通过其应用程序编程接口(API),可以从C++、Python、R等编程语言调用。 一组标准化的类和方法提供了对所有功能的访问。Web门户(请参阅图2.1)提供了一些使用API的示例: 打开和读取图像、搜索元数据等。

_images/image11_xs7.jpeg

图2.1. GDAL API教程

软件文档允许访问类和函数的描述。对于Python开发人员来说,还有指定网页(见图2.2)。

_images/image12_xh9.jpeg

图2.2. Python的GDAL 文档

GDAL实用程序

GDAL还提供通过终端在命令行中启动的实用程序(可执行文件和Python脚本)。 这些程序是为了满足用户的频繁需求而设计的,允许数据批处理。它们不需要编程技能。

每个实用程序都有可以通过终端或互联网访问的文档。它由三个主要部分组成:带有摘要的命令名、概要和描述。 为了正确理解如何阅读它,我们可以以图2.3中所示的 gdal_translate 命令为例。

_images/image13_x8s.png

图2.3. gdal_translate命令的概述

图2.3中的摘要显示了此实用程序的一般用途:“在不同格式之间切换栅格数据”。 在实践中,选择的使用扩大了可能治疗的范围。因此,该命令可以执行其他操作,例如裁剪、重新排序等。

概要,也称为“用法”,是最重要的部分。它提供命令语法和所有可能的参数:

  • gdal_translate : 命令从逻辑上以名称开头;

  • [option]: 在 gdal_translate 之后,可以添加一个参数来修改命令的工作方式。方括号[…]之间的参数是可选的。 在GDAL 中,每个参数都由一个短划线(-)引入,例如 -ot 可以修改图像编码:

    • 一个选项可以有一个或多个值,例如:

    1. [-stats] 不需要任何值;

    2. [-mask band] 要求指示波段索引;

    3. [-tr xres yres] 需要指示x(xres)和y(yres)的像素分辨率;

    4. [-ot {Byte/Int16/UInt16/…CFloat64}] 要求指示大括号之间的预定义列表中的值;

    • 后面跟着星号的选项可以调用多次,例如:i) [-b band]*;

  • 最后一个参数 src_datasetdst_dataset 不在括号之间,因此是强制性的。 它们指定输入(src_dataset) 和输出 (dst_dataset) 数据路径。

描述部分显示每个参数及其功能、默认值和GDAL 的兼容版本。文档通常以一些应用程序示例结束(见图2.4)。

image3image4

图2.4. gdal_translate 参数和应用示例描述

GDAL和其他软件

近100种软件使用GDAL ,其中一些软件(例如QGIS)提供了在后台启动命令的界面。 然而,开发人员限制了对各种选项的访问,主要是出于经济原因。

14.1.4. GDAL如何在QGIS中工作

GDAL库首先是QGIS的基本组件(软件依赖性)。它使我们能够正确管理不同的格式及其元数据。 当用户在QGIS中打开图像并查阅其属性时,他正在不知情地操作GDAL API的各种机制。

QGIS还提供对大多数GDAL 实用程序的访问权限,使用户能够处理、分析和修改栅格文件: 卫星图像、航空照片、数字地形模型等。这些工具可以通过两种方式调用, 要么使用默认集成在QGIS Raster菜单中的GdalTools扩展名,要么使用 ProcessingToolbox 。

优点和局限性

长期以来,GDAL 一直是一款面向习惯于命令行甚至编程的用户的工具。它与QGIS的集成促进了它通过专用接口的使用来启动 算法并与其他软件组件交互。例如,用户可以调用层面板中存在的数据并直接查看地图画布中的结果。虽然GdalTools扩展主要 是一个编辑器,用于一次在一张图像上启动一次性命令,但 Processing Toolbox 使您可以使用批处理、根据不同的库设计和 共享工作流(如有必要)。这两种工具还具有组织相似标题(投影、转化、提取、分析、杂项)的治疗的优势。然而,它们的共存也有一些缺点。

出于各种原因,GDalTools扩展和处理收件箱无法集成GDAL 中提供的所有实用程序(见表2.1)。 GDAL和QGIS的演变是同步的,软件开发人员认为没有必要为某些实用程序创建农业用户界面。 例如, gdalmovegdal_panshrief.py 等命令在QGIS中不可访问, 而 gdallocationinfogdal_calc.py 等其他命令只能从 Processing Toolbox 中访问。

最后,对于GDAL 实用程序,QGMS中可能有多个条目。 例如,三个GDalTools - Assign ProjectingTranslateClipper -调用单个命令: gdal_Translate 。此外,相同的处理(例如GdalTools和 Processing Toolbox 中都存在的“Polyonize”) 并不总是提供相同的收件箱选项。然而,GdalTools允许编辑命令行以手动添加缺失的选项。

GDAL 命令

  1. gdalinfo

  2. gdal_translate

  3. gdaladdo

  4. gdalwarp

  5. gdaltindex

  6. gdalbuildvrt

  7. gdal_contour

  8. gdaldem

  9. rgb2pct.py

  10. pct2rgb.py

  11. gdal_merge.py

  12. gdal2tiles.py*

  13. gdal_rasterize

  14. gdaltransform*

  15. nearblack

  16. gdal_retile.py*

  17. gdal_grid

  18. gdal_proximity.py

  19. gdal_polygonize.py

  20. gdal_sieve.py

  21. gdal_fillnodata.py

  22. gdallocationinfo

  23. gdalsrsinfo

  24. gdalmove.py*

  25. gdal_edit.py*

  26. gdal_calc.py

  27. gdal_pansharpen.py**

  28. gdal-config*

  29. gdalmanage*

  30. gdalcompare.py*

QGIS-GDAL Tools

  1. Heading

  2. Miscellaneous

  3. Projections

  4. Conversion

  5. Extraction

  6. Miscellaneous

  7. Projections

  8. Miscellaneous

  9. Miscellaneous

  10. Extraction

  11. Analysis

  12. Conversion

  13. Conversion

  14. Miscellaneous

  15. Conversion

  16. Analysis

  17. Analysis

  18. Analysis

  19. Conversion

  20. Analysis

  21. Analysis

  22. Projections

工具名称

  1. Information

  2. Assign projection

  3. Translate#. Clipper

  4. Build overviews

  5. Warp#. Tile index

  6. Build virtual raster

  7. Contour#. DEM #. RGB to PCT

  8. PCT to RGB

  9. Merge

  10. Rasterize

  11. Near black

  12. Grid

  13. Proximity

  14. Polygonize

  15. Sieve

  16. Fill nodata

  17. Extract projection

QGIS-处理

工具名称

信息按扩展剪辑栅格转换格式构建概述按掩模层剪辑栅格Warp Tile索引构建虚拟栅格彩色浮雕 reliefAmmon TIP(地形位置指数) HillshadeSlopeRoughnessTRI(地形坚固性指数)RB到PCTPCT到RGBMergeRasbitt(矢量到栅格)栅格化 (覆盖现有栅格)近黑网格(与电源的距离倒数)网格(数据指标)网格(移动平均) 网格(最近的邻居)接近度(网格距离)多边形筛填充nodatagdal 2 xyz提取投影栅格计算器

这些应用程序在QGIS中没有接口。GDAL 网站( http://gdal.org/gdal_utilities.html )上描述了其功能。

表2.1. GDAL 命令与GDalTools和Processing Toolbox的对应