WGS84坐标与Web墨卡托坐标互转
阅读原文时间:2021年04月21日阅读:1

在WebGIS的开发中经常用到的地图投影为Web墨卡托和WGS84,故歌地图,bingmaps,百度地图,mapabc,mapbar,以及ArcGIS online上的大部分地图为Web墨卡托地图,ArcGIS online上最开始发布的地图投影为WGS84。

在开发过程中很多时候会遇到不同坐标系之间互转的问题,特别是底图使用Web墨卡托,定位(GPS,wifi等)信号坐标为WGS84坐标的时候,那么通用解决方案就是写一个坐标参考系的转换库,类似于proj4,但一般情况下很少用到那么多的参考系之间的互转,并且在客户端实现或者调用proj4都是一件很困难或者麻烦的事情,大多数情况下我们实现Web墨卡托坐标与WGS84坐标互转就可以了。

[cpp]  view plain copy

  1. //经纬度转Wev墨卡托
  2. dvec3 CMathEngine::lonLat2WebMercator(dvec3  lonLat)
  3. {
  4. dvec3  mercator;
  5. double x = lonLat.x *20037508.34/180;
  6. double y = log(tan((90+lonLat.y)*PI/360))/(PI/180);
  7. y = y *20037508.34/180;
  8. mercator.x = x;
  9. mercator.y = y;
  10. return mercator ;
  11. }
  12. //Web墨卡托转经纬度
  13. dvec3 CMathEngine::WebMercator2lonLat( dvec3   mercator )
  14. {
  15. dvec3 lonLat;
  16. double x = mercator.x/20037508.34*180;
  17. double y = mercator.y/20037508.34*180;
  18. y= 180/PI*(2*atan(exp(y*PI/180))-PI/2);
  19. lonLat.x = x;
  20. lonLat.y = y;
  21. return lonLat;
  22. }

经过笔者测试,与Google map dowloader软件系列的转换器相比,在14级别的某地图上测试有0.04个像素误差,基本可以无视。

其他级别和经纬区域有待测试。

原帖地址:http://www.gisall.com/html/68/104468-4865.html

将度换算成度分秒=INT(B2)&"/"&INT(MOD(B2*60,60))&"/"&INT(MOD(B2*3600,60))&""

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章