一个用于 Claude Code 的地理坐标系转换工具,专门处理中国地图坐标系互转问题。
本项目基于 hujiulong/gcoord 开发,向原作者 hujiulong 致敬!感谢他提供了优秀的坐标转换核心算法库,让处理坐标系问题变得简单。
本项目使用以下工具开发:
- Claude Code - Anthropic 的 AI 命令行工具
- GLM 4.7 - 智谱 AI 提供的大语言模型
- 🔄 多坐标系支持:WGS84 / GCJ02 / BD09 / BD09MC / WebMercator
- 📄 文件操作:支持读取 GeoJSON 文件并进行批量转换
- 🚀 大文件处理:自动使用流式处理,支持超过 10MB 的大型文件
- 📊 进度显示:实时显示转换进度,便于监控大批量数据处理
- 💬 自然语言:支持中英文自然语言指令调用
- 🌏 坐标系别名:支持
高德、百度、GPS等中文别名
| 代码 | 中文名称 | 适用平台 | 别名 |
|---|---|---|---|
| WGS84 | 地球坐标系 | GPS 原始坐标 | gps, 地球坐标 |
| GCJ02 | 火星坐标系 | 高德、腾讯地图 | 高德, amap, 腾讯, 火星坐标 |
| BD09 | 百度坐标系 | 百度地图 | 百度, baidu, bmap |
| BD09MC | 百度米制坐标 | 百度地图米制 | 百度米制 |
| WebMercator | 墨卡托投影 | Web 地图 | 墨卡托, epsg3857 |
将此 skill 安装到 ~/.claude/skills/gcoord/ 目录:
git clone https://github.com/zhyt1985/gcoord_skill.git ~/.claude/skills/gcoord_skill
cd ~/.claude/skills/gcoord_skill/gcoord
npm install安装 skill 后,在 Claude Code 中可以直接使用 /gcoord 命令或自然语言调用:
/gcoord 116.403988,39.914266 --from wgs84 --to gcj02
# 单点坐标转换
帮我把 116.403988,39.914266 转成高德坐标
# 文件转换
把 @data.geojson 转成百度坐标系
# 坐标系互转
WGS84 转 GCJ02: [116.403988, 39.914266]
# 转换并指定输出文件
把 data.geojson 转成高德坐标,输出为 result.geojson
| 模式 | 示例 |
|---|---|
| "转成/转换为/转到" | 转成高德坐标 |
| "在...地图显示" | 在百度地图上显示 |
| "...坐标转..." | GPS坐标转百度 |
| "帮我转换/帮我转" | 帮我转换成火星坐标 |
当您未指定坐标系参数时,Claude Code 会智能提示您选择:
场景 1: 未指定任何坐标系
帮我转换 116.403988,39.914266
# Claude 会提示选择坐标系
场景 2: 从上下文推断
把 116.403988,39.914266 在百度地图上显示
# Claude 只会询问源坐标系(目标已明确为百度)
场景 3: 明确指定参数
/gcoord 116.403988,39.914266 --from WGS84 --to GCJ02
# 不会提示,直接转换
# 单点坐标转换
node index.js --input "116.403988,39.914266" --from WGS84 --to GCJ02
# GeoJSON 字符串转换
node index.js --input '{"type":"Point","coordinates":[116.403988,39.914266]}' --from WGS84 --to BD09
# 文件转换
node index.js --file data.geojson --from WGS84 --to GCJ02 --output result.geojson
# 原地转换(覆盖原文件)
node index.js --file data.geojson --from WGS84 --to GCJ02 --in-place
# 大文件流式处理
node index.js --file large-data.geojson --from WGS84 --to GCJ02 --stream| 参数 | 简写 | 说明 |
|---|---|---|
--input <string> |
-i |
输入坐标或 GeoJSON 字符串 |
--file <path> |
-F |
指定输入文件路径 |
--output <path> |
-o |
指定输出文件路径 |
--from <crs> |
-f |
源坐标系 |
--to <crs> |
-t |
目标坐标系 |
--in-place |
-I |
原地转换,覆盖原文件 |
--stream |
-s |
强制启用流式处理 |
node index.js --input "116.403988,39.914266" --from WGS84 --to GCJ02输出:
转换: WGS84 → GCJ02
结果: 116.410232, 39.915670
node index.js --file beijing-poi.geojson --from WGS84 --to GCJ02 --output beijing-poi-gcj02.geojson输出:
文件: beijing-poi.geojson
大小: 0.83 MB
转换: WGS84 → GCJ02
处理中...
[██████████████████████████████] 100.0% (853/853) ETA: 0.0s
✓ 已保存到: beijing-poi-gcj02.geojson
# 使用中文别名
node index.js --input "116.403988,39.914266" --from gps --to 高德
# 转换到百度坐标系
node index.js --file data.geojson --from wgs84 --to 百度node index.js --input "116.403988,39.914266
121.499763,31.239586" --from WGS84 --to GCJ02输出:
转换: WGS84 → GCJ02
结果: 116.41023240747266, 39.915670251113426
121.50419587831874, 31.237572062731754
- 单点坐标:
116.403988,39.914266 - 坐标数组:
[116.403988, 39.914266] - 批量坐标:多行文本,每行一个坐标
- GeoJSON 字符串:
{ "type": "Point", "coordinates": [...] } - GeoJSON 文件:通过
--file参数指定
- gcoord v1.0.7 - 坐标转换核心库
cd gcoord && npm test使用 Node.js 内置 node:test 运行,零外部依赖,覆盖单点转换、数组格式、批量转换、GeoJSON、无效坐标系报错、中英文别名、空输入及边界情况。
- 坐标系选择:GPS 设备获取的原始坐标是 WGS84,在中国地图服务上显示需要先转换为 GCJ02(高德/腾讯)或 BD09(百度)
- 原地转换:使用
--in-place会直接覆盖原文件,请确保有备份 - 大文件处理:文件大于 10MB 时自动启用流式处理以节省内存
MIT License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
- gcoord 库 - 坐标转换核心算法
- Claude Code - Claude AI 的命令行工具
- GLM 4.7 - 智谱 AI 大语言模型