功能周围的d3.geo缓冲区



是否可以在d3.js中的地理特征周围绘制一个缓冲区(另一个特征),作为固定的距离单位(公里或英里)?

例如,我如何在一个从该点向各个方向延伸25英里的点周围绘制一条路径。我试过使用d3.geo.circle并通过一个度数的分数(25英里/每纬度约69英里或25/69),但我意识到,尽管d3.geo.chircle可以处理度数的重投影,但它不能适应每个纵向度数的不同长度。

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

我借用这个:

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

更新:

看起来我想做的是创建一个测地线缓冲区。

更新:

我能够通过从一系列目标点绘制一条路径来创建缓冲区,给定距离和起点的方位。

请参阅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));
    }
    // Draw path using pointsData;
}

AFAIK在D3中这样做本身会非常痛苦,因为它并不是真正用来创建/修改功能的。我建议将此作为GIS程序(如QGIS)中的预处理步骤,该程序允许您以多种方式缓冲特征。从那里,您可以导出为GeoJSON,并以通常的方式与D3一起使用。

我能够通过从一系列指定距离和方位的目标点绘制路径,在一个点周围创建一个缓冲区。

请参阅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;
}

最新更新