####百度墨卡托投影是百度独有的算法,类似于web墨卡托投影,但还是有一定的差别。因为利用百度墨卡托投影转wgs84属于违法,所以这里只介绍一种粗略的转换方法,误差可能约有2-3米。
想要在两种坐标间进行转换,需要先了解墨卡托坐标的原理。
一. 墨卡托投影
是正轴等角圆柱投影。由荷兰地图学家墨卡托(G.Mercator)于1569年创立。假想一个与地轴方向一致的圆柱切或割于地球,按等角条件,将经纬网投影到圆柱面上,将圆柱面展为平面后,即得本投影。墨卡托投影在切圆柱投影与割圆柱投影中,最早也是最常用的是切圆柱投影。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5VdVwkXO-1610203397187)(https://i.imgur.com/KXRNRFZ.png)]
二. Web墨卡托投影
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5KRG5cQB-1610203397189)(https://i.imgur.com/mpezAxO.png)]
由此便可根据原理求得百度坐标。
- Excel法:
该法可能由于经纬度数值过大,没有求算成功,这里贴上代码,感兴趣的小伙伴可以求算一下。
lon:=lon1/6378137
lat=2*atan(exp(lat1))-pi()/2
lon1\lat1为原经纬度;
lon\lat为转化后的经纬度;
- R语言法:
lon = lon1/6378137
lat = 2*atan(exp(lat1))-pi/2
- MATALB法:
lon = lon1/6378137
lat = 2*atan(exp(lat1))-pi/2
转化后的坐标为百度坐标,需要再进行转化。
具体转化可根据这个网站在线坐标转换工具。
转化完成后可在这个网站测试是否正确摩卡托坐标转经纬度坐标。
涉及的r语言及MATLAB基础操作:
反三角函数:asin()
,生成弧度值,即rad;asind()
,生成角度值;
将弧度转化为角度:rad2deg
;将角度转化成弧度制:deg2rad
;
指数、对数:
log(x,base=exp(1))
;log(x,base=~)
;log10(x)
;log2(x)
;exp(x)
;