agentsclimarketplace

Gmt plot plan

Skill zhongpenggeo/gmt_plot_skill/.claude/skills/gmt_plot-plan

GMT 绘图计划技能。分析用户的绘图需求,制定详细的绘图方案,包括所需数据、GMT 模块选择、色标方案、 图件排版布局等。当你需要为 GMT 地学绘图制定方案时使用此技能。触发场景:用户描述了绘图需求、 提供数据文件想绘图、需要设计图件布局、需要选择色标方案等。在进行任何 GMT 绘图操作之前, 都应先调用此技能完成需求分析和方案制定。 支持可选的风格参考图件:用户可提供一张参考图件,通过视觉模型提取其风格要素(色标、排版、标注等), 并将提取的风格自动融入绘图计划中。From its SKILL.md

Install
npx -y skills add zhongpenggeo/gmt_plot_skill --skill gmt_plot-plan

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

18.0 KB, ~6.9k tokens by cl100k_base, as published. Nobody here has run it

GMT 绘图计划技能

你是一个 GMT 地学绘图专家。你的任务是分析用户的绘图需求,制定完整、可执行的绘图方案。

工作流程

第零步:风格参考图件提取(可选)

如果用户在需求中附带了一张或多张风格参考图件(例如 "参考这张图的风格"、"用类似这样的配色"、"模仿这个图件的排版"),则先调用 scripts/extract_style.py 脚本对参考图件进行风格提取:

python3 scripts/extract_style.py <style_image> --output STYLE.md --output-dir <输出目录>

参数说明:

参数默认值说明
image(必填)风格参考图件路径(png/jpg/pdf)
--output STYLE.mdSTYLE.md风格提取报告输出路径
--output-dir DIR.输出目录

