繁体   English   中英

随机排列的坐标值的3D插值

[英]3D Interpolation of randomly arranged coordinate value

在.NET / C#项目中,我相对地随机安排了坐标,并为每个坐标分配了权重KPI,如下所示:

Weight   | Lat       | Long
---------+-----------+-----------
1,123444 | 54,219367 | 9,696117
1,067940 | 51,950265 | 11,692274
1,054050 | 52,131392 | 13,216249
1,044820 | 52,636704 | 9,845077
1,023757 | 50,118346 | 7,308953
1,006427 | 53,612651 | 12,429595
1,002610 | 51,433237 | 7,661594
0,988619 | 49,396423 | 7,022961
0,955858 | 51,010989 | 10,845346
0,943669 | 50,652052 | 9,162438
0,938015 | 51,104541 | 13,201738
0,863415 | 48,790447 | 11,497889
0,835913 | 48,661604 | 9,350134

在数学或统计学方面,我不是专家。 我需要做的是根据先前计算的值(见上文)对任何其他给定的地理坐标权重进行插值。

我发现的所有3D插值算法都假定坐标必须以矩形形状排列,这在我的szenario中是不可能的。

有没有适合我需要的算法? 需要指出的是,我们在同一项目中使用了一些R.NET功能,因此使用R的解决方案将是完美的。

插值方法有很多,它们给您带来略有不同的结果。 您应该尝试一下,看看哪种方法最适合您的方案。

一种方法是将所有数据点放在一定的半径上。 计算到每个对象的距离,然后使用距离作为权重计算它们的高度的加权平均值。 这将允许您在点之间进行线性插值。

如果您想要一些更波浪的东西,可以执行相同的操作,但可以使用distance ^ 2或distance ^ 3代替重量作为重量。 这将使最接近点的权重更大,并使曲面更弯曲。 您甚至可以将它们组合起来,使其具有a*distance^2 + b*distance但我会尽可能简化。

如果由于分布不均匀而不想使用半径,则可以获取最接近的K点(使用K进行实验,看看哪种方法最有效)。

这些都是非常通用的,但是它们在很多情况下都可以很好地工作。

注意:如果点相对较近,则可以计算3D空间中的距离,但是如果它们相距较远,则应计算球体上的距离(圆弧的长度)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM