为 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!

相关推荐
昵称为空C7 小时前
spring-ai mcp-server(ssh工具)
后端·ai编程
Mintopia9 小时前
OpenClaw在日常开发中的应用实践与全场景解析
人工智能·openai·ai编程
streaker30310 小时前
多 IDE/Agent 环境下的 Skill 管理方案
前端·javascript·ai编程
择势10 小时前
Claude Code 相关安装及代理配置参考
claude
OpenTiny社区10 小时前
以界面重构文字,GenUI 正式发布!
前端·vue.js·ai编程
javaTodo10 小时前
Claude Code /loop 无限循环:一台电脑即可化身无数自主 Agent
claude
dossweet11 小时前
我写了一个 Skill,实现了人 + AI + 工程三方受益的增长飞轮
架构·aigc·ai编程
gyx_这个杀手不太冷静11 小时前
OpenCode 进阶使用指南(第二章:Skills 系统)
前端·ai编程
恋猫de小郭12 小时前
你还用 IDE 吗? AI 狂欢时代下 Cursor 慌了, JetBrains 等 IDE 的未来是什么?
前端·flutter·ai编程
字节架构前端1 天前
Skill再回首—深度解读Anthropic官方最新Skill白皮书
人工智能·agent·ai编程