首页 > 解决方案 > 在 MATLAB 中加入地理参考矩阵

问题描述

我有两个我想加入的具有不同空间范围和分辨率(即地球表面上一个像素的空间覆盖)的地理参考矩阵(网格化气候数据集)。让我们称它们为referenceMatrixand targetMatrix。这些矩阵可以作为 geotiffs 或者只是具有每个像素对应的纬度/经度网格的矩阵加载到 MATLAB 中。

我想要的是NaNtargetMatrix来自referenceMatrix. 我可以使用一个for-loop 来逐个查看像素,并使用基于最近像素的数据填充NaNs 中的 s 。这里描述了我用来定位空间中最近像素的方法:如何使用 MATLAB 找到给定坐标的最近点?targetMatrixreferenceMatrix

但是我需要用数千个矩阵来做这件事,而且for-loop 太慢了。因此我想使用逻辑索引,例如

targetMatrix(isnan(targetMatrix)) = referenceMatrix(isnan(targetMatrix))

增加了根据纬度和经度匹配矩阵中像素的能力。你们中的任何人都可以通过基于地理参考比较具有不同程度的矩阵的示例为我指明一个方向吗?

下面是输入数据和所需输出的示例

targetMatrix = [1,  NaN, 3; 
                NaN, 5,  6]; 
referenceMatrix = [10, 20, 30, 40; 
                   50, 60, 70, 80]; 
referenceLatitude = [13.3, 13.3, 13.3, 13.3; 
                     14.1, 14.1, 14.1, 14.1]; 
referenceLongitude = [3.2, 4.2, 5.2, 6.2; 
                      3.2, 4.2, 5.2, 6.2];  
targetLatitude = [13.4, 13.4, 13.4; 
                  13.9, 13.9, 13.9]; 
targetLongitude = [3.1, 3.6, 4.1; 
                   3.1, 3.6, 4.1]; 

wantedOutput = [ 1, 10, 3; 
                50,  5, 6];

想要的输出由 s 中的原始值组成,targetMatrix其中NaNs 填充有referenceMatrix, 即10和中最接近的(在空间中)值50

标签: matlabmatrixgeolocationraster

解决方案



推荐阅读