2016-08-16 38 views
0

我有一大堆由许多LineStrings组成的GeoJson数据。我需要重新排列所有LineStrings的坐标,以便尽可能小的曲折形状。因此,例如,我有这个组坐标:重新排列LineString坐标GeoJson

[ 
     [ 
     -149.858345, 
     61.217461, 
     0 
     ], 
     [ 
     -151.544282, 
     59.646368, 
     0 
     ], 
     [ 
     -124.099861, 
     43.982118, 
     0 
     ], 
     [ 
     -151.291694, 
     60.689824, 
     0 
     ] 
] 

这导致在这条线

enter image description here

其中代替它应该被重新排序这样

[ 
    [ 
     -149.858345, 
     61.217461, 
     0 
     ], 
     [ 
     -151.291694, 
     60.689824, 
     0 
     ], 
     [ 
     -151.544282, 
     59.646368, 
     0 
     ], 
     [ 
     -124.099861, 
     43.982118, 
     0 
     ] 
] 

这使得此

enter image description here

这是一个更明智的路线。

我认识到“敏感”是主观的,另一种看待它的方式是,我如何重新排列坐标以便得到最直的线?

这是我可能使用turf.js的东西吗?我查看了文档,但找不到合适的功能(或者我正在考虑错误的方式)

在此先感谢!

回答

0

Turf并没有为此而内置任何东西,如果你是一个人但很难定义到计算机,这往往是那些有常识解决方案的问题之一。这就是说,我怎么会解决这个问题是:

另一种方式做的伎俩这将是:

  • 使用草皮形或concaveman生成点周围concave hull
  • 遍历船体的各个部分,找出最长的部分,并将其删除,将多边形制成LineString。
+0

谢谢@tmcw,我实际上已经尝试了凹壳方法(虽然取得了一定程度的成功......但最终并不完美),但我认为最终你的权利......尽管......很难界定的常识性解决方案以算法术语来说......尽管在这一点上,这些是我认为的唯一合理的方法(除了完全不同的接近我的问题外) – Nick