Matlab快速将影像的二维坐标转换为经纬度坐标

一般使用 [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);

你可能感兴趣的:(matlab,数据处理,matlab,坐标转换,二维坐标,经纬度坐标)