其中最关键的只有两个标签Tag,一个是MODELPIXELSCALETAG
,一个是MODELTIEPOINTTAG
。
至于ModelTransformationTag
我没用过不了解,但是应该是关于仿射变换相关的,用于将像素坐标与地理/投影坐标进行转换的矩阵。
对于Geotiff结构体的使用,查看IDL文档:
https://www.nv5geospatialsoftware.com/docs/write_tiff.html#W_811389549_896481
https://www.nv5geospatialsoftware.com/docs/READ_TIFF.html#R_822202989_1237437
对于Tag和Key的理解,查看TIFF规范说明:
https://www.awaresystems.be/imaging/tiff/tifftags/search.html
在IDL文档中,它传入三元素的Double数组:
数组形式为:[x_res, y_res, z_res]
,x_res
表示X轴方向上的分辨率,一般指经度上的分辨率等;y_res
表示Y轴方向上的分辨率,一般指纬度上的分辨率等;z_res
表示Z轴上方向上的分辨率,一般指代高程上的分辨率等. 值得注意是,我们的栅格图像一般是二维的即包含行列数,因此对于x_res一般填入0即可。
SO,如果影像形式如下:
那么传入给MODELPIXELSCALETAG
的Double数组为:[0.2, 0.3, 0]
。
传入6个元素的Double数组,对于六个元素的说明,原文如下:
Originally part of Intergraph’s GeoTIFF tags, but now used in interchangeable GeoTIFF files.
This tag is also known as ‘GeoreferenceTag’.
This tag stores raster->model tiepoint pairs in the order
ModelTiepointTag = (…,I,J,K, X,Y,Z…)
where (I,J,K) is the point at location (I,J) in raster space with pixel-value K, and (X,Y,Z) is a vector in model space. In most cases the model space is only two-dimensional, in which case both K and Z should be set to zero; this third dimension is provided in anticipation of future support for 3D digital elevation models and vertical coordinate systems.
有人这么解释的:在栅格图像中的(I, J, K)
表示第I
列第J
行第K
高的像素点,在model space
(实际上指的就是地理坐标系或者投影坐标系)中的坐标是(X, Y, Z)
(实际上就是(Lon, Lat, Elevation)
),如果K和Z均不存在填入0即可。
但是我认为实际上没有说明清楚,因为像素点实际上存在大小的,第I
列第J
行的像素点在地理坐标系下的坐标是是(X, Y)
即(Lon, Lat)
,但是这个地理坐标指的是像素点的左上角位置还是中心位置呢?
应该这么解释(以二维为例):
栅格图像上的原点实际上指的最左上角点的位置:
所以这里I和J尽量不要理解为行和列,如果非要这么理解,那么你需要知道,它实际上指代的是第I行第J列(索引从0开始)的像素点的左上角点位置。
这里不再详细解释,基本上通用:
geo_info={$
MODELPIXELSCALETAG: [10, 10, 0.0], $ ; 分辨率
MODELTIEPOINTTAG: [0.0, 0.0, 0.0, 20, 20, 0.0], $ ; 角点信息
GTMODELTYPEGEOKEY: 2, $ ; 设置为地理坐标系
GTRASTERTYPEGEOKEY: 1, $ ; 像素的表示类型, 北上图像(North-Up)
GEOGRAPHICTYPEGEOKEY: 4326, $ ; 地理坐标系为WGS84
GEOGCITATIONGEOKEY: 'GCS_WGS_1984', $
GEOGANGULARUNITSGEOKEY: 9102} ; 单位为度
其他的Key和Tag很少使用,可以查看IDL文档和Geotiff说明了解。