我想知道是否有D3-API调用将d3.geo.bounds()数组转换为给定地图宽度和高度的path.bounds像素数组?
我无法在API文档中找到这样的调用。我知道有一些预测可以解决问题,但是我没能从地理界限到达实际像素。
此外,是否存在计算一系列特征的纬度/长度质心的API实现?
我感谢任何帮助!
示例
假设用户想要将德国和波兰缩放到全屏。我的计算纬度 - 边界是:
lat:47.27148371456806 long: 5.850585058505857
(1321.6041604160416,246.58117844670664)
lat:55.06843452896922 long: 24.140414041404142
(1451.6651665166517,157.87336991900156)
使用google-maps检查,lat-long坐标是正确的。但是,计算出的像素值(使用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)
);
最佳, 塞巴斯蒂安
答案 0 :(得分:0)
使用可用的投影之一将要素的地理坐标转换为像素(投影)坐标。您可以使用投影将地理边界转换为投影边界,也可以直接使用path.bounds()
来获取该信息。也就是说,不是将该功能传递给d3.geo.bounds()
,而是将其传递给使用您投影的.bounds()
d3.geo.path()
方法。
没有计算一系列特征的质心的函数。您可以将要素组合成一个(最好使用GIS程序)并获得其质心,或者获取所有要素的质心,然后通过平均坐标来获得质心的质心。