RFC 33:GTiff-固定像素点解释
作者:弗兰克·温特丹
联系方式:warmerdam@pobox.com
状态:通过
总结
本文提出在构造geotransform和解释控制点时,GDAL-GTiff(GeoTIFF)驱动程序对PixelIsPoint的解释发生变化。使用RFC是因为GeoTIFF在GDAL和GDAL用户社区中起着基础性的作用,并且这种调整存在着严重的向后兼容性问题。
理论基础
GeoTIFF规范包括一个数据项GTRasterTypeGeoKey,它可以设置为RasterPixelIsArea(默认)或RasterPixelIsPoint。RasterPixelIsArea定义像素表示现实世界中的一个区域,而RasterPixelIsPoint定义像素表示现实世界中的一个点。这通常有助于区分光学传感器的行为,即平均一个区域上的光值,而栅格数据则像点上的高程采样一样面向点。
传统上,GDAL将此标志视为与图像的地理参考无关,尽管有来自其他软件开发人员和数据生产者的争议。这是基于作者对GeoTIFF作者曾经说过的话的解释。但是,最近对 [section 2.5.2.2] GeoTIFF规范已经明确指出GDAL行为是不正确的,当转换到GDAL地理参考模型时,PixelIsPoint地理参考需要偏移半个像素。此问题记录在以下票据中,包括#3837、#3838、。。。。
这个RFC试图以对GDAL/OGR用户最小的中断来管理这个转换。
计划变更
在gdal/frmts/gtiff/GeoTIFF.cpp的PixelIsPoint情况下,从GeoTIFF连接点对栅格空间的解释将偏移半个像素。当存在多个连接点时,这将影响地质转换的形成和GCP的形成。地转基质转化为地转基质也会受到影响。
相反,如果使用PixelIsPoint(由“AREA_或_POINT”元数据项设置为“POINT”驱动)写入文件,则写入的栅格空间坐标将偏移半个像素。
在中继中,通过将GTIFF_POINT_GEO_IGNORE configuration选项设置为TRUE(默认为FALSE),可以禁用上述行为。
在GDAL 1.7和1.6分支中,将应用相同的更改,除了GTIFF_POINT_GEO_IGNORE配置选项将默认为TRUE。
兼容性问题
此更改将更改具有PixelIsPoint集的所有GeoTIFF文件的明显地理参考。目前尚不清楚这将应用于多大比例的GeoTIFF文件,但这一点非常重要。对于来自非GDAL源的文件来说,这并不算太糟,因为大多数其他产品多年来都对PixelIsPoint做出了正确的解释。然而,不幸的是,过去由带有PixelIsPoint的GDAL生成的文件现在将被不同的解释,并且值将被关闭半个像素。
在实践中,如何使用GDAL生成PixelIsPoint GeoTIFF文件并不是特别方便,也没有很好的文档记录,因此这些文件应该相当罕见。最简单的方法是从另一个PixelIsPoint GeoTIFF文件中复制,其中写入时的错误只是在读取源GeoTIFF文件时消除了错误。
报告范围
过去,人们在不同的地方要求我们以不同的方式报告AREA_或_POINT值为POINT的文件的范围,就像listgio报告具有PixelIsPoint解释的GeoTIFF文件一样。我愿意 not 计划这样做,为了实现GDAL,gcp、RPCs和GeoTransform将始终基于像素的区域解释。区域点将 only 用于控制GeoTIFF文件中PixelIsPoint值的设置,并用作像素物理解释的元数据。
世界档案
这些更改不会影响处理或写入世界文件的方式。它们始终基于基于区域的像素的假设,但原点位于左上角像素的中心。这实际上与PixelIsPoint的值相同,但不会尝试使用此元数据。
测试套件
不会更改1.6和1.7分支测试套件。
主干分支测试套件将被更改以检查更新的值,并将通过测试进行扩展,以确认将配置选项GTIFF_POINT_GEO_IGNORE设置为TRUE将抑制更改的行为。
文档
这种情况将在1.8.0、1.7.4和1.6.4发行说明以及主干中的GeoTIFF驱动程序文档中得到说明。
GeoTIFF网站GeoTIFF FAQ将更新,以澄清PixelIsPoint的解释,并注意到直到GDAL 1.8它是由GDAL不正确的解释。
实施
所有代码的实现都将在接下来的几周内由Frank warmdam完成。
适用于干线(r21158)、1.7(r21159)、1.6(r21160)和1.6-esri(r21161)。