分散数据的Java空间插值

时间:2015-05-10 14:52:54

标签: java android math interpolation

我有一个metars点列表(纬度,经度,海平面压力),需要插入压力。我需要3D或2D很好吗?

我见过双立方插值,但它似乎只适用于常规网格。

以下是一些方法:Multivariate Interpolation

对我来说最精确,最适合的是什么? (我认为kriging是最精确的,但需要花费很多时间,而最充足的可能是自然邻居)

我是否需要在内存中保留网格或网格以及此方法的所有插值点?我只想调用一些函数interpolate(lat,lon),它返回可用点的插值压力。

这个算法是否有java版本?我只是看到这适用于图像调整大小。

我也见过Ruppert's algorithm

2 个答案:

答案 0 :(得分:1)

对于你的情况,物理域是地球,这是一个封闭的表面,我建议使用3D。即,将压力P构造为(x,y,z)的函数,而不是(经度,纬度)的函数。当你调用函数interpolate(lat,lon)时,你可以先在内部将(lat,long)转换为(x,y,z)。

对于散乱数据插值,我之前有使用径向基函数,薄板样条,......等的经验。它们非常容易实现(您不需要进行三角测量或计算Voronoi图)结果通常很好。主要缺点是它需要求解(N×N)矩阵(其中N是点数),因此仅适用于您的点数最多为数千的情况。

答案 1 :(得分:0)

我希望在您发布问题时能回答您的问题。但就其价值而言,我在使用自然邻居插值处理非结构化数据集方面很幸运。 Natural Neighbor Interpolation 生成平滑且视觉上令人愉悦的表面,并且速度相对较快。您可以在 The Tinfour Project 找到开源 Java 实现。我已在 Introduction to Natural Neighbor Interpolation 上发布了有关该技术的一些注释。巧合的是,我举个例子的数据源就是你提到的同一个METAR(气象机场报告)。