2013-11-21 96 views
0

是否可以在d3.js的地理要素周圍繪製緩衝區(另一個功能)作爲固定距離單位(公里或英里)?例如,我將如何繪製一條從每個方向延伸25英里的點的路徑。我嘗試過使用d3.geo.circle並傳遞一定的度數(25英里/每緯度約69英里或25/69),但意識到儘管d3.geo.circle處理度數的重投影,但它不適應針對每個縱向度的不同長度。d3.geo緩衝區周圍的緩衝區

buffer = d3.geo.circle().angle(25/69).origin(function(x, y) { return [x, y]; }) 

我從這個借款:

http://bl.ocks.org/mbostock/5628479

更新:

看起來想什麼,我要做的就是創建一個緩衝測地線。

更新:

我能夠從一系列的給定的距離和從起點軸承的目標點繪製路徑創建緩衝區。

的JavaScript實現

喜歡這個顯示http://www.movable-type.co.uk/scripts/latlong.html

function drawBuffer(lat, long, distance){ 
    var intervals = 18; 
    var intervalAngle = (360/intervals); 
    var pointsData = []; 
    for(var i = 0; i < intervals; i++){ 
     pointsData.push(getDestinationPoint(lat, long, i * intervalAngle, distance)); 
    } 
    // Draw path using pointsData; 
} 
+0

也許有助於採取看看[大地插件(https://github.com/d3/d3-plugins/tree/主/短程線) – cengel

回答

0

我能夠通過從一系列目標點繪製一條路徑,從一個起點給定距離和方位,從而創建一個緩衝區。

http://www.movable-type.co.uk/scripts/latlong.html的JavaScript實現

像這樣:

function drawBuffer(lat, long, distance){ 
    var intervals = 18; 
    var intervalAngle = (360/intervals); 
    var pointsData = []; 
    for(var i = 0; i < intervals; i++){ 
     pointsData.push(getDestinationPoint(lat, long, i * intervalAngle, distance)); // See link 
    } 
    // Draw path using pointsData; 
} 
0

AFAIK在D3本身做這將是相當痛苦的,因爲它不是真正的意思創建/修改功能。我建議將其作爲GIS程序中的預處理步驟,如QGIS,它允許您以多種方式登錄buffer features。從那裏,您可以以常規方式導出爲GeoJSON並與D3一起使用。