2024年6月6日发(作者:)

Web墨卡托坐标与WGS84坐标互转

在WebGIS的开发中经常用到的地图投影为Web墨卡托和WGS84,故歌地图,bingmaps,百

度地图,mapabc,mapbar,以及ArcGIS online上的大部分地图为Web墨卡托地图,ArcGIS

online上最开始发布的地图投影为WGS84。

在开发过程中很多时候会遇到不同坐标系之间互转的问题,特别是底图使用Web墨卡托,定位

(GPS,wifi等)信号坐标为WGS84坐标的时候,那么通用解决方案就是写一个坐标参考系的转

换库,类似于proj4,但一般情况下很少用到那么多的参考系之间的互转,并且在客户端实现或者

调用proj4都是一件很困难或者麻烦的事情,大多数情况下我们实现Web墨卡托坐标与WGS84

坐标互转就可以了。

下面是使用objective-c实现的Web墨卡托坐标与WGS84坐标互转程序,当然也可以使用其

他语言来实现,使用起来比较简单和方便。

1.

2.

3.

4.

5.

6.

7.

8.

9.

//经纬度转墨卡托

-(CGPoint )lonLat2Mercator:(CGPoint ) lonLat

{

CGPoint mercator;

double x = lonLat.x *20037508.34/180;

double y = log(tan((90+lonLat.y)*M_PI/360))/(M_PI/180);

y = y *20037508.34/180;

mercator.x = x;

mercator.y = y;

10. return mercator ;

11. }

12. //墨卡托转经纬度

13. -(CGPoint )Mercator2lonLat:(CGPoint ) mercator

14. {

15. CGPoint lonLat;

16. double x = mercator.x/20037508.34*180;

17. double y = mercator.y/20037508.34*180;

18. y= 180/M_PI*(2*atan(exp(y*M_PI/180))-M_PI/2);

19. lonLat.x = x;

20. lonLat.y = y;

21. return lonLat;

22. }

复制代码

Google Maps

地图投影全解析

原文出处:

/LionGG/archive/2009/04/20/

Google Maps

Virtual Earth

等网络地理所使用的地图投影,常被称作

Web Mercator

Spherical Mercator

,它与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体。

建议先对地图投影知识做一个基本的了解,《地图投影为什么》。

什么是墨卡托投影?

墨卡托

(Mercator)

投影,又名

"

等角正轴圆柱投影

"

,荷兰地图学家墨卡托(

Mercator

)在

1569

年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有

一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即

赤道)的

"

墨卡托投影

"

绘制出的世界地图。从球到平面,肯定有个转换公式,这里就不再罗

列。

Google

们为什么选择墨卡托投影?

墨卡托投影的

"

等角

"

特性,保证了对象的形状的不变行,正方形的物体投影后不会变为长方

形。

"

等角

"

也保证了方向和相互位置的正确性,因此在航海和航空中常常应用,而

Google

们在计算人们查询地物的方向时不会出错。

墨卡托投影的

"

圆柱

"

特性,保证了南北(纬线)和东西(经线)都是平行直线,并且相互垂

直。而且经线间隔是相同的,纬线间隔从标准纬线(此处是赤道,也可能是其他纬线)向两

级逐渐增大。

但是,

"

等角

"

不可避免的带来的面积的巨大变形,特别是两极地区,明显的如格陵兰岛比实

际面积扩大了

N

倍。不过要是去两极地区探险或可靠的同志们,一般有更详细的资料,不

会来查看网络地图的,这个不要紧。