一般使用 [lat, lon] = pix2latlon(R,row,col)
逐个将影像的二维坐标转换为经纬度坐标,但这样用到双重循环,运行较慢,代码如下:
[A, RA] = readgeoraster('D:\test.tif');
info = geotiffinfo('D:\test.tif');
A_Lat = zeros(size(A));
A_Lon = zeros(size(A));
for i = 1 : size(A, 1)
for j = 1 : size(A, 2)
[A_Lat(i, j), A_Lon(i, j)] = pix2latlon(info.RefMatrix, i, j);
end
end
为了快速得到影像的经纬度坐标,要避免使用双重循环,利用好Matlab矩阵运算的优势;而且 pix2latlon
函数可以对矩阵进行处理。
所以,在这里一种较快的方法为,先建立二维坐标的X矩阵和Y矩阵(代码中的A_I和A_J),然后仅需运行一次 pix2latlon
函数即可,运行效率能够大幅提高,代码如下:
[A, RA] = geotiffread('D:\test.tif');
info = geotiffinfo('D:\test.tif');
A_I = zeros(size(A));
A_J = zeros(size(A));
for i = 1 : size(A_I, 1)
A_I(i, :) = i;
end
for j = 1 : size(A_J, 2)
A_J(:, j) = j;
end
[A_Lat, A_Lon] = pix2latlon(info.RefMatrix, A_I, A_J);