2016-08-16 70 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