如何使用topojson的bbox自动获取d3.geo.mercator投影的比例?

时间:2014-11-13 01:32:46

标签: d3.js topojson

我有一个使用--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)

equirectangular straya

我无法找到计算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)

但结果并不完美(塔斯马尼亚贫穷):

sad mercator straya

编辑:我应该在https://gis.stackexchange.com/发帖还是这里没事?

0 个答案:

没有答案