专业坐标系转换工具

支持WGS84、GCJ02、BD09、CGCS2000、北京54、西安80等主流坐标系统

坐标系选择

支持常见 EPSG、WKT、proj4 片段识别:EPSG:4326(WGS84)、EPSG:4490(CGCS2000)、EPSG:4214(北京54)、EPSG:4610(西安80)。非经纬度投影定义仍需先转为经纬度后再处理。

坐标输入支持多种格式:十进制度、度分秒、度分

支持:116.404、116°24'14.4"E、116°24.24'E

支持:39.915、39°54'54"N、39°54.9'N

BJ54 / 西安80 七参数转换会使用该高度;互联网地图偏移和 WGS84/CGCS2000 同框架转换不依赖高度。

输出格式:
精度:

转换链路(1 步)

跨系统转换一律以 WGS84 为中枢。逐步核对中间值,可以直接定位是哪一段引入了偏移。

  1. 1
    WGS84GCJ-02国测局加偏算法
    116.41024450, 39.91640428

    仅在中国境内生效,境外原值返回

在你的代码里复现这次转换

片段使用与本页完全相同的算法与参数,可直接粘贴运行。

# GCJ-02 / BD-09 无官方 EPSG,以下实现与在线工具一致
import math

_A = 6378245.0
_EE = 0.00669342162296594323

def _out_of_china(lng, lat):
    return not (72.004 <= lng <= 137.8347 and 0.8293 <= lat <= 55.8271)

def _tr_lat(x, y):
    r = -100.0 + 2.0*x + 3.0*y + 0.2*y*y + 0.1*x*y + 0.2*math.sqrt(abs(x))
    r += (20.0*math.sin(6.0*x*math.pi) + 20.0*math.sin(2.0*x*math.pi)) * 2.0/3.0
    r += (20.0*math.sin(y*math.pi) + 40.0*math.sin(y/3.0*math.pi)) * 2.0/3.0
    r += (160.0*math.sin(y/12.0*math.pi) + 320*math.sin(y*math.pi/30.0)) * 2.0/3.0
    return r

def _tr_lng(x, y):
    r = 300.0 + x + 2.0*y + 0.1*x*x + 0.1*x*y + 0.1*math.sqrt(abs(x))
    r += (20.0*math.sin(6.0*x*math.pi) + 20.0*math.sin(2.0*x*math.pi)) * 2.0/3.0
    r += (20.0*math.sin(x*math.pi) + 40.0*math.sin(x/3.0*math.pi)) * 2.0/3.0
    r += (150.0*math.sin(x/12.0*math.pi) + 300.0*math.sin(x/30.0*math.pi)) * 2.0/3.0
    return r

def wgs84_to_gcj02(lng, lat):
    if _out_of_china(lng, lat):
        return lng, lat
    d_lat = _tr_lat(lng - 105.0, lat - 35.0)
    d_lng = _tr_lng(lng - 105.0, lat - 35.0)
    rad = lat / 180.0 * math.pi
    magic = 1 - _EE * math.sin(rad) ** 2
    sqrt_magic = math.sqrt(magic)
    d_lat = (d_lat * 180.0) / ((_A * (1 - _EE)) / (magic * sqrt_magic) * math.pi)
    d_lng = (d_lng * 180.0) / (_A / sqrt_magic * math.cos(rad) * math.pi)
    return lng + d_lng, lat + d_lat

def gcj02_to_wgs84(lng, lat, eps=1e-11, max_iter=30):
    """迭代精确反算,残差 < 1e-11°(约 1 μm),优于常见的 2*P - f(P) 近似"""
    if _out_of_china(lng, lat):
        return lng, lat
    w_lng, w_lat = lng, lat
    for _ in range(max_iter):
        t_lng, t_lat = wgs84_to_gcj02(w_lng, w_lat)
        d_lng, d_lat = lng - t_lng, lat - t_lat
        w_lng += d_lng
        w_lat += d_lat
        if abs(d_lng) < eps and abs(d_lat) < eps:
            break
    return w_lng, w_lat

_BD = math.pi * 3000.0 / 180.0

def gcj02_to_bd09(lng, lat):
    z = math.sqrt(lng*lng + lat*lat) + 0.00002 * math.sin(lat * _BD)
    theta = math.atan2(lat, lng) + 0.000003 * math.cos(lng * _BD)
    return z * math.cos(theta) + 0.0065, z * math.sin(theta) + 0.006

def bd09_to_gcj02(lng, lat):
    x, y = lng - 0.0065, lat - 0.006
    z = math.sqrt(x*x + y*y) - 0.00002 * math.sin(y * _BD)
    theta = math.atan2(y, x) - 0.000003 * math.cos(x * _BD)
    return z * math.cos(theta), z * math.sin(theta)

# WGS84 → GCJ-02
lng, lat = 116.404, 39.915
lng, lat = wgs84_to_gcj02(lng, lat)
print(lng, lat)

转换精度信息

自定义七参数转换

使用您本地测绘成果的 Bursa-Wolf 七参数进行 WGS84 与地方坐标系间的高精度转换,参数可保存为预设。

坐标系说明

WGS84 (GPS)
GPS标准坐标系
GCJ02 (火星坐标)
高德、腾讯地图
BD09 (百度坐标)
百度地图专用
CGCS2000 (2000国家大地)
中国大地坐标系
北京54
北京1954坐标系
西安80
西安1980坐标系

使用说明

选择源坐标系和目标坐标系
输入经纬度坐标进行转换
转换结果可在地图上比对偏移,批量结果支持撒点预览
支持批量导入 CSV / Excel 文件转换
结果可导出 CSV / GeoJSON / KML,直接用于 QGIS、Google Earth
平面坐标 Tab 支持高斯-克吕格分带正反算与 EPSG 互转
结果下方「全格式输出」一次给出 DMS、WKT、UTM、MGRS、Geohash、Plus Code、百度墨卡托等全部写法
「转换链路」逐步展开中间坐标,排查偏移时先看是哪一段出的问题
「复现代码」可直接复制为 pyproj / proj4 / PostGIS / cs2cs,参数与页面完全一致
格式转换 Tab 的「网格编码反解」可把 Geohash、Plus Code、MGRS、WKT 解回经纬度
「复制永久链接」把本次输入与配置写进 URL,方便在工单、文档里复现

精度与算法说明

GCJ-02 反算

加偏函数没有解析逆。常见实现用 2×P − f(P) 一次修正,残差 0.1~1 m; 本工具把正算残差反复反馈迭代,3~5 轮收敛,残差 < 1e-11°(约 1 μm)。 注意「算法无损」不等于「真值无损」——GCJ-02 的加偏参数本身来自公开逆向。

WGS84 / CGCS2000

两者同属 ITRF 框架,工具直接沿用同一组经纬度。需要历元与速度场改正的高精度作业, 请以当地测绘成果为准。

北京54 / 西安80

内置的是公开的区域近似七参数,只适合历史资料粗略叠加。 工程测量、施工放样、权属面积请在「自定义七参数」中填入本项目控制点解算的参数。

投影与距离

高斯-克吕格、UTM、Web Mercator 与 EPSG 互转基于 PROJ(proj4)严密公式; 距离与方位角使用 Vincenty 椭球面解算,近对跖点自动回退球面大圆解并标注。

全部计算在浏览器本地完成,坐标不会上传服务器。

    问题反馈