[转载]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)。
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
2013-07-23 Oracle SQL语句积累