将多边形分解为lineStrings的算法(来自图的岬角)

时间:2017-12-05 13:15:14

标签: javascript algorithm polygon turfjs

考虑以下多边形(农业情节) An agricultural plot

从这个多边形中,我想提取绘图的“岬角”,即用于打开场的多边形(Wikipedia)的连续线(边)。虽然通常只考虑垂直于场地平面的行,但我需要多边形的所有边。

这里,连续线表示任何一组坐标,其中该组的任何两个坐标之间的角度不大于值X(例如30度)。 对于给定的示例,生成的岬角应如下所示:

Headlands in example

我写了一个小算法试图完成这个,基本上检查两个坐标之间的角度,如果角度低于X度,则将给定坐标推到现有的lineString,否则创建一个新的lineString(headland)。 Check out the following Gist

然而,在某些情况下,场的角是圆形的,因此可能由彼此距离很小的许多坐标组成。然后,相对角度可以小于值X,即使拐角太尖锐而不能在没有转动的情况下实际耕种。 为了克服这个问题,我添加了一个索引,当坐标太靠近以进行比较时,该索引会增加,以便根据初始坐标检查下一个坐标。 Check out the following Gist

这适用于示例中的简单绘图,但是我正在努力处理更复杂的绘图,如下所示。 Second example plot

这里,底部岬角被识别为一个lineString以及右侧的岬角,即使光学上有一个尖角。此外,右上角的两个坐标被发现是一个单独的岬角,即使它们应该连接到右岬角。因此,结果应该产生如下:enter image description here

我想知道的是,如果有一种方法可以有效地将任何多边形分解到它的岬角,给定一个特定的转角。我为代码here设置了一个repo,并设置了一个包含许多示例here的在线测试页面,如果有帮助的话。

0 个答案:

没有答案