沿着隐含曲线对地理非连续线段进行排序

时间:2013-04-04 23:31:42

标签: algorithm language-agnostic geometry line graph-theory

假设:

一组(为了便于讨论,我们将其称为S),这是一个 无序 线段集合。每个线段定义为两个经度 - 纬度端点。虽然所有线段都遵循隐含曲线,但每个线段之间存在各种尺寸的“间隙”。我们将此曲线称为“隐含”,因为它未在任何地方明确定义。我们唯一可用的信息是S中包含的细分受众群。

期望的结果:

序列(为了便于讨论,我们将其称为R),这是一个 有序 线段集合。每个线段的定义与之前一样,遵循与之前相同的隐含曲线,但现在按其在隐含曲线上的位置进行排序

上下文(即“为什么我需要这个?”):

基本上我有不完整的地理数据需要规范化和“完成”,通过一些非常简单的插值来形成一个带有 no 间隙的完整曲线。您可能会问“为什么不只是将曲线拟合到所有线段端点并完成它?” - 好吧,那不是我想要的。线段正好位于它们的位置,并且最终曲线不需要“平滑”。实际上,我打算用直线连接每个段(可以想象的最粗略的插值形式)。但是,连接段很容易;困难的部分是对它们进行排序。

总结:从SR的性能算法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用k-d treecover tree快速查找附近的点。

如果您需要一条连续曲线,我建议合并给定边的短traveling salesman路径将是一个合理的重建。您可以2-opt的方式将Bentley described与k-d树一起使用(支付,抱歉;我认为this chapter on TSP local search by Johnson and McGeoch中也有说明)。所需的一个修改是确保初始路径包含给定的边缘,并且2-opt移动不会移除这些边缘。

答案 1 :(得分:1)

我猜暗示曲线有两个属性。一个是持续的,这意味着没有细分。其次,它的一阶导数是连续的,这意味着没有角落。

从第二个属性我们可以说,如果两条线之间的角度彼此更接近,它们就更相关。但我想这还不够。您可以定义成本函数,该函数取决于线条之间的角度和线条的距离。

C = A *角度+ B *距离(其中A,B应进行测试和调整)

通过形成此功能,您可以找到每条线与另一条线相关的线数。比你可以简单地连接具有最强关系的线。虽然我猜贪婪的算法并不意味着你总能获得最佳解决方案。