三维不规则网格数据插值到规则网格

计算科学 Python 插值 scipy 网格
2021-12-03 06:54:39

我有以体素(扫描、射线、高度)形式获得的三维雷达反射率数据。数据已以不规则间距采样,我想将其转换为规则网格。此外,我还有具有相同形状(扫描、射线、高度)的纬度、经度和高度的 3-D 数组。Python 是我选择的编程语言。使用 scipy 是RegularGridInterpolator获得常规网格的最佳方法吗?

一位同事建议我首先从 2-D 插值开始(每个高度的扫描和射线),然后进行 3-D 插值。大部分反射率数据包含零(零反射率)和 NaN(无可用数据),并且很高兴知道是否有任何过滤器适用于去除零/NaN。任何有关此主题的建议和参考将不胜感激。

所以对于一个样本数据集 - 我总共有 22163680 个点,其中 266111 个是有限值(大于零)。其余的是零和 NaN。

1个回答

对于没有结构的点的分散数据,请尝试 inverse-distance-weighted-idw-interpolation-with-python这将 scipy 的快速K-d_trees 与反距离又称为径向内核相结合:

interpol(x)=wifi, 总和说最近的 10 个点x
wi=1|xxi|p归一化所以wi=1.
它只有 40 行代码,易于理解和修改。库存 iMac 上的运行时间:
0.2 秒在 3d 中为 170k 点构建 Kd 树
25 秒以查询 100k 点。

对于 2d、3d 及以上的矩形网格(也称为盒形网格),数据位于例如 m×n×k积分(xi,yj,zk)没有 NA,请参阅 Intergrid,它是scipy.ndimage.map_coordinates的包装器。

(不用说,检查任何插值是个好主意。一个简单的方法是将数据分成 90%train+ 10 %test点,比较interpolate(traintest)true(test).)

另请参阅:
gis.stackexchange.com/questions/tagged/interpolation+python on gis.stack
how-to-interpolate-scattered-data-to-a-regular-grid-in-python on earthscience.stack
pyresamplepyproj