2017-05-30 56 views
0

我正在嘗試爲lat/long中的一組輸入點創建voronoi多邊形。問題是我的輸入數據集可以在同一位置包含多個點,因此該點返回相同的voronoi多邊形。使用D3.js幾何來縮放一個voronoi多邊形,結果是lat long,而不是座標px

我想直觀地顯示重疊的多邊形(每個多邊形略小於前面的多邊形),以證明在下面的屏幕截圖中同一點上有多個多邊形。

從閱讀文檔看來,您可以縮放投影,但這些投影已經在px中,而不是我真實世界的經緯度值。

那麼,我怎樣才能獲得經緯度的輸入多邊形,並返回一個縮小了X%的多邊形,輸出多邊形的緯度/經度使用d3.js-v3?

實施例的多邊形輸入:[long1,LAT1,long2,LAT2,long3,lat3,long4,lat4]

concentric polygons

編輯:上述圖像是使用一個 「夾子」 功能以剪裁多邊形不斷縮小的夾子半徑,這爲邊緣多邊形提供了所需的效果,但是對於內部綁定的多邊形卻沒有達到期望的效果。

回答

0

所以這個解決方案最後很容易。

var p1 = d3.geom.polygon(polygonArray); 
var centroid = p1.centroid(); 
var newPolygonArray = []; 
p1.forEach(function(v, i) { 
    var newLong = centroid[0] + (v[0] - centroid[0])*(0.9); 
    var newLat = centroid[1] + (v[1] - centroid[1])*(0.9); 
    newPolygonArray.push(newLong, newLat); 
}.bind(this)); 

我花了很多時間試圖用D3的功能和預測進行改造,平移和縮放多邊形,但只要我離開的那一天工作,它打我,所有我需要做的是簡單的數學上述程序。

當你被卡住,新鮮空氣可以打開你的眼睛,這個教訓是休息一下。

concentric voronoi polygons

相關問題