关于 cartography-geoviz
面向地图制作者和数据分析者的制图与地理可视化技能,将地图设计视为分析决策,并要求说明选择依据。它提供从地图类型、分类和色彩到验证与导出的工作流程。
主要功能
- 01按数据选择专题地图类型
- 02指导分类方法与断点选择
- 03提供色彩和投影建议
- 04检查图例及缺失数据表达
- 05涵盖静态与交互地图导出
适用场景
- 01制作出版用静态专题地图
- 02比较不同时间或地区的地图
- 03展示大型点数据或流动数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ muend/ geoai-skills --skill cartography-geoviz安装后在 Claude Code 中输入/cartography-geoviz确认已加载。
附带文件agents/openai.yamlreferences/authoritative-sources.md
详细介绍
制图与地理可视化
目的:制作能够如实传达信息的地图。制图选择(分级断点、色带、归一化、投影)可能制造或掩盖模式;本技能将这些选择视为需要说明理由的分析决策,而非单纯的样式处理。
首先要问的三个问题
- 要传达什么信息? 一张地图只传达一个信息。如果两个变量相互争夺注意力,可以考虑小多图或双变量方案,而不是设置十二个图例类别。
- 是否做了归一化? 原始计数的分级统计地图其实是在伪装成人口地图。按面积着色时应使用比率、密度或人均值;原始量值则应使用比例符号。
- 静态还是交互式? 印刷/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。
- 每个弹出窗口中的数值都应格式化(千位分隔符、单位、舍入精度应与数据精度相符)。
验证流程
- 缩略图检查:消息在缩略图大小下是否仍清晰可辨?
- 通过色觉缺陷模拟检查。
- 图例审查:单位、舍入方式、分类边界不得重叠。
- 将 3 个要素的渲染值与属性表交叉核对 (分类错误不会显现)。
- 对于地图系列:各面板使用相同的断点、色带和范围。
易错点检查清单
- 使用原始计数制作分级统计图(实质上是在展示人口)。
- 比较两个日期时使用 Jenks 断点。
- 使用红绿发散色带,且中点未标注。
- 将 NoData 渲染为最低等级。
- 在未投影(以度为单位)的地图上添加比例尺。
- 使用 Web Mercator 比较大陆面积。
- 交互式地图没有图例或单位。
执行规范
- 工作流: 检查受众、数据语义、比例尺和输出媒介;选择投影、标准化方法、分类方法和视觉层级;渲染;验证;导出。
- 决策规则: 根据分析问题选择地图类型;当暴露量不同时,对计数进行标准化;比较数据时保持断点固定。
- 验证流程: 执行上述五项检查,并根据来源核对渲染值、单位、分类边界和缺失数据处理方式。
- 失败模式: 若分母、CRS、单位、无障碍要求或面板间可比性尚未明确,则停止交付或注明限制。
- 交付物: 最终地图、图例和单位、数据/来源说明、投影和分类依据、无障碍说明,以及可复现的样式或代码。
- 来源时效性: 使用版本敏感的 API 前,请查阅权威来源注册表,并记录核查日期。
评论
支持 Markdown