「GIS算法」墨卡托坐标与经纬度相互转换的方法
发布时间: 2017-05-23
所属分类: GIS百科
最近用到了墨卡托坐标转换经纬度的需求,原理什么的不想多说,需要的可以查看这里:
经纬度转Web墨卡托
版本1
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 ;
}
版本2
(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; return mercator ;
}
版本3
function lonlat2mercator(lonlat)
{
var mercator={x:0,y:0};
var x = lonlat.x *20037508.34/180;
var y = Math.log(Math.tan((90+lonlat.y)*Math.PI/360))/(Math.PI/180);
y = y *20037508.34/180;
mercator.x = x;
mercator.y = y;
return mercator ;
}
Web墨卡托转经纬度
版本1
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;
}
版本2
(CGPoint )Mercator2lonLat:(CGPoint ) mercator
{
CGPoint lonLat;
double x = mercator.x/20037508.34*180;
double y = mercator.y/20037508.34*180;
y= 180/M_PI*(2*atan(exp(y*M_PI/180))-M_PI/2);
lonLat.x = x; lonLat.y = y;
return lonLat;
}
版本3
function mercator2lonlat(mercator){
var lonlat={x:0,y:0};
var x = mercator.x/20037508.34*180;
var y = mercator.y/20037508.34*180;
y= 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
lonlat.x = x; lonlat.y = y; return lonlat;
}
参考:
http://www.thinkgis.cn/topic/54199646bcea5603e8016e1d
http://blog.csdn.net/lsldd/article/details/8095500
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子
下一篇:关于我国三种参心大地坐标系的说明
赞一个