我有一个测深数据集,有一小部分缺失。我需要填写这一栏。
该区域的水深测量具有一些强烈的方向性特征(例如,一条穿过缺失区域的峡谷)。使用标准的插值函数会削弱这些特征。
是否有一种适当的方法来估计缺失值,使已知值在给定轴上具有更大的权重?
目前数据是GeoTIFF,我使用的是QGIS,但我可以根据需要进行转换。我可以直接访问MATLAB和R,以及QGIS中包含的所有GRASS和SAGA工具。
江南体育网页版地球科学堆栈交换是为那些对地江南电子竞技平台质、气象、海洋学和环境科学感兴趣的人提供的一个问答网站。注册只需要一分钟。
注册加入这个社区我有一个测深数据集,有一小部分缺失。我需要填写这一栏。
该区域的水深测量具有一些强烈的方向性特征(例如,一条穿过缺失区域的峡谷)。使用标准的插值函数会削弱这些特征。
是否有一种适当的方法来估计缺失值,使已知值在给定轴上具有更大的权重?
目前数据是GeoTIFF,我使用的是QGIS,但我可以根据需要进行转换。我可以直接访问MATLAB和R,以及QGIS中包含的所有GRASS和SAGA工具。
我有同样的问题与表面DEM的。我在Matlab中发现的最佳解决方案是使用scatteredInterpolant类,它是内置在Matlab中。它允许自然邻域插值(这是前面评论中建议的一类加权距离插值)。用法是这样的:
% IF X和Y是每个网格单元格的坐标(您可以使用网格来获取%那些)invalidValue=NaN;%或-99999或任何在您的情况下gapIdxs= DEM==invalidValue;%空洞细胞索引interpolant = scatteredInterpolant(X(~gapIdxs),Y(~gapIdxs),DEM(~gapIdxs),'natural');% interpolant现在是一个函数,我们可以在你想要的任何点对它进行评估,在这种情况下,我们在void单元格中对它进行评估interpolatedValues=interpolant(X(gapIdxs),Y(gapIdxs));%现在我们修补DEM patchcheddem =DEM;patchedDEM (gapIdxs) = interpolatedValues;
根据我的经验,这比三次插值要好得多。如果这还不够,在您开始手动选择您可以探索的特性之前克里格插值.最后,如果你想强制方向性,你可以旋转你的数据(使用matlab imrotate),这样你的主要方向是垂直的,然后逐列插值(使用matlab interp1)。