【发布时间】:2015-06-11 09:46:23
【问题描述】:
使用 Swift 和苹果 mapKit 我想从 gps 坐标计算凹壳。我有一个定义折线的 CLLocation (纬度,经度)数组。对于路线地理围栏,我为折线中的每个 2d 点计算了距离为 n 米的所有可能的纬度和经度。此时我想计算这组点的凹壳。我找不到任何关于如何从 gps 坐标计算凹壳的信息。谁能给我推荐一个教程?
【问题讨论】:
标签: algorithm swift mapkit concave-hull
使用 Swift 和苹果 mapKit 我想从 gps 坐标计算凹壳。我有一个定义折线的 CLLocation (纬度,经度)数组。对于路线地理围栏,我为折线中的每个 2d 点计算了距离为 n 米的所有可能的纬度和经度。此时我想计算这组点的凹壳。我找不到任何关于如何从 gps 坐标计算凹壳的信息。谁能给我推荐一个教程?
【问题讨论】:
标签: algorithm swift mapkit concave-hull
在阅读您的问题之前,我从未听说过凹壳这个词,所以我用谷歌搜索了它。我找到了几种凹壳算法的参考资料。
似乎没有单一的解决方案。您必须决定是想要更光滑的船体还是内部面积最小的船体,或者介于两者之间。
如果您使用的所有点都在 100 公里左右的范围内,您可以简化问题并将您的纬度/经度转换为笛卡尔坐标。你所要做的就是计算出当前纬度的经度之间的距离。
将点转换为笛卡尔坐标后,它就变成了一个简单的凹壳问题。
如果您正在处理大片区域并且想要考虑地球的曲率,那么您遇到的问题要复杂得多。
【讨论】:
This 论文应该对你有用。我使用本文中的算法来实现我的hull.js 库。
您还可以通过Delaunay triangulation 对您的形状进行三角测量,然后像here 这样删除边界边缘。
【讨论】: