关于墨卡托Mercator投影

墨卡拖投影是一种“等角正切圆柱投影”:假设地球被围在一中空的圆柱里,其标准纬线与圆柱相切接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅选定标准纬线上的“墨卡托投影”绘制出的地图

墨卡托投影满足以下两个条件:

(1)经纬线均为直线且互成正交

(2)经纬线的长度扩大倍数一致

这就保证了方向和相互位置关系的正确,所以常用作航海图和航空图。

Web墨卡托坐标系

以整个世界范围、赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。

由于赤道半径是6378137米,因此X轴的取值范围:[-20037508,20037508],Y轴当纬度接近两极时,y值趋向于无穷,为了简单,Y轴的取值范围也限定和X轴的取值范围一样。

地理坐标:

经度可取[-180,180],由上面可知纬度不可能达90度,为了于Y轴对应,反计算可得85.05112877980659。

墨卡托坐标转经纬度
//经纬度转墨卡托
        public Vector2D lonLat2Mercator(Vector2D lonLat)
        {
            Vector2D mercator = new Vector2D();
            double x = lonLat.X * 20037508.34 / 180;
            double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (Math.PI / 180);
            y = y * 20037508.34 / 180;
            mercator.X = x;
            mercator.Y = y;
            return mercator;
        }
        //墨卡托转经纬度
        public Vector2D Mercator2lonLat(Vector2D mercator)
        {
            Vector2D lonLat = new Vector2D();
            double x = mercator.X / 20037508.34 * 180;
            double y = mercator.Y / 20037508.34 * 180;
            y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) - Math.PI / 2);
            lonLat.X = x;
            lonLat.Y = y;
            return lonLat;
        }

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值