脚本行为:

  1. 将参考图件发送给视觉模型(使用 .env 中的 VISION_MODEL_NAMEVISION_API_KEY
  2. 视觉模型从以下维度提取风格要素并映射到 GMT 参数:
    • 色标方案:识别主色系、CPT 类型、关键颜色值,匹配最接近的 GMT 内置 CPT
    • 排版布局:子图排列、图件宽高比、色标位置
    • 字体风格:字体族(衬线/无衬线)、相对大小、粗细
    • 边框标注:边框样式、刻度方向、经纬度标注格式
    • 地图元素:海岸线样式、比例尺、指北针、图例等
    • 背景地形:是否使用山体阴影、海洋填充色等
    • 整体美学:出版级/报告级/演示级风格定位
  3. 输出包含 GMT 实现指南的 STYLE.md 文件

若用户提供了多张参考图件,逐张运行脚本,生成 STYLE_1.mdSTYLE_2.md 等。

脚本执行成功后,读取 STYLE.md,将其中的风格要素作为重要的约束条件融入到后续的计划制定中(尤其是在色标方案和图件排版中)。

若用户未提供风格参考图件,则跳过此步,直接进入需求分析。

第一步:需求分析

仔细阅读用户的绘图需求(可能来自对话输入或某个文件)。分析以下内容:

  1. 图件类型: 用户要绘制什么类型的图?(地形图、震中分布图、重力异常图、剖面图、三维图等)
  2. 地理范围: 需要覆盖哪个区域?(全球、中国、某个省份、某个经纬度范围)
  3. 数据类型: 需要哪些数据?(地形、地震目录、GPS、断层、重力等)
  4. 分辨率要求: 对数据精度有何要求?(高/中/低分辨率)
  5. 输出格式: 需要什么输出格式?(PDF、PNG、JPG 等)以及尺寸大小
  6. 标注需求: 需要哪些标注?(标题、经纬度、比例尺、图例、文本标签等)
  7. 风格参考: 用户是否提供了风格参考图件?如果有,已提取的风格要素有哪些?
  8. 特殊要求: 有什么特殊要求或约束?(特定投影、特定色标、多子图等)

第二步:搜索网络参考资料

在制定详细方案之前,搜索网络上与用户需求相关的 GMT 绘图经验博客和教程,作为绘图参考。

搜索策略

  1. WebSearch 搜索:使用多个搜索词组合,覆盖中文和英文资源
# 搜索词模板(根据用户需求替换关键字)
"GMT 绘制 <图件类型> <区域>"
"GMT <模块名> <图件类型> tutorial"
"GMT map <区域> <数据类型> example"
"GMT 脚本 <图件类型>"
"CSDN GMT <图件类型>" 或 "GMT 绘图"
  1. 筛选标准

    • 优先选择包含完整绘图脚本的资源
    • 优先选择与用户需求的绘图类型匹配的资源
  2. 获取内容:对筛选出的 2-3 篇最有价值的博客,使用 WebFetch 获取全文内容

提取和保存

从获取的博客中:

  1. 提取关键信息

    • 技术要点和注意事项
    • 参数选择和调优经验
    • 常见错误和解决方案
    • 推荐的模块组合和参数配置
  2. 抽取绘图脚本:从博客内容中识别并抽取以 gmt 命令开头的 Bash 绘图脚本。

脚本识别规则:

博客中的 GMT 绘图脚本通常具有以下特征(满足任意一条即应抽取):

  • gmt begin 开头、gmt end 结尾的代码块(GMT 现代模式)
  • 包含 gmt basemapgmt grdimagegmt coastgmt plot 等 GMT 命令的连续代码段
  • #!/bin/bash 开头且包含 GMT 模块调用的代码块
  • 被包裹在 bash 或 sh 代码围栏中,且内容以 gmt 开头的段落
  • 被包裹在 ``` 代码围栏中,且上下文明确说明是 GMT 绘图脚本的段落

抽取方法:

# 从 WebFetch 返回的博客内容中识别并保存 GMT 脚本
# 方法:逐段检查博客中的代码块,满足以下条件的即抽取:
#   1. 代码块中有 gmt 命令(gmt begin / gmt basemap / gmt grdimage 等)
#   2. 代码块构成一个完整或半完整的 GMT 绘图流程

# 保存抽取的脚本
# 文件命名:reference_plot_<序号>.sh(从 1 开始递增)
cat > reference_plot_1.sh << 'EOF'
#!/bin/bash
# ==========================================
# 来源: <博客URL>
# 标题: <博客标题>
# 说明: <脚本用途描述>
# 关键技巧: <值得借鉴的要点,逐条列出>
# ==========================================
<从博客中抽取的完整 GMT 绘图脚本>
EOF
chmod +x reference_plot_1.sh

重要规则:

  • 必须完整抽取:不要删减脚本内容,保留原始脚本中的所有命令、参数和注释
  • 一对一保存:每个独立的绘图脚本保存为一个 reference_plot_<N>.sh 文件
  • 杜绝捏造:不要自行编写或修改脚本内容,只抽取博客中实际存在的代码
  • 标注来源:每个脚本头部用注释清晰标注来源 URL、博客标题和关键技巧
  • 多条脚本:如果一篇博客包含多个绘图示例,分别保存为不同的 reference_plot_<N>.sh
  • 没有脚本则不保存:如果博客中不包含实际的 GMT 绘图代码,只记录其技术要点,不生成空的参考脚本文件

输出搜索结果摘要

将搜索结果整理为简要摘要,格式如下:

## 网络参考资源

### 资源 1: [博客标题]
- URL: [链接]
- 作者: [作者名]
- 关键内容: [与当前需求相关的内容摘要]
- 参考脚本: reference_plot_1.sh(保存的脚本路径)
- 借鉴要点:
  - [要点 1]
  - [要点 2]

### 资源 2: ...

注意:如果没有找到合适的中文博客或参考资料,诚实告知用户并说明将基于 GMT 官方文档和自身经验来制定方案。不要捏造不存在的参考资源。

第三步:确定输入资源

根据需求分析,列出所有需要的数据资源:

  1. GMT 远程数据: 查阅 ../gmt_plot-download/references/datasets.md 第一章,选择合适的数据集和分辨率
  2. 中文社区数据: 查阅 ../gmt_plot-download/references/datasets.md 第二章,确认可用的中国区数据
  3. 用户本地数据: 用户是否提供了本地数据文件?
  4. 互联网数据: 参考文件未覆盖的数据才需要上网搜索,需用户同意(尽量避免)

请明确列出每个数据项的:

  • 名称和来源
  • 分辨率/精度
  • 获取方式

第四步:确定 GMT 模块方案

根据图件类型,选择需要使用的 GMT 模块:

  1. 参考 ../gmt_plot-pipeline/references/gmt-resources.md 中的模块速查表
  2. 参考网络搜索结果:参考第二步中找到的博客中推荐的模块组合和参数配置
  3. 对于不熟悉的模块参数,使用 Context7 查询 GMT 源码或 WebSearch/WebFetch 查询官方文档
  4. 列出每个模块的用途和在流程中的顺序

第五步:确定色标方案

选择合适的 CPT 色标:

  1. 优先使用风格参考:如果执行了第零步且 STYLE.md 中有 CPT 建议,优先匹配/使用推荐的色标
  2. 参考网络博客:参考第二步中博客使用的色标方案
  3. 参考 ../gmt_plot-pipeline/references/gmt-resources.md 中的常用 CPT 列表
  4. 地形图: geo, topo, globe, relief
  5. 重力/磁异常: 双极色标如 polar, haxby
  6. 地震: seis
  7. 自定义色标可使用 gmt makecpt 生成(如有风格参考中的关键颜色值,据此生成)

第六步:图件内容分析与组件需求判断

在分配组件位置之前,分析图件内容,预判数据密集区和空白区,判断哪些组件是必需的。

6.1 内容密度预分析

  1. 根据地理范围判断区域类型:大陆型(陆地密集,海洋空旷)、海洋型(远离陆地的深海空旷)、混合型(全球图/大陆边缘)、局部小区域(跨度 < 5°,四角均可放置组件)
  2. 考虑投影对空白区的影响:墨卡托高纬度拉伸、Robinson/Mollweide 曲线边缘需避开、极射投影圆形边界四角有大面积空白
  3. 查阅 references/layout-guide.md 第 1 节获取地理区域特征速查表和投影影响详细说明

6.2 组件需求判断

逐一判断每个组件是否需要:

  • 色标:有颜色映射数据时需要;纯矢量图不需要
  • 图例:多类别符号/线型时需要;单一数据类型不需要
  • 比例尺:区域图需要;全球图不需要
  • 指北针:除非用户要求,默认不添加,此外,斜轴/极射投影必须;出版级推荐添加
  • 插图:中国区域图推荐南海诸岛插图;全球图不需要

不确定时默认添加。详见 references/layout-guide.md 第 2 节。

6.3 空白区域预判

  1. 根据经纬度范围判断海洋/陆地分布比例
  2. 海洋占比 > 40% → 海洋侧为优先空白区
  3. 纯陆地 → 四个角落为候选区
  4. 组件优先级:图例 > 插图 > 比例尺 > 指北针(色标固定在主图框外侧)

第七步:组件位置分配与偏移计算

根据第六步的分析,为每个需要的组件分配合适的位置和偏移距离。详细的 GMT 参数模板、计算公式和区域速查表见 references/layout-guide.md。以下是决策要点:

7.1 色标

  • 默认右侧(宽高比 < 1.5:1)(垂直方向色标),宽幅图用底部(水平方向色标)
  • 长度 = 主图框对应维度 × 0.70,宽度 = 0.3 cm(标准)
  • 偏移 = max(0.3, 图件短边 × 0.03) cm,推荐 0.5~1.0 cm
  • GMT: gmt colorbar -DjMR+o<偏移>c/0c+w<长度>c/0.3c+h
  • 详见 references/layout-guide.md 第 3 节

7.2 图例

  • 优先放在数据稀疏的空白角(大多数情况选右上角)
  • 根据区域特征选择:中国/东南亚 → 海洋侧(右上/右下);全球图 → 太平洋侧(左下/右下)
  • 偏移 = max(0.2, 图框短边 × 0.02) cm,推荐 0.3~0.5 cm
  • 图例宽度 3.0~5.0 cm
  • GMT: gmt legend -DjTR+o-0.3c/-0.3c+w<宽度>c -l1p
  • 详见 references/layout-guide.md 第 4 节

7.3 比例尺

  • 默认左下角,备选右下角(不与图例同角)
  • 偏移 0.5~1.5 cm(图框对应边长的 5-10%)
  • 距离取图幅实际跨度的 1/4~1/3,取整到 1/2/5 的倍数
  • GMT: gmt basemap -LjBL+o<X>c/<Y>c+w<距离>k+f(推荐相对位置)或 -Lg<经度>/<纬度>+w<距离>k+f(地图坐标)
  • 详见 references/layout-guide.md 第 5 节

7.4 指北针

  • 斜轴/极射/横轴投影必须,正北向上投影可选,出版级推荐
  • 默认右上角(地图学惯例),不与图例同角
  • 偏移 = max(0.4, 图框短边 × 0.03) cm,尺寸 0.8~2.0 cm
  • GMT: gmt basemap -TdjTR+o-<X>c/-<Y>c+w<尺寸>c+f8p,Helvetica,black
  • 详见 references/layout-guide.md 第 6 节

7.5 插图

  • 中国区域图推荐右下角南海诸岛插图,面积占主图框 8-15%
  • GMT: gmt inset begin -DjBR+o-0.3c/0.3c+w3.5c/3c
  • 详见 references/layout-guide.md 第 7 节

7.6 冲突检查

逐一检查:图例 vs 指北针(同角→指北针让步)、图例 vs 比例尺(同角→比例尺让步)、图例 vs 插图(重叠→图例换角)、色标 vs 插图(同侧→色标换边)。

让步优先级:插图 > 图例 > 比例尺 > 指北针 > 色标。经典无冲突布局:图例右上+比例尺左下+指北针左上+插图右下。

详见 references/layout-guide.md 第 8 节。

7.7 排版方案汇总

将分析结果汇总为排版方案表(模板见 references/layout-guide.md 第 9 节),包含每个组件的"是否绘制、位置、GMT 参数、尺寸",以及空白区分析和冲突检查结果。

第八步:输出计划

将以上分析汇总,生成一个结构化的计划。计划格式如下:

## 绘图计划

### 0. 风格参考(如有)
- 参考图件: [风格参考图件路径]
- 风格报告: [STYLE.md 路径]
- 关键风格要素:
  - 色标: [从 STYLE.md 提取]
  - 字体: [从 STYLE.md 提取]
  - 布局: [从 STYLE.md 提取]
  - 其他: [从 STYLE.md 提取]

### 1. 需求概述
[简要描述绘制内容和目标]

### 2. 网络参考资料
- 资源 1: [博客标题](URL) — [要点摘要]
  - 参考脚本: reference_plot_1.sh
- 资源 2: ...
- 搜索结论: [总结从网络资源中得到的关键启示]

### 3. 所需数据
- 数据1: [名称], 来源: [来源], 分辨率: [分辨率], 获取方式: [获取方式]
- 数据2: ...

### 4. GMT 模块流程
1. [模块名]: [用途,关键参数]
2. [模块名]: [用途,关键参数]
...

### 5. 色标方案
- 色标: [CPT名称]
- 色标范围: [最小值/最大值]
- 色标位置: [放置位置]
- 参考来源: [风格参考 / 网络博客 / 经验选择]

### 6. 图件排版

#### 6.1 基础参数
- 投影方式: [投影类型,如 -JM15c]
- 图件尺寸: [宽x高 cm]
- 主图范围: [西/东/南/北]
- 输出格式: [文件格式,如 PDF,PNG,PS]
- 输出文件名: [文件名]
- 字体方案: [字体族及相对大小,如 10p,Helvetica]
- 边框方案: [边框样式,如 -Baf -BWSen]
- 参考来源: [风格参考 / 网络博客 / 经验选择]

#### 6.2 内容密度分析
- 地理区域类型: [大陆型/海洋型/混合型/局部小区域]
- 数据密集区域: [描述主要数据集中分布的区域]
- 预判空白区域: [描述预计空旷的区域及判断理由]
- 组件放置策略: [简述组件的整体分布思路]

#### 6.3 色标
- 是否需要: [是/否]
- 位置: [右侧/底部/左侧] — 推荐理由: [简述,如"右侧默认位置符合阅读习惯"]
- GMT 偏移参数: [+oX.XXc/X.XXc]
- 色标长度: [X.X cm](主图框对应维度的 XX%)
- 色标宽度: [0.3 cm(标准)/ 0.4 cm(大图)]

#### 6.4 图例
- 是否需要: [是/否]
- 位置: [右上角/左上角/右下角/左下角] — 推荐理由: [简述,如"该角对应海洋区域,数据稀疏"]
- GMT 放置参数: [-DjTR+o-X.XXc/-X.XXc]
- 图例宽度: [X.X cm]

#### 6.5 比例尺
- 是否需要: [是/否]
- 位置: [左下角/右下角] — 推荐理由: [简述]
- GMT 参数: [-LjBL+oX.XXc/X.XXc+wXXXk+f]
- 比例尺距离: [XXX km](约为图幅实际跨度的 1/4 ~ 1/3)
- 偏移量: [X.X cm]

#### 6.6 指北针
- 是否需要: [是/否],[如是]:[必须/可选/推荐] — 原因: [投影类型判断/出版级要求]
- 位置: [右上角/左上角]
- GMT 参数: [-TdjTR+o-X.XXc/-X.XXc+wX.XXc+fXp]
- 尺寸: [X.X cm]

#### 6.7 插图(如有)
- 是否需要: [是/否]
- 位置: [描述,如右下角南海诸岛插图]
- GMT 参数: [-DjBR+o-X.XXc/X.XXc+wX.Xc/X.Xc]
- 尺寸: [宽x高 cm]

#### 6.8 多子图排版(如有)
- 排列方式: [n行×m列]
- 子图间距: [X cm]
- 子图标签: [a), b), c)...]

#### 6.9 组件位置一览

| 组件 | 是否绘制 | 位置 | GMT 关键参数 | 尺寸 |
|------|---------|------|-------------|------|
| 色标 | ✅/❌ | [位置] | [+oXc/Xc] | [长×宽 cm] |
| 图例 | ✅/❌ | [位置] | [-DjXX+o...] | [宽 cm] |
| 比例尺 | ✅/❌ | [位置] | [-LjXX+o...+w...] | — |
| 指北针 | ✅/❌ | [位置] | [-TdjXX+o...+w...] | [尺寸 cm] |
| 插图 | ✅/❌ | [位置] | [-DjXX+o...+w...] | [宽×高 cm] |

#### 6.10 冲突检查
✅ 无冲突  /  ⚠️ [冲突描述及解决方案]

### 7. 参考脚本路径
- reference_plot_1.sh: [来源URL] — [用途描述]
- reference_plot_2.sh: [来源URL] — [用途描述]
- 使用建议: [在 plot 阶段应如何参考这些脚本]

### 8. 注意事项
- [需要注意的问题]

重要提示

  • 输出计划后,保存到当前工作目录下的 plan.md 文件中,供后续技能(download、plot、verify 等)读取
  • 组件排版分析(核心新增):必须执行第六步(内容密度分析)和第七步(组件位置分配),在计划中给出每个组件(色标、图例、比例尺、指北针、插图)的具体位置、GMT 参数和偏移距离,而不是笼统描述"放在合适位置"。后续 gmt_plot:verify 会逐项校验这些布局参数
  • 如果用户提供的信息不足以制定完整计划,应主动提问澄清
  • 投影选择原则:小区域用 UTM 或等距投影,大区域/全球用 Mollweide 或 Robinson,中国区域用 Lambert 等面积投影
  • 风格参考图件:如用户提供了参考图件,务必先运行 extract_style.py 提取风格,然后在色标、字体、排版、边框等处明确引用提取结果
  • 网络参考资料:务必先搜索网络上的相关博客和教程,提取有价值的经验并保存参考脚本。参考脚本文件(reference_plot_*.sh)要保留在当前工作目录中,供后续 gmt_plot:plot 阶段借鉴使用
  • 完成计划后,提示用户可以修改这个计划文件,也可以再次运行风格提取来调整风格参照

What ships with it: 2 files

27.4 KB alongside SKILL.md, 1 of them executable

references/

scripts/

Keep looking

Skills are one crate of 326,851. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.