2011-03-14 166 views
6

我從什麼地方提取的國家的輪廓數據,併成功地設法將其轉換爲緯度和經度座標的數組,我可以養活到谷歌地圖API繪製折線或多邊形。谷歌地圖多邊形優化

的問題是,存在這樣的形狀約1200+點。它在Google地圖中完美呈現,但我需要將點數從1200減少到100以下。我不需要非常流暢的輪廓,我只需要扔掉我可以不用的點。任何算法或可以幫助我減少點數的在線工具都是必需的。

+0

你需要做的這一次?你也使用任何一種可能有空間擴展的數據庫? – 2011-03-14 13:13:28

+0

@Argiropoulos Stavros:只有一次。沒有涉及數據庫;它只是一個HTML/JavaScript頁面。如果數據庫有幫助,那麼我可以將數據導入MySQL 5.1數據庫並執行您所建議的任何操作。 – 2011-03-14 13:26:37

+0

搜索「編碼折線」。它會將你的1200+分減少到40個字節的字符串 – 2011-03-14 17:16:46

回答

4

我覺得MapShaper可以做到這一點在線

否則,實現一些algorithm

+0

解釋負面評分被認爲是禮貌的;我提供了一個鏈接到一個在線工具,可以做到所要求的。 – Unreason 2011-03-14 13:28:26

+0

我可以從地圖整形器生成的「shp」文件中提取座標信息嗎? – 2011-03-14 13:32:10

+0

對不起,在那個時刻沒有時間做比罷了。其解釋是,提供一種工具(以及實施「某種算法」的模糊建議)似乎是無益的,因爲它似乎是解決方案的一個問題。現在,OP澄清了他不需要編程,但只做了一次,只要系統允許我立即撤銷downvote。 – 2011-03-14 14:05:52

0

最有可能你想要什麼給點分成2半,並想嘗試一下我的JavaScript函數:

function shortenAndShow (polyline, color) { 
    var dist = 0, copyPoints = Array (); 
    for (var n = 0, var end = polyline.getVertexCount () - 1; n < end ; n++) { 
    dist += polyline.getVertex (n).distanceFrom (polyline.getVertex (n +1)); 
    copyPoints.push (polyline.getVertex (n)); 
    } 
    var lastPoint = copyPoints [copyPoints.length-1]; 
    var newLine = new GPolyline (copyPoints, color, 2, 1); 
    gmap2.addOverlay (newLine); 
} 
1

如果您可以安裝postgis,我認爲這很容易,因爲他們提供了一個安裝程序,那麼您可以導入數據並執行snaptogrid()st_simplify(),但我無法在其中找到等價物mysql.If你決定去postgis,我建議,因爲它會幫助你的道路,我可以爲你提供的細節。

現在對於一個簡單的自定義解決方案可以通過削減或倒圓一些COORDS的最後一位數字縮小尺寸,然後合併在一個簡單的snaptogrid實際上導致相同COORDS()。

希望它有幫助

+0

將嘗試擴展名。 – 2011-03-14 14:05:37

6

找到Bill Chadwick的這個簡單的JavaScript。只需將LatLng提供給一個數組並將其傳遞給函數中的源參數Douglas Peucker line simplification routine

它將輸出一個數組,其中多邊形的點數較少。

var ArrayforPolygontoUse= GDouglasPeucker(theArrayofLatLng,2000) 
var polygon=new google.maps.Polygon({ 

    path:ArrayforPolygontoUse, 
    geodesic:true, 
    strokeColor:"#0000FF", 
    strokeOpacity:0.8, 
    strokeWeight:2, 
    fillColor:"#0000FF", 
    fillOpacity:0.4, 
    editable:true 
    }); 

theArrayofLatLng是您使用Google Maps API收集的latlng數組。 2000年的價值扭曲在米。我的假設是,價值越高,更多的點將被刪除作爲輸出。

對於真正的初學者: 請確保您使用它之前聲明你的HTML頁面上的JS文件。 :)

<script type="text/javascript" src="js/GDouglasPeucker.js"></script> 
+0

你應該嘗試在你的答案中包含最核心的代碼片段,並解釋他們爲什麼(或任何算法)解釋答案。 – 2013-02-06 18:58:59

+0

感謝您的建議納撒尼爾。編輯它。 – Quchie 2013-02-07 03:35:05

0

我同意了非理性的anwser,該網站支持GeoJSON的,我用它在我的網站,它砍下我的GeoJSON的,但我想你也需要這個world country geo Json

+0

鏈接只回答應該是評論 – NSNoob 2016-02-25 07:22:39

+0

@NSNoob是的,我想評論非理由,但我沒有50個聲望 – Sun 2016-02-25 08:24:08