D3.js d3.要素周围的地理缓冲区

D3.js d3.要素周围的地理缓冲区,d3.js,geospatial,D3.js,Geospatial,是否可以在d3.js中以固定的距离单位(公里或英里)围绕地理要素绘制缓冲区(另一个要素) 例如,我如何围绕一个点绘制一条路径,从该点向各个方向延伸25英里。我曾尝试使用d3.geo.circle并通过一小部分度(25英里/每纬度约69英里或25/69),但我意识到,尽管d3.geo.circle处理度的重投影,但它不能适应每个纵度的不同长度 buffer = d3.geo.circle().angle(25/69).origin(function(x, y) { return [x, y]; }

是否可以在d3.js中以固定的距离单位(公里或英里)围绕地理要素绘制缓冲区(另一个要素)

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

buffer = d3.geo.circle().angle(25/69).origin(function(x, y) { return [x, y]; })
我从这里借用:

更新:

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

更新:

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

有关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;
}
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;
}
函数drawBuffer(横向、纵向、纵向){
var区间=18;
var间隔角=(360/间隔);
var pointsData=[];
对于(变量i=0;i
AFAIK在D3中这样做本身将是相当痛苦的,因为它并不是真正用来创建/修改功能的。我建议将此作为GIS程序中的预处理步骤,例如,它允许您以多种方式执行。从那里,您可以导出为GeoJSON,并以通常的方式与D3一起使用。

我能够通过从一系列目标点绘制路径(给定与起点的距离和方位)来创建点周围的缓冲区

有关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;
}
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;
}
函数drawBuffer(横向、纵向、纵向){
var区间=18;
var间隔角=(360/间隔);
var pointsData=[];
对于(变量i=0;i
查看以下内容可能会有所帮助