坐标转换一些

http://rovertang.com/labs/tileindex/

关于中国的经纬度

国内的经纬度有三套系统:

  • WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
  • GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
  • BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。

使用OpenStreetMap的坐标为WGS84;使用高德地图、腾讯地图的坐标为GCJ02;使用百度地图的坐标为BD09;谷歌地图和Bing地图的中国部分采用了高德地图的数据,所以坐标为GCJ02。

WGS84的坐标转化为GCJ02的坐标是单向的,即WGS84的坐标能够准确地变换为GCJ02坐标;但GCJ02坐标转换为WGS84时会存在精度损失。

GCJ02的坐标和BD09的坐标转换是双向的,转换规则可以参考下面的python代码:

 
import math

x_pi = 3.14159265358979324 * 3000.0 / 180.0

def amapcoor2bmapcoor(amap_lon, amap_lat):
    x = amap_lon
    y = amap_lat
    z = math.sqrt(x * x + y * y) + 0.00002 * math.sin(y * x_pi) theta = math.atan2(y, x) + 0.000003 * math.cos(x * x_pi) bmap_lon = z * math.cos(theta) + 0.0065 bmap_lat = z * math.sin(theta) + 0.006 return (bmap_lon, bmap_lat) def bmapcoor2amapcoor(bmap_lon, bmap_lat): x = bmap_lon - 0.0065 y = bmap_lat - 0.006; z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * x_pi); theta = math.atan2(y, x) - 0.000003 * math.cos(x * x_pi); amap_lon = z * math.cos(theta); amap_lat = z * math.sin(theta); return (amap_lon, amap_lat)




https://github.com/geometalab/pyGeoTile


猜你喜欢

转载自www.cnblogs.com/fir/p/10659937.html
今日推荐