RFC 32:gdallocationinfo实用程序

作者:弗兰克·温特丹

联系方式:warmerdam@pobox.com

状态:通过

总结

本文档建议为GDAL添加一个新的标准命令行实用程序,用于报告栅格中某个位置(像素)的详细信息。

理论基础

  1. 用户有一个用例,他们希望能够识别用于满足特定像素/位置请求的VRT文件。

  2. 许多用户要求使用一种工具来查找位置的值,这种值通常用不同于图像的坐标系来表示。例如,“给定纬度/经度位置的高程是多少?”。

gdallocationinfo实用程序旨在处理这两种类型的请求,并且希望以一种作为“栅格点查询”工具具有一些通用值的方式处理。

gdallocationinfo

完整文档可在 gdallocationinfo

Usage: gdallocationinfo [--help-general] [-xml] [-lifonly] [-valonlyl]
                        [-b band]* [-l_srs srs_def] [-geoloc] [-wgs84]
                        srcfile x y

该实用程序的关键方面是对位置坐标系的控制(-s_srs,-geoloc,-wgs84)和对输出格式的各种控制(-xml,-lifonly,-valonly)。xml的完整输出示例可能是:

$ gdallocationinfo -xml -wgs84 utm.vrt -117.5 33.75
<Report pixel="217" line="282">
  <BandReport band="1">
    <LocationInfo>
      <File>utm.tif</File>
    </LocationInfo>
    <Value>16</Value>
  </BandReport>
</Report>

位置信息元数据域

像素值和位置转换逻辑都内置在gdallocationinfo中,不需要太多的详细说明。更奇特的部分是报告从数据源查询的“LocationInfo”。

为了满足我们的迫切需要,我们需要让VRTSourcedRasterBand返回文件信息与目标像素重叠。但是,理论上,不同的驱动程序可能返回不同类型的位置信息。例如,WMS驱动程序可能会为该位置发出GetFeatureInfo并返回结果。

查询数据源的机制是针对目标频带的“LocationInfo”域的一个特别命名的GetMetadataItem()请求。以下请求的项名称的格式为“Pixel_x_y”,其中x和y是被查询像素的像素和行。

此项返回的值应为空,或者是用根元素“”记录的XML。文档的内容在其他方面是未定义的,只要它们是格式良好的XML。VRT驱动程序为该位置的每个文件返回一系列xxx条目。

如。

GDALGetMetadataItem( hBand, "Pixel_100_200", "LocationInfo" );

可能返回:

<LocationInfo>
  <File>utm.tif</File>
</LocationInfo>

测试套件

将在gdal实用程序套件和分别用于实用程序和vrt行为的gdrivers/vrt.py脚本中引入测试。

文档

实用程序的文档已经准备好,并在上面引用。

实施

实现已经完成,并且在主干中。由于RFC的修订,Frank Wermedam可以根据需要进行调整。