D3.js d3.要素周围的地理缓冲区
是否可以在d3.js中以固定的距离单位(公里或英里)围绕地理要素绘制缓冲区(另一个要素) 例如,我如何围绕一个点绘制一条路径,从该点向各个方向延伸25英里。我曾尝试使用d3.geo.circle并通过一小部分度(25英里/每纬度约69英里或25/69),但我意识到,尽管d3.geo.circle处理度的重投影,但它不能适应每个纵度的不同长度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]; }
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
查看以下内容可能会有所帮助