【问题标题】:Java spatial interpolation for scattered data分散数据的Java空间插值
【发布时间】:2015-07-21 01:57:11
【问题描述】:

我有一个 metars 点列表(纬度、经度、海平面压力),需要对压力进行插值。我需要 3D 还是 2D 就可以了?

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

这里有一些方法:Multivariate Interpolation

什么是最精确和最适合我的情况的? (我认为克里金法是最精确的但需要很多时间,最合适的可能是自然邻域法)

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

这个算法有java版本吗?我只看到这被应用于图像大小调整。

我也看到了这个Ruppert's algorithm

【问题讨论】:

  • 看看高斯过程回归和平滑样条曲线,如果你还没有的话。
  • 高斯过程回归是克里金算法。平滑样条曲线适用于分散数据(不规则网格)?

标签: java android math interpolation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 将 (lat, long) 转换为 (x, y, z),x=lat, y=long 那么 z 呢?
    • 这不是您将 (lat, long) 转换为 (x, y, z) 的方式。
    猜你喜欢
    • 1970-01-01
    • 2019-10-27
    • 2018-12-12
    • 1970-01-01
    • 2014-08-31
    • 2013-12-27
    • 2016-06-22
    • 2021-02-08
    • 2016-06-17
    相关资源
    最近更新 更多