从墨卡托转换为Equirectangular时的地图比例因子

时间:2015-12-18 17:49:05

标签: maps mercator

假设我在墨卡托投影中有一张地图,我知道顶部和底部纬度:

topLatitude = 80; bottomLatitude = -55;

我也知道地图的宽度和高度:

宽度= 800;身高= 500;

我想将地图重新​​缩放到Equirectangular投影,保持相同的宽度。

如何计算地图的新高度?

1 个答案:

答案 0 :(得分:-1)

我想出了一个解决方案。

这是计算墨卡托投射图的x和y的公式:

这是y的功能:

function degreesToRadians(degrees){
    return degrees / 180 * Math.PI;
}

function mercatorLatitudeToY(latitude){
    return Math.log(Math.tan(Math.PI / 4 + degreesToRadians(latitude) / 2));
}

当R = 1时,得到的结果是弧度。所以我计算了顶部和底部纬度的y值。

接下来,如果投影是Equirectangular,我计算相同的弧度 - 我只需要将顶部和底部纬度转换为弧度。最后一件事 - 我只需要找到差异的纵横比:

var scale =  (mercatorLatitudeToY(topLatitude) - mercatorLatitudeToY(bottomLatitude))/ (degreesToRadians(topLatitude) - degreesToRadians(bottomLatitude));

对于没有南极洲的地图,纵横比为~1.5