mcpField
C
cartography-geoviz

cartography-geoviz

github.com/muend设计与 UI3781 次安装2 周前更新
代码仓库

关于 cartography-geoviz

面向地图制作者和数据分析者的制图与地理可视化技能,将地图设计视为分析决策,并要求说明选择依据。它提供从地图类型、分类和色彩到验证与导出的工作流程。

主要功能

  1. 01按数据选择专题地图类型
  2. 02指导分类方法与断点选择
  3. 03提供色彩和投影建议
  4. 04检查图例及缺失数据表达
  5. 05涵盖静态与交互地图导出

适用场景

  1. 01制作出版用静态专题地图
  2. 02比较不同时间或地区的地图
  3. 03展示大型点数据或流动数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/muend/geoai-skills --skill cartography-geoviz

安装后在 Claude Code 中输入/cartography-geoviz确认已加载。

附带文件agents/openai.yamlreferences/authoritative-sources.md

详细介绍

制图与地理可视化

目的:制作能够如实传达信息的地图。制图选择(分级断点、色带、归一化、投影)可能制造或掩盖模式;本技能将这些选择视为需要说明理由的分析决策,而非单纯的样式处理。

首先要问的三个问题

  1. 要传达什么信息? 一张地图只传达一个信息。如果两个变量相互争夺注意力,可以考虑小多图或双变量方案,而不是设置十二个图例类别。
  2. 是否做了归一化? 原始计数的分级统计地图其实是在伪装成人口地图。按面积着色时应使用比率、密度或人均值;原始量值则应使用比例符号。
  3. 静态还是交互式? 印刷/PDF/纸质地图 → matplotlib/QGIS 布局;探索/利益相关方 → Folium/MapLibre;大型点数据 → Kepler.gl/deck.gl(GPU)。

主题地图类型选择

数据地图类型
按多边形统计的比率/比例分级统计地图
按地点统计的数量/量值比例/分级符号
两个相关比率双变量分级统计地图(最多 3×3)
个体级密度点密度图或 KDE 表面(标注带宽)
连续场(栅格)分级或拉伸渲染 + 晕渲背景
流动/OD流向图(宽度∝流量),聚合数据以避免线条缠结
随时间变化用于分析时,小多图优于动画;用于宣传时使用动画

分级——确保诚实表达的关键

  • 自然断点(Jenks):偏态数据的默认选择;断点取决于具体数据,因此不能跨地图/日期比较。
  • 分位数:确保颜色分布均衡;可能会把数值几乎相同的数据分到不同类别。
  • 等间隔:便于比较且直观;遇到偏态数据时效果不佳。
  • 手动/自定义:制作地图系列(所有日期/区域使用相同断点)以及设置领域阈值(WHO 限值、坡度等级)时,唯一正确的选择。
  • 5±2 个类别;在工作流中展示带有断点的直方图;在图注/元数据中注明分级方案。尝试两种方案——如果呈现的故事发生实质变化,那么故事本身就取决于分级方式,必须告知读者。

颜色

  • 使用 ColorBrewer/cmcrameri/viridis 系列的色带:顺序色带(有序数据)、发散色带(有意义的中点——零、均值、阈值)、定性色带(类别,≤ 8 类)。
  • 默认采用色盲友好方案(男性读者中约 8% 有色觉障碍);未经 CVD 模拟器检查,切勿使用红绿发散色带。
  • NoData ≠ 零:使用中性灰渲染,并单独列入图例,绝不要使用色带的最低端颜色。
  • 在主题图层下使用低调的底图(CartoDB Positron)——底图绝不能喧宾夺主。

显示投影

  • Web 瓦片使用 Web Mercator:适用于城市尺度;在大陆尺度使用 Mercator 进行面积比较会造成视觉误导——大范围静态主题地图应使用等面积投影(Albers、Mollweide、Equal Earth)。
  • 全国制图 → 使用国家坐标网;极地制图 → 使用极地立体投影。
  • 出版地图应标注投影。

必备地图要素(出版用静态地图)

标题(传达信息,而非文件名)、图例(标明单位!采用合理的数字格式)、比例尺(仅适用于投影坐标系——度数没有固定比例尺)、指北针(仅在北方不朝上或受众对此有预期时添加)、数据来源 + 日期 + 投影 + 作者,以及用于标示陌生区域位置的定位小地图。

# GeoPandas static map core
ax = gdf.plot(column="rate_per_1k", scheme="naturalbreaks", k=5,
              cmap="YlGnBu", legend=True, edgecolor="white", linewidth=0.3,
              missing_kwds={"color": "#d9d9d9", "label": "No data"})
ax.set_axis_off()

导出:印刷使用 300 dpi PNG/PDF;编辑人员需要修改时使用 SVG;交付 GIS 时使用 COG + 样式。

交互式地图

  • Folium/MapLibre:在提示框中显示格式化数值,提供图层控件,设置合理的初始边界(fit_bounds),并包含图例(Folium 需要手动添加 HTML/branca 图例——发布时绝不能缺少图例)。
  • 性能:矢量要素超过约 50k 时 → 将其切片(tippecanoe → PMTiles),或改用 deck.gl/Kepler;绝不要把 500k 个 GeoJSON 要素全部塞进 Leaflet。
  • 每个弹出窗口中的数值都应格式化(千位分隔符、单位、舍入精度应与数据精度相符)。

验证流程

  1. 缩略图检查:消息在缩略图大小下是否仍清晰可辨?
  2. 通过色觉缺陷模拟检查。
  3. 图例审查:单位、舍入方式、分类边界不得重叠。
  4. 将 3 个要素的渲染值与属性表交叉核对 (分类错误不会显现)。
  5. 对于地图系列:各面板使用相同的断点、色带和范围。

易错点检查清单

  • 使用原始计数制作分级统计图(实质上是在展示人口)。
  • 比较两个日期时使用 Jenks 断点。
  • 使用红绿发散色带,且中点未标注。
  • 将 NoData 渲染为最低等级。
  • 在未投影(以度为单位)的地图上添加比例尺。
  • 使用 Web Mercator 比较大陆面积。
  • 交互式地图没有图例或单位。

执行规范

  • 工作流: 检查受众、数据语义、比例尺和输出媒介;选择投影、标准化方法、分类方法和视觉层级;渲染;验证;导出。
  • 决策规则: 根据分析问题选择地图类型;当暴露量不同时,对计数进行标准化;比较数据时保持断点固定。
  • 验证流程: 执行上述五项检查,并根据来源核对渲染值、单位、分类边界和缺失数据处理方式。
  • 失败模式: 若分母、CRS、单位、无障碍要求或面板间可比性尚未明确,则停止交付或注明限制。
  • 交付物: 最终地图、图例和单位、数据/来源说明、投影和分类依据、无障碍说明,以及可复现的样式或代码。
  • 来源时效性: 使用版本敏感的 API 前,请查阅权威来源注册表,并记录核查日期。

评论

支持 Markdown