我想知道是否有一个D3-API调用将d3.geo.bounds()数组转换为给定映射的宽度和高度的path.bounds像素数组?
我在API文档中找不到这样的调用。我知道有一些投影应该符合这个技巧,但是我没有从一个地理界得到实际的像素界。
另外,是否有计算一系列特性的lat/long质心的API实现?
我很感激你的帮助!
示例
假设用户希望将德国和波兰放大到全屏。我的计算长的边界是:
lat:47.27148371456806 long: 5.850585058505857
(1321.6041604160416,246.58117844670664)
lat:55.06843452896922 long: 24.140414041404142
(1451.6651665166517,157.87336991900156) 检查谷歌地图,长的坐标是正确的。然而,计算像素值(使用来自https://stackoverflow.com/a/14457180/974815的方法)对我来说似乎很奇怪。屏幕分辨率为2560x1258。
为了计算墨卡托投影的偏移量,我想将长时间的边界转换为像素边界:
var offset = [
this.width - (bounds[0][0] + bounds[1][0])/2,
this.height - (bounds[0][1] + bounds[1][1])/2
];
return d3.geo.path().projection(
d3.geo.mercator()
.center(this.__computeCentroid(features))
.scale(scale)
.translate(offset)
);最好,塞巴斯蒂安
发布于 2014-03-30 12:29:29
使用可用的投影之一将特征的地理坐标转换为像素(投影)坐标。您可以使用投影将地理边界转换为投影边界,也可以直接使用path.bounds()获取该信息。也就是说,不是将特性传递给d3.geo.bounds(),而是将其传递给使用投影的d3.geo.path()的.bounds()方法。
没有计算一系列特征的质心的函数。您可以将这些特性组合成一个(最好是使用一个GIS程序)并获得其中的质心,或者获取所有特征的质心,然后通过平均坐标得到质心。
https://stackoverflow.com/questions/22743203
复制相似问题