[转载]WGS84坐标与Web墨卡托坐标互转

复制代码
 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 }
复制代码

精度未知,肯定存在精度误差。

http://bbs.esrichina-bj.cn/ESRI/thread-78245-1-1.html

Web墨卡托投影坐标系http://hi.baidu.com/liongg/item/2840be728b738b10d0dcb39b

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

X轴:由于赤道半径为6378137米,则赤道周长为2*PI*r = 2*20037508.3427892,因此X轴的取值范围:[-20037508.3427892,20037508.3427892]。

Y轴:由墨卡托投影的公式可知,同时上图也有示意,当纬度φ接近两极,即90°时,y值趋向于无穷。

这是那些“懒惰的工程师”就把Y轴的取值范围也限定在[-20037508.3427892,20037508.3427892]之间,搞个正方形。

懒人的好处,众所周知,事先切好静态图片,提高访问效率云云。俺只是告诉你为什么会是这样子。因此在投影坐标系(米)下的范围是:最小(-20037508.3427892, -20037508.3427892 )到最大 (20037508.3427892, 20037508.3427892)。

posted @   太一吾鱼水  阅读(6609)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
历史上的今天:
2013-07-23 Oracle SQL语句积累
点击右上角即可分享
微信分享提示