【问题标题】:Matrix Interpolation Algorithm矩阵插值算法
【发布时间】:2013-07-08 19:12:07
【问题描述】:

我正在处理需要在它们之间进行插值的大量坐标点。基本上它是什么,是各个纬度和经度的温度。我想进行插值以获得圆形纬度和经度的温度。

例如,我知道在

44.56N,56.42W,温度=50

47.82N,57.845 W,温度 = 44.2 度

45.74N,59.216 W,温度 =60.1 度

我想获取这些数据并在 46.0N 58.0 W 处插入温度。有人能指出我正确的方向吗?我什至不知道从哪里开始。甚至一些伪代码或维基百科链接也会有所帮助。插值不必太精确,只要让我进入球场即可。

谢谢

【问题讨论】:

    标签: interpolation multidimensional-array linear-interpolation


    【解决方案1】:

    有趣的问题。我想最简单的近似方法是加权距离(每个点的平均温度,加权距离目标点的距离)。要确定距离,请查看:Calculate distance between two latitude-longitude points? (Haversine formula)http://www.movable-type.co.uk/scripts/latlong.html

    如果您想要更好的插值方法,请考虑区域插值。我不知道这适用于特定点而不是区域有多好,但似乎是最适用的方法。

    【讨论】:

    • 感谢您的帮助。我的想法是进行加权距离方法,然后我继续实施。但是,我有大约 60,000 个坐标,因此查看我要计算的每个插值的所有坐标非常慢。我正在考虑创建某种允许快速访问附近点的数据结构,因此我不必每次都查看全部 60,000 个点。关于如何工作的任何想法?还是另一种方法来缩减数据集?
    • 几个选项。如果您使用的是启用地理空间的数据库,请使用地理查询功能选择距离所需点一定距离内的所有点,然后使用这些点。
    • 如果它是一个数据结构,你可以编写自己的对一定距离内的点的快速测试(框搜索会很快,虽然 60k 点很多)。另一方面是一个好点......如何在它周围获得一个很好的点选择......如果你只有10个最近的点,但所有点都在你的目标点的一个方向上,那不是一个好的答案.因此,您可以根据 +/- 纬度/经度或在某些角度内(每个象限中的一个或两个最近点)选择最近的四个点。不过,所有这些都需要更多的计算。
    • 这是个好主意,我喜欢每个象限中最接近的 4 个点。但是,我仍然不确定如何找到这些点。您提到了我不熟悉的框搜索。我试图用谷歌搜索它,但找不到任何看起来正确的东西。你能指出我正确的方向吗?谢谢!
    • 通过框搜索我只是指比较 X 和 Y,假设一个简单的框有 X+n 个单位,X-n 个单位,并检查现有的纬度/经度点是否在 X-n 和 X+n 之间(相同与 Y)。这是过滤到合理数量的点的一种非常快速的方法(尽管 60k 仍然需要搜索很多)。您可能会考虑将 60k 点分解为一个网格,知道每个网格中有哪些(并且可能与这些网格重叠一点);然后您找到所需点的网格单元,并仅与同一网格单元中的点进行比较。占用更多内存,但会更快。
    【解决方案2】:

    如果其他人遇到这种情况,我最终将我的数据点存储在四叉树中,然后使用查询范围方法在每个象限中查找两个最近的坐标。然后我根据每个点与目标坐标的距离进行反距离平均。这似乎给出了很好的结果,但运行时间有点慢。将我的 60,000 个数据点加载到四叉树中大约需要 30 秒。然后大约需要一分钟来查询该数据以计算 2500 个点。如果我想出更快的东西,我会更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多