2017-05-30 42 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

相关问题