RFC4:地理定位阵列

作者:弗兰克·温特丹

联系方式:warmerdam@pobox.com

现状:发展

总结

提出了一种基于像素和直线与地理定位坐标相关联的点阵列的图像地理定位附加机制。这些阵列将被表示为栅格带本身。

在AVHRR、Envisat、HDF和netCDF数据产品中,以这种方式分发原始数据或投影数据的地理位置是很常见的,而目前将其表示为非常大数量的gcp,或对地理位置信息进行大幅度子采样以提供更合理数量的gcp的方法对于许多应用来说是不充分的。

地理位置域元数据

具有地理位置信息的数据集将在“地理位置”域中包含以下数据集级别的元数据项,以标识地理位置阵列,以及坐标系和与原始像素和直线的关系的详细信息。

  • 空间参考系的wkt编码。

  • X_数据集:数据集名称(如果未指定,则默认为同一数据集)

  • X_波段:X_数据集中的波段号。

  • Y_DATASET:数据集名称(如果未指定,则默认为同一数据集)

  • Y_波段:Y_数据集中的波段号。

  • Z_DATASET:数据集名称(如果未指定,则默认为同一数据集)

  • Z_波段:Z_数据集中的波段号。(可选)

  • 像素偏移:像素偏移到左定位像素的地理定位数据中

  • LINE_OFFSET:线偏移到顶部地理定位像素的地理定位数据中

  • 像素步骤:每个地理位置像素表示这许多地理位置像素。

  • 线步骤:每个地理定位像素代表这许多地理定位线。

在通常情况下,数据集的两个波段实际上是经纬度,因此地理位置数组的大小与基础图像相同,元数据可能如下所示:

SRS: GEOGCS...
X_BAND: 2
Y_BAND: 3
PIXEL_OFFSET: 0
LINE_OFFSET: 0
PIXEL_STEP: 1
LINE_STEP: 1

对于AVHRR数据集,只有11个点(注意,较新的NOAA AVHRR数据集有51个点),但对于每一行。因此,LAC数据集的结果可能如下所示:

SRS: GEOGCS...
X_DATASET: L1BGCPS:n12gac10bit.l1b
X_BAND: 1
Y_DATASET: L1BGCPS:n12gac10bit.l1b
Y_BAND: 2
PIXEL_OFFSET: 25
LINE_OFFSET: 0
PIXEL_STEP: 40
LINE_STEP: 1

这假设修改了L1B驱动程序,以支持使用L1B GCPs:前缀对gcp进行特殊访问。

更新驱动程序

  1. HDF4:客户需要授权在HDF4驱动程序(特别是swath产品)中立即集成地理定位阵列支持。(完整)

  2. HDF5:一些HDF5产品包含地理位置信息,应该作为数组处理。没有更新的时间表。

  3. AVHRR:每个扫描线有11/51个已知位置。这些数据目前基本上是降采样的,并作为gcp返回,但这种格式将是作为地理定位阵列处理的一个很好的候选者。计划在不久的将来。

  4. Envisat:Envisat的原始产品使用地理位置信息,目前作为gcp的子样本,很适合升级。没有更新的时间表。

  5. netCDF:netCDF文件在x和y方向上可以有不同的变化图,当它们被编码为CF约定的“二维坐标变量”时,它们被表示为地理位置数组。有关详细信息,请参阅netcdf驱动程序页。

  6. OPeNDAP:在x和y方向上可以有不同的变化地图,当它们不规则时可以表示为地理位置阵列。没有更新的时间表。

对Warp API和gdalwarp的更改

介绍了一种新的基于地理定位阵列的变换方法,该方法遵循现有的GDALTransformer机制。将使用以下函数调用创建地理位置数组转换器。“字符” * *“array是地理位置元数据域中的元数据列表。

void *GDALCreateGeoLocTransformer( GDALDatasetH hBaseDS,
                                   char **papszGeolocationInfo,
                                   int bReversed );

此转换器目前部分实现,但可能使用大量内存(两倍于地理位置阵列所需的内存),正确性仍不确定,但一旦获得批准,将至少修复为正确的,尽管暂时可能没有效率。

如果只有地理位置信息可用(完成),则将升级GDALGenImgProjTransformer以实例化GeoLoc transformer(而不是affine、gcp或rpc transformer)。但是,当前的GDALCreateGenImgProjTransformer()函数没有提供选择使用哪种转换机制的机制。因此,例如,如果仿射变换可用,它将优先于地理位置数据使用。如果bGCPUseOK为TRUE,将优先使用gcps而不是地理位置数据。

gdalwarp程序目前总是将bGCPUseOK设置为TRUE,因此gdalwarp用户没有办法选择优先于gcp使用地理位置数据。在这方面,未来可能需要对gdalwarp进行一些修改。

通过翻译保持地理位置

“我们如何在转换数据集时保留对地理位置信息的访问?像gdalúu translate这样的应用程序需要特殊处理吗?
将地理位置数据放置在一个特殊的元数据域中意味着它不会在默认翻译中被传输