当前位置:首页>python>硬核 GIS | Python 批量抓取高德 POI:攻克坐标偏移,实现 WGS84 无缝对接!

硬核 GIS | Python 批量抓取高德 POI:攻克坐标偏移,实现 WGS84 无缝对接!

  • 2026-10-11 07:58:28
硬核 GIS | Python 批量抓取高德 POI:攻克坐标偏移,实现 WGS84 无缝对接!

硬核 GIS | Python 批量抓取高德 POI:攻克坐标偏移,实现 WGS84 无缝对接!

文末有代码获取方式,着急的朋友可以直接拉到文末。

一、 为什么要写这个脚本?

起初,我只想快速抓取某个城市的餐厅、学校等 POI 数据。但在实操时踩了个大坑:直接调用高德 API 获取的坐标,放到地图上是错位的!

这就是经典的“坐标系陷阱”:国内地图普遍使用加密的火星坐标系(GCJ-02)。如果直接导入 ArcGIS Pro 与标准底图(WGS-84,如 OSM)叠加,会出现几十甚至上百米的偏差。

大家看下方的图(以“隽水阁”为例):

  • • 🔴 红点(原始高德坐标):直接飘到了马路对面。
  • • 🟢 绿点(转换后坐标):精准贴合真实建筑轮廓。

为了彻底解决这个问题,我在获取数据的脚本中直接内置了坐标转换算法。用这个脚本,批量抓取 POI 与坐标纠偏,一步到位!今天分享的脚本,重点就在于抓取的同时完成坐标纠偏。


二、 核心秘籍:坐标转换逻辑

为了解决偏移,我封装了一个 CoordinateConverter 类。它能将高德的加密坐标逆向还原为全球通用的 WGS84 坐标。

关键代码片段:

# utils.py 核心算法def gcj02_to_wgs84(self, lng, lat):    dlat = self._transformlat(lng - 105.0, lat - 35.0)    dlng = self._transformlng(lng - 105.0, lat - 35.0)    radlat = lat / 180.0 * self.pi    # ... (中间省略复杂的三角函数计算)    mglat = lat + dlat    mglng = lng + dlng    # 最终输出 WGS-84 坐标,精准对接 ArcGIS Pro    return [lng * 2 - mglng, lat * 2 - mglat]

三、 爬取与转换一体化

有了转换器,我们就可以编写主程序进行数据请求了。这里我们以“餐饮美食”为例。

关键爬取逻辑:

def fetch_and_convert(api_key):    params = {        "key": api_key,        "types": "050000",  # 餐饮类代码        "city": "330106",   # 目标区域行政区号        "offset": 20,        "page": page    }    response = requests.get(url, params=params)    # ... 获取数据后立即调用转换    lng_wgs, lat_wgs = converter.gcj02_to_wgs84(lng_gcj, lat_gcj)    all_data.append({        "name": poi['name'],        "wgs_lng": lng_wgs, # 转换后的经度        "wgs_lat": lat_wgs  # 转换后的纬度    })

四、 高德 API 能获取哪些 POI?

除了美食,修改代码中的 types 参数,你还可以获取:

POI 类型
类型代码 (types)
美食餐饮050000
风景名胜110000
医疗保健090000
生活服务070000
交通设施150000

五、 快速上手指南

  1. 1. 申请 Key:前往高德开放平台(https://lbs.amap.com/),注册登录后,首页“控制台”—“应用管理”—“创建新应用”申请“Web 服务”类型的 API Key。
  1. 3. 配置虚拟环境:需安装 requests 和 pandas 库。
  2. 4. 运行脚本:填入 Key 后运行,数据将自动保存为 CSV。
  3. 5. ArcGIS 预览:将 CSV 拖入 ArcGIS Pro,使用“XY 绑定表”功能,坐标系务必选 GCS_WGS_1984。

结语

掌握了坐标转换,你的 POI 数据才真正具备了空间分析的价值。不再为几十米的偏移发愁,让数据真正精准落地。

想要获取完整 Python 脚本(含坐标转换库 utils.py 及完整爬取代码)?欢迎在公众号后台留言:AMAP点

最新文章

随机文章