为 Claude Code 开发自定义 Skill:解决中国地图坐标系转换痛点

为 Claude Code 开发自定义 Skill:解决中国地图坐标系转换痛点

作为一个开发者,你一定遇到过这样的困扰:GPS 设备拿到的坐标放到百度地图上显示,位置总是偏了几百米。这不是你的代码有问题,而是"火星坐标系"在作祟。

前言:坐标系混乱的痛点

在使用地图服务时,我们面临着复杂的坐标系环境:

  • WGS84:GPS 设备原始坐标,国际标准
  • GCJ02:高德、腾讯地图使用的"火星坐标系"
  • BD09:百度地图独有的坐标系
  • WebMercator:Web 地图常用的投影坐标系

这些坐标系之间的转换一直是开发者的痛点。直到我发现了 gcoord 这个优秀的坐标转换库,并基于它开发了 Claude Code Skill,让坐标转换变得前所未有的简单。

什么是 Claude Code Skill?

Claude Code 是 Anthropic 推出的 AI 命令行工具,而 Skill 是它的自定义功能扩展机制。通过编写 Skill,我们可以让 Claude 理解特定的任务并执行相应的命令。

我开发的 gcoord skill 正是这样一款工具,它可以:

  • ✅ 支持 5 种主流坐标系互转
  • ✅ 支持单点坐标、GeoJSON 文件批量转换
  • ✅ 智能推断用户的坐标系选择
  • ✅ 支持中文自然语言调用

核心功能展示

1. 交互式坐标系选择

最让我自豪的功能是交互式参数选择。当用户没有明确指定坐标系时,Claude 会智能提示用户选择,而不是直接使用默认值。

ini 复制代码
用户: 帮我转换 116.403988,39.914266

Claude: 请选择源坐标系(您当前的坐标使用什么坐标系?)
       [WGS84 (GPS)] [GCJ02 (高德/腾讯)] [BD09 (百度)] ...

Claude: 请选择目标坐标系(您要转换到哪个坐标系?)
       [WGS84 (GPS)] [GCJ02 (高德/腾讯)] [BD09 (百度)] ...

结果: 116.410232, 39.915670

2. 自然语言理解

Skill 内置了自然语言识别模式,可以从用户的描述中推断坐标系:

bash 复制代码
# 明确指定
GPS转高德: 116.403988,39.914266

# 上下文推断
把坐标转成百度坐标系

# 文件转换
把 @data.geojson 转成高德坐标

技术实现要点

Skill 文件结构

bash 复制代码
gcoord/
├── SKILL.md         # Skill 定义文件
├── index.js         # 核心转换逻辑
├── package.json     # 依赖管理
└── test/           # 测试文件

SKILL.md 的关键设计

SKILL.md 是 Claude 理解任务的核心文档,我采用了以下结构:

markdown 复制代码
---
name: gcoord
description: Use when converting coordinates between...
---

# Gcoord - 地理坐标系转换

## When to Use
## Coordinate Systems Reference
## Usage Examples
## Interactive Parameter Selection  ← 核心创新
## Implementation
## Common Mistakes

最关键的亮点Interactive Parameter Selection 章节,它告诉 Claude:

  1. 何时应该询问用户(优先级判断)
  2. 如何使用 AskUserQuestion 工具
  3. 如何从自然语言推断坐标系

交互式问答的 Prompt 设计

markdown 复制代码
### Question Format

当需要询问坐标系时,使用以下格式:

AskUserQuestion({
  questions: [{
    question: "请选择源坐标系(您当前的坐标使用什么坐标系?)",
    header: "源坐标系",
    multiSelect: false,
    options: [
      {
        label: "WGS84 (GPS)",
        description: "GPS 设备原始坐标,地球坐标"
      },
      // ...
    ]
  }]
})

这种结构化的指令让 Claude 能够准确理解如何与用户交互。

坐标系别名映射

为了支持中文自然语言,我在 index.js 中实现了别名映射:

javascript 复制代码
const CRS_ALIAS = {
  'wgs84': 'WGS84',
  'gps': 'WGS84',
  '地球坐标': 'WGS84',

  'gcj02': 'GCJ02',
  '高德': 'GCJ02',
  'amap': 'GCJ02',
  '腾讯': 'GCJ02',
  '火星坐标': 'GCJ02',

  'bd09': 'BD09',
  '百度': 'BD09',
  'baidu': 'BD09',
  // ...
};

这样用户可以随意说"高德"、"腾讯"、"火星坐标",都能正确识别为 GCJ02。

安装和使用

安装步骤

bash 复制代码
# 克隆仓库
git clone https://github.com/zhyt1985/gcoord_skill.git \
  ~/.claude/skills/gcoord_skill

# 安装依赖
cd ~/.claude/skills/gcoord_skill/gcoord
npm install

在 Claude Code 中使用

安装完成后,直接在 Claude Code 中使用:

bash 复制代码
# 命令行方式
/gcoord 116.403988,39.914266 --from wgs84 --to gcj02

# 自然语言方式
帮我把这个坐标转换成高德坐标系
GPS 坐标转百度地图

开源贡献

这个项目完全开源,基于以下技术栈:

  • gcoord - 核心坐标转换库
  • Claude Code - AI 命令行工具
  • Node.js - 运行时环境

GitHub 仓库 : github.com/zhyt1985/gc...

欢迎:

  • 🐛 报告 Bug
  • 💡 提出新功能建议
  • 🔧 提交 Pull Request
  • 📝 改进文档

总结

通过开发这个 Skill,我深刻体会到了 AI 辅助编程的强大。Claude Code 不仅能理解自然语言指令,还能通过 Skill 机制扩展能力,真正实现了"所想即所得"。

坐标转换只是冰山一角,Skill 机制有无限可能。我期待看到更多开发者加入,一起探索 AI 与编程结合的更多可能性。

如果你在开发中有坐标系转换的需求,不妨试试这个 Skill。如果有任何问题或建议,欢迎在 GitHub 上留言交流!


相关链接:

如果这篇文章对你有帮助,欢迎给个 ⭐️ Star!

相关推荐
老赵全栈实战3 小时前
《从零搭建RAG系统第4天:问题向量化+Milvus检索匹配+结果优化》
python·ai编程
黑巧克力可减脂5 小时前
Vibe Coding技术方案选型:循道而行,择善而用——从古典智慧看AI编程范式的选型之道
人工智能·语言模型·软件工程·ai编程
GuokLiu5 小时前
260216-Claude Code 快速入门指南及示例
claude·claudecode
x-cmd5 小时前
[特殊字符] 新年新气象|x-cmd v0.8.3:Apache 2.0、Minimax M2.5、Claude Code 一键切换
ai·apache·agent·claude·x-cmd·minimax
ZaneAI7 小时前
🚀 Claude Agent SDK 使用指南:流式 vs 单次消息模式 (Streaming vs Single Mode)
langchain·agent·claude
Jing_Rainbow7 小时前
【AI-27 React-13/Lesson98(2026-01-07)】Ollama 本地大模型部署与前端集成指南🤖
aigc·openai·ai编程
ZaneAI7 小时前
🚀 Claude Agent SDK 使用指南:概述
python·agent·claude
刘贺同学7 小时前
Day07-龙虾哥打工日记:Cron 任务没按时执行?从翻车到搞懂 OpenClaw 定时任务
aigc·ai编程
LadyKaka2268 小时前
OpenViking 实战:在 Claude Code 和 GLM 之间实现跨模型上下文共享
ai·ai编程