首页 > 代码库 > WGS84与WGS84 Web Mercator

WGS84与WGS84 Web Mercator

两者的区别

WGS84坐标系
1、WGS84是地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系;
2、通过GPS可以直接获取WGS84下的坐标(B,L,H),B为纬度,L为经度,H为大地高即到WGS84椭 球面的高度;
3、我国地图采用的是北京1954或西安1980坐标系下的高斯投影坐标(x,y),也有采用北京1954或西安1980坐标系下的经纬度坐标(B,L),高程一般为海拔高度;
4、GPS的测量结果与北京54或西安80坐标相差几十米到一百多米,随区域各异;
WGS84 Web Mercator:
1、谷歌地图(WGS_1984_Pseudo_mercator)、Virtual Earth、Bing Maps、百度地图、Mapabc、ArcGIS Online等采用Web Mercator或Spherical Mercator坐标系,天地图采用CGCS2000国家大地坐标系;
2、Web Mercator与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体;
3、为什么选择墨卡托投影?等角正轴圆柱投影,等角保证了对象的形状不变形,也保证了方向和相互位置的正确性(在航海、航空中应用),等角的代价是面积的巨大变形,特别是两极地区;
4、WebGIS开发经常碰到坐标系互转,如底图使用Web Mercator,定位(GPS,wifi等)信号坐标为WGS84坐标,代码实现如下:
//经纬度转Wev墨卡托
dvec3 CMathEngine::lonLat2WebMercator(dvec3  lonLat)
{
    dvec3  mercator;
    double x = lonLat.x *20037508.34/180;
    double y = log(tan((90+lonLat.y)*PI/360))/(PI/180);
    y = y *20037508.34/180;
    mercator.x = x;
    mercator.y = y;
    return mercator ;
}
//Web墨卡托转经纬度
dvec3 CMathEngine::WebMercator2lonLat( dvec3   mercator )
{
    dvec3 lonLat;
    double x = mercator.x/20037508.34*180;
    double y = mercator.y/20037508.34*180;
    y= 180/PI*(2*atan(exp(y*PI/180))-PI/2);
    lonLat.x = x;
    lonLat.y = y;
    return lonLat;
}


从WGS84到WGS84 Web Mercator

对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化。而投影坐标系,是对地理坐标系按照某种方式投影到平面上的,所以可以认为它是一个平面坐标系,单位自然是米或千米。
       

        我们在做开发的时候,尤其是web地图开发,两种坐标系至关重要4326 GCS_WGS_1984 和 102100WGS_1984_web_mercator_auxiliary_sphere 。


            1)、4326 GCS_WGS_1984 是WGS1984,属于地理坐标系,相信大家对它都有所耳闻,他就是大名鼎鼎的gps采用的坐标系,也就是通过gps拿到的坐标信息都是按这个坐标系给我们的经度和纬度。当然,如果你是做移动平台上的gps,获得的经纬度也是按这个坐标系。


           2)、102100 WGS_1984_web_mercator_auxiliary_sphere则是目前在线地图采用的通用坐标系,属于投影坐标系。


          如果我们采用googlemap做底图,然后想通过gps将位置在地图上显示,不经过任何转换直接在googlemap上显示是不行的,因为他们的坐标系不统一。所以在显示之前就必须将gps获取点进行坐标转换到WGS_1984_web_mercator,然后在googlemap上显示。

       

       在我们的实际应用中,经常用到SpatialReference空间参考系,我们大都用的是WKID=4326的D_WGS_1984的地理坐标,而由于需要,向之前的一篇博文中介绍的,叠加Google Map地图的话,就涉及到将我们现有的地图从WKID=4326的地理坐标系转换成WKID=102100的投影坐标系,怎么转换?

 

   ArcMap中的工具箱中有这样的工具,以下截图详细说明:

 

1、打开已有的地图,并打开工具箱

技术分享

 

2、按照箭头指向,依次展开节点后,选择“Project”工具,如下:

技术分享

 

3、在打开的Project窗口中,选择输出的空间坐标系统,然后,点击“Select”,如下图:

技术分享

 

4、选择“Projected Coordinate System”,如下图:

技术分享

 

5、选择“World”,点击“Add”,如下图:

技术分享

 

6、找到WGS 1984 Web Mercator.prj,点击“Add”,如下图:

技术分享

 

7、在下拉框中,选择仅有的一项,然后点击“OK”,至此已经完成(这里请注意:请记住Output Dataset or Feature Class中的位置,那是转换后的输出shp位置)

技术分享

 

8、关闭ArcMap,重新打开ArcMap,并Add Data上一步中转换后的那个图层shp文件,此时的图层已经是墨卡托坐标系了。

技术分享


 







参考文章
WGS84与WGS84 Web Mercator的区别

ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)




 

WGS84与WGS84 Web Mercator