该文档简要描述了GDAL的数据模型,该模型可以容纳其他各种信息。
GDAL的数据集是基于OpenGIS Grid Coverages的格式定义的。
更多信息请参考OpenGIS WKT坐标系统定义,以及osr教程文档和 OGRSpatialReference类的描述文档。
在GDAL中,返回坐标系统的函数是GDALDataset::GetProjectionRef()。 它返回的坐标系统描述了地理参考坐标,暗含着仿射地理参考转换,这地理参考转换是由GDALDataset::GetGeoTransform()来返回。由GCPs地理参考坐标描述的坐标系统是由 GDALDataset::GetGCPProjection()返回的。
注意,返回的坐标系统字符串“”表示未知的地理参考坐标系统。
仿射变换由6个参数构成,它们由GDALDataset::GetGeoTransform()返回它们把点/线坐标, 用下面的关系转将点/线影射到地理坐标:
Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)
Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)
假设影像上面为北方,GT2和GT4参数为0,而GT1是象元宽,GT5是象元高, (GT0,GT3)点位置是影像的左上角。
注意,上面所说的点/线坐标系是从左上角(0,0)点到右下角,也就是坐标轴从 左到右增长,从上到下增长的坐标系(即影象的行列从左下角开始计算)。 点/线位置中心是(0.5,0.5)。
GDALDataset::GetGCPProjection()返回。每个GCP(对应GDAL_GCP类)包含下面内容:
typedef struct
{
char *pszId;
char *pszInfo;
double dfGCPPixel;
double dfGCPLine;
double dfGCPX;
double dfGCPY;
double dfGCPZ;
} GDAL_GCP;
字符串pszid是本GCP在数据集中一系列GCP点中惟一的标示字符串(通常是数字)。 字符串pszInfo通常为空,但是也可以包含用户针对GCP定义的一些文本信息。甚至还 可能是GCP状态中包含机器可分析信息,虽然现在还支持。
坐标(dfGCPPixel,dfGCPLine)是栅格中的GCP位置。坐标(dfGCPX,dfGCPY,dfGCPZ)是 联合的地理参考位置(dfGCPZ通常是0)。
GDAL数据模型没有实现由GCPs产生坐标系的变化的机制,而是把具体的操作留给用户实现。 通常1到5阶多项式是常用的方法。
通常一个数据集会包含仿射地理变换,或GCPS中的一个,或者两个都没有。两个都有很少见, 而且无法用权威坐标系定义。
虽然某些键现在可能没有,但是以后也可能会被定义。 一些格式的数据可以支持一些基本的元数据(可以由用户自己定义), 可以使用驱动程序访问这些键/值。例如,如果数据含有date/time标志, TIFF格式的驱动程序可能只是简单地返回基本的信息:
TIFFTAG_DATETIME=1999:05:11 11:29:56
元数据的键/值对还可以被组织到某些域中,默认的域是没有名字的。当然, 为了保存某些特殊的信息可能需要定义特殊的域。目前虽然不能列举出一个对象所需要 的所有域,但是程序可以测试任何我们已经知道确切含义的域。
SUBDATASET_1_NAME=NITF_IM:0:multi_1b.ntf SUBDATASET_1_DESC=Image 1 of multi_1b.ntf SUBDATASET_2_NAME=NITF_IM:1:multi_1b.ntf SUBDATASET_2_DESC=Image 2 of multi_1b.ntf SUBDATASET_3_NAME=NITF_IM:2:multi_1b.ntf SUBDATASET_3_DESC=Image 3 of multi_1b.ntf SUBDATASET_4_NAME=NITF_IM:3:multi_1b.ntf SUBDATASET_4_DESC=Image 4 of multi_1b.ntf SUBDATASET_5_NAME=NITF_IM:4:multi_1b.ntf SUBDATASET_5_DESC=Image 5 of multi_1b.ntf
以_NAME为后缀的键所对应的值可以传递给GDALOpen()用于访问文件。以_DESC为 后缀的键所对应的值可以以一种友好的方式显示给用户。
IMAGE_STRUCTURE域中的一个项是数据的压缩方式,对应的键名为COMPRESSION, 对应的值说明的压缩的方式。
"xml:"为前缀名的域都不是一个普通的键/值对方式的元数据。它是一个 单一的XML文档,以一个大的字符串方式保存一个波段的光栅数据具有以下性质:
typedef struct
{
/- gray, red, cyan or hue -/
short c1;
/- green, magenta, or lightness -/
short c2;
/- blue, yellow, or saturation -/
short c3;
/- alpha or blackband -/
short c4;
} GDALColorEntry;
颜色表同时还对应一个调色板(GDALPaletteInterp),GDALColorEntry中的c1/c2/c3/c4的 值可以作为调色板索引得到真正的颜色值。
用颜色表表示时,每个像素保存的只是像素颜色在颜色表的位置。每个颜色的索引从 0开始递增。这里并没有提供针对颜色表的缩放机制。
The overviews are used to display reduced resolution overviews more quickly than could be done by reading all the full resolution data and downsampling.
Bands also have a HasArbitraryOverviews property which is TRUE if the raster can be read at any resolution efficiently but with no distinct overview levels. This applies to some FFT encoded images, or images pulled through gateways (like OGDI) where downsampling can be done efficiently at the remote point.
1.5.4