https://github.com/zhyt1985/gcoord_skill
A Claude Code skill for converting geographic coordinates between Chinese map coordinate systems (WGS84/GCJ02/BD09/BD09MC/WebMercator)
https://github.com/zhyt1985/gcoord_skill
bd09 chinese-maps claude-code cli-tool coordinate-system gcj02 skill skills wgs84
Last synced: 2 months ago
JSON representation
A Claude Code skill for converting geographic coordinates between Chinese map coordinate systems (WGS84/GCJ02/BD09/BD09MC/WebMercator)
- Host: GitHub
- URL: https://github.com/zhyt1985/gcoord_skill
- Owner: zhyt1985
- License: mit
- Created: 2026-02-17T12:10:18.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-17T15:28:54.000Z (4 months ago)
- Last Synced: 2026-02-17T17:52:03.498Z (4 months ago)
- Topics: bd09, chinese-maps, claude-code, cli-tool, coordinate-system, gcj02, skill, skills, wgs84
- Language: JavaScript
- Homepage:
- Size: 18.6 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Gcoord Skill
一个用于 Claude Code 的地理坐标系转换工具,专门处理中国地图坐标系互转问题。
## 致谢
本项目基于 [hujiulong/gcoord](https://github.com/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/` 目录:
```bash
git clone https://github.com/zhyt1985/gcoord_skill.git ~/.claude/skills/gcoord_skill
cd ~/.claude/skills/gcoord_skill/gcoord
npm install
```
---
## 在 Claude Code 中使用
安装 skill 后,在 Claude Code 中可以直接使用 `/gcoord` 命令或自然语言调用:
### 方式一:使用 /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
# 不会提示,直接转换
```
---
## 命令行使用
### 基本用法
```bash
# 单点坐标转换
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 ` | `-i` | 输入坐标或 GeoJSON 字符串 |
| `--file ` | `-F` | 指定输入文件路径 |
| `--output ` | `-o` | 指定输出文件路径 |
| `--from ` | `-f` | 源坐标系 |
| `--to ` | `-t` | 目标坐标系 |
| `--in-place` | `-I` | 原地转换,覆盖原文件 |
| `--stream` | `-s` | 强制启用流式处理 |
## 使用示例
### 示例 1:转换单点坐标
```bash
node index.js --input "116.403988,39.914266" --from WGS84 --to GCJ02
```
**输出:**
```
转换: WGS84 → GCJ02
结果: 116.410232, 39.915670
```
### 示例 2:转换 GeoJSON 文件
```bash
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
```
### 示例 3:使用中文别名
```bash
# 使用中文别名
node index.js --input "116.403988,39.914266" --from gps --to 高德
# 转换到百度坐标系
node index.js --file data.geojson --from wgs84 --to 百度
```
### 示例 4:批量坐标转换
```bash
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](https://github.com/hujiulong/gcoord) v1.0.7 - 坐标转换核心库
## 测试
```bash
cd gcoord && npm test
```
使用 Node.js 内置 `node:test` 运行,零外部依赖,覆盖单点转换、数组格式、批量转换、GeoJSON、无效坐标系报错、中英文别名、空输入及边界情况。
## 注意事项
1. **坐标系选择**:GPS 设备获取的原始坐标是 WGS84,在中国地图服务上显示需要先转换为 GCJ02(高德/腾讯)或 BD09(百度)
2. **原地转换**:使用 `--in-place` 会直接覆盖原文件,请确保有备份
3. **大文件处理**:文件大于 10MB 时自动启用流式处理以节省内存
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎提交 Issue 和 Pull Request!
## 相关链接
- [gcoord 库](https://github.com/hujiulong/gcoord) - 坐标转换核心算法
- [Claude Code](https://claude.ai/code) - Claude AI 的命令行工具
- [GLM 4.7](https://bigmodel.cn/glm-coding) - 智谱 AI 大语言模型