Matlab获取Geotiff数据中像元的空间坐标(包括地理坐标和投影坐标)
Geotiff格式的数据中每个像元对应一个图上坐标和一个空间坐标,图上坐标即为行列号,空间坐标包括地理坐标和投影坐标。地理坐标用三维球面来定义地球上的位置,用经纬度来确定球面上的点位;投影坐标实质是平面坐标系统,表示该像元到坐标原点的距离,单位为长度单位(米,千米等)。投影坐标系始终基于地理坐标系,即一个Geotiff数据可以没有投影坐标,但是必须有地理坐标。具体这两个投影之间的区别可以参考 添加链接描述里面作者“fightinglife22”的解释。
下面介绍获取Matlab中Geotiff数据中某个像元(行列号已知)空间坐标的方法:
%%
%(1)只有地理坐标系,没有投影坐标系
% 语句:[lat, lon] = pix2latlon(R,row,col)
% 实例:
info = geotiffinfo('sample.tif');
[x,y] = pix2latlon(info.RefMatrix, 1, 2);
%%
% (2)有投影坐标系
% 语句:
%[x,y] = pix2map(R,row,col)
%[lat,lon] = projinv(proj,x,y) %将投影坐标转换为地理坐标
% 实例:
info = geotiffinfo('sample.tif');
[x,y] = pix2map(info.RefMatrix, 1, 2); %获取投影坐标
[lat,lon] = projinv(info ,x, y); %将投影坐标转换为地理坐标
注:
pix2latlon()函数的详细介绍请参考https://www.mathworks.com/help/map/ref/pix2latlon.html
pix2map()函数的详细介绍请参考https://ww2.mathworks.cn/help/map/ref/pix2map.html
projinv()函数的详细介绍请参考https://de.mathworks.com/help/map/ref/projinv.html