我有一个使用--bbox
标志创建的topojson文件,我想出了如何获取中心(b
是bbox的地方):
var center = [(b[0] + b[2]) / 2, (b[1] + b[3]) / 2]
然后我计算了比例,问题是我计算了它的equirectangular投影(因为它很容易):
var wScale = width / (Math.abs(b[0] - b[2]) / 360) / 2 / Math.PI
var hScale = height / (Math.abs(b[1] - b[3]) / 360) / 2 / Math.PI
var scale = Math.min(wScale, hScale)
我无法找到计算mercator投影的方法。 我见过this answer并尝试使用投影来获得比例并直接设置新比例:
projection = d3.geo.mercator()
.translate([width / 2, height / 2])
.center(center)
.scale(1)
[b0, b1] = projection([b[0], b[1]])
[b2, b3] = projection([b[2], b[3]])
scale = 1 / Math.max(Math.abs(b2 - b0) / width, Math.abs(b3 - b1) / height)
projection.scale(s)
但结果并不完美(塔斯马尼亚贫穷):
编辑:我应该在https://gis.stackexchange.com/发帖还是这里没事?