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

这篇博客介绍了如何通过避免双重循环,利用Matlab的矩阵运算来大幅提升pix2latlon函数处理大量影像坐标转换的效率。作者提供了一种创建X和Y矩阵的方法,然后一次性运行pix2latlon函数,从而显著提高了代码运行速度。
摘要由CSDN通过智能技术生成

一般使用 [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);
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-Chin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值