0

你好

如果存在具有特定粗糙度(知道轮廓间隔)的均匀地形,如果特定点周围的网格已知,如何执行插值?

例如,如果起始标高为 105m,等高线间距为 0.2m。此外,如果 7x7 的网格可用(这是 VB 中的数组,TERR(6,6))。如果 105 的位置在 TERR(4,3) 中,那么它周围的其他值应该减少 0.2 的值,它看起来像这样:

104.2 104.2 104.2 104.2 104.2 104.2 104.2

104.4 104.4 104.4 104.4 104.4 104.4 104.4

104.4 104.6 104.6 104.6 104.6 104.6 104.4

104.4 104.6 104.8 104.8 104.8 104.6 104.4

104.4 104.6 104.8 105 104.8 104.6 104.4

104.4 104.6 104.8 104.8 104.8 104.6 104.4

104.4 104.6 104.6 104.6 104.6 104.6 104.4

数组中数字的分布会因改变起始标高的位置和数组(网格)的大小而变化。

我发现了很多文章和插值方法(邻域法、三次法、双线性法……等),但没有人足够接近这个问题。

谢谢!

4

1 回答 1

2

它的形状像金字塔,有角。

如果你想让它看起来像一个圆锥,你可以根据直接距离而不是 x 或 y 距离来计算值。在此示例中,水平和垂直值(相对于 105)将与现在相同。但是从 TERR(4,3) 到 TERR(3,2) 将是 sqrt(1^2 + 1^2) 或 1.414 的“距离”。所以将 0.2 乘以 1.414 并分配 TERR(3,2) 的值 105-.2828 = 102.7272

dx = x 与已知值的距离 dy = y 与已知值的距离 val = 已知值 dval = 1 距离上的值差 TERR(dx, dy) = val + sqrt(dx^2+dy^2)

这是简单和线性的。有很多方法可以在点上拟合平滑的 3D 曲线,但是需要更多的信息输入,并且有很多方法可以做到这一点。

于 2010-12-02T07:07:08.087 回答