地理图志 · 实用工具

地理编码与逆地理编码

支持地址文本与地理坐标之间的双向解析。地理编码将结构化地址转换为 WGS-84、GCJ-02、BD-09 坐标;逆地理编码根据坐标反查行政区划与 POI 信息。基于真实坐标转换算法与 OpenStreetMap、高德地图 API 规范。

首页/ 地理图志/ 实用工具/ 地理编码与逆地理编码
📍

坐标转换与编码查询

选择下方标签切换地理编码、逆地理编码、批量转换或坐标系说明

输入结构化地址,工具将返回该地址在不同坐标系下的经纬度

编码结果

东经为正,西经为负

北纬为正,南纬为负

逆编码结果

支持混合输入:中文地址将执行地理编码;"经度,纬度"格式将执行逆地理编码

批量处理结果

常用坐标系对比

图例:同一地点(北京天安门)在三种坐标系下的位置偏移示意( exaggeration 10000× )

坐标系定义与适用范围

坐标系全称椭球参数主要用途偏移特征
WGS-84World Geodetic System 1984a=6378137m
f=1/298.257223563
GPS定位、国际通用、OpenStreetMap、Google Maps(全球)无偏移(基准)
GCJ-02国测局坐标 / 火星坐标基于WGS-84加偏移中国境内地图服务(高德、腾讯、谷歌中国)非线性偏移,约50-500m
BD-09百度坐标基于GCJ-02二次加密百度地图、百度API在GCJ-02基础上再偏移约20-100m

转换公式(公开算法)

以下公式基于国内广泛使用的公开坐标转换算法。注意:GCJ-02 的偏移函数为国家保密算法,此处采用社区逆向工程验证的近似公式,精度约 ±1–2 m,满足一般 Web 可视化需求。高精度转换需使用测绘部门提供的控制点参数。

WGS-84 → GCJ-02
Δlat = transformLat(lng − 105.0, lat − 35.0)
Δlng = transformLng(lng − 105.0, lat − 35.0)
radLat = lat · π / 180
magic = sin(radLat); magic = 1 − ee · magic²
sqrtMagic = √magic
Δlat = (Δlat · 180) / ((a·(1−ee)) / (magic·sqrtMagic) · π)
Δlng = (Δlng · 180) / (a / sqrtMagic · cos(radLat) · π)
GCJ.lat = lat + Δlat ; GCJ.lng = lng + Δlng

GCJ-02 → BD-09
z = √(lng² + lat²) + 0.00002 · sin(lat · 3π)
θ = atan2(lat, lng) + 0.000003 · cos(lng · 3π)
BD.lng = z · cos(θ) + 0.0065
BD.lat = z · sin(θ) + 0.006

参数:a = 6378245.0(克拉索夫斯基椭球长半轴),ee = 0.00669342162296594323(偏心率平方)

📐 坐标快速参考

以下为中国主要城市的 WGS-84 坐标,可直接复制使用:

北京116.4074, 39.9042
上海121.4737, 31.2304
广州113.2644, 23.1291
深圳114.0579, 22.5431
成都104.0668, 30.5728
西安108.9402, 34.3416
武汉114.3054, 30.5931
杭州120.1551, 30.2741
重庆106.5516, 29.5630
拉萨91.1409, 29.6456

🗺️ 编码流程示意

地理编码与逆地理编码数据流示意

⚠️ 使用须知

  • 本工具为前端演示,坐标数据来自公开数据集,仅供学习参考。
  • GCJ-02 与 BD-09 转换使用社区公开算法,误差约 1–2 m。
  • 真实业务场景请接入官方 API:高德地理编码 API、百度 Geocoding API、Nominatim。
  • 中国境外地址使用 WGS-84 即可,无需加密偏移。
  • 批量转换上限 50 条/次,避免浏览器卡顿。

地理编码原理与规范

🌍 什么是地理编码(Geocoding)

地理编码是将人类可读的地址描述(如"北京市东城区天安门广场")转换为计算机可处理的地理坐标(经度、纬度)的过程。它是所有基于位置服务(LBS)的基础设施,广泛应用于导航、物流、外卖配送、疫情流调、灾害应急等领域。

一个完整的地理编码请求通常包含以下要素:结构化地址文本、指定坐标系、返回精度级别(省/市/区/街道/门址)、以及周边 POI(兴趣点)信息。国际通用的参考规范为 OpenStreetMap 的 Nominatim 服务;国内则以高德地图地理编码 API 与百度 Geocoding API 为主流。

🧭 什么是逆地理编码(Reverse Geocoding)

逆地理编码是地理编码的逆过程:给定一对经纬度坐标,反查其对应的行政区划、街道地址、地标建筑与周边 POI。它是 GPS 轨迹解析、无人机航测、移动设备签到、社交媒体定位的核心技术。

逆地理编码的精度取决于底图数据的详尽程度。在城市中心区域,通常可以精确到道路交叉路口或建筑物名称;在偏远地区,则可能仅返回乡镇级行政区划。高德逆地理编码 API 支持返回 1000 m 范围内的周边 POI 列表,百度则提供语义化地址描述(如"某某大厦东北侧约 50 米")。

🔐 中国坐标系加密机制

出于国家安全考虑,中国境内所有公开地图服务均不允许直接使用 WGS-84 坐标。国家测绘地理信息局制定了 GCJ-02(国测局坐标,俗称"火星坐标"),在 WGS-84 基础上施加非线性偏移。百度地图在此基础上进一步叠加了二次加密,形成 BD-09 坐标。

这种加密机制导致同一实体在不同地图上的坐标存在差异。例如,北京天安门在 WGS-84 下约为 (116.3974, 39.9093),在 GCJ-02 下约为 (116.4039, 39.9152),在 BD-09 下约为 (116.4100, 39.9163)。开发者在进行多源数据融合时,必须首先统一坐标系,否则会出现数十米甚至数百米的定位偏差。

地图服务商使用坐标系坐标来源
Google Maps(全球)WGS-84GPS/卫星定位
Google Maps(中国域)GCJ-02国测局授权
高德地图GCJ-02自采 + 官方授权
腾讯地图GCJ-02自采 + 官方授权
百度地图BD-09自采 + 二次加密
OpenStreetMapWGS-84众包采集

📋 地址结构化标准

高质量的地理编码依赖于结构化的地址文本。中国地址通常遵循"六级地址"规范:国家 → 省/直辖市 → 市 → 区/县 → 街道/乡镇 → 门牌号/POI。例如:"中国·浙江省·杭州市·西湖区·文三路·478号华星时代广场"。

高德地理编码 API 建议的地址格式为:{省}{市}{区}{街道}{门牌号}。若缺少某一级,系统会基于上下文与空间数据库进行智能补全。对于模糊地址(如"杭州西湖"),API 会返回多个候选结果,并附带置信度评分(score),开发者可根据业务场景选择最优匹配。

逆地理编码返回的地址组件通常包含:国家(country)、省(province)、市(city)、区(district)、街道(street)、门牌号(street_number)、兴趣点(poi)、行政区划编码(adcode)等字段,可直接存入关系型数据库或 GIS 空间数据库。

需要更专业的地理数据?

迪卓依思地理图志持续更新中。如果你有特定的数据可视化需求或发现数据错误,欢迎反馈。

返回工具箱 返回地理图志