Automate choropleth, proportional symbol and dot density thematic maps to PNG or PDF
编程
geoskill-map-symbology-optimizer
试用Optimize map symbology using color theory, contrast, visual hierarchy and accessible palettes
它能做什么
Optimize map symbology using color theory, contrast, visual hierarchy and accessible palettes
技能文档
地图符号优化 | Map Symbology Optimizer
Optimizes map symbology colors based on color theory and visual perception: WCAG contrast (selects the optimal black/white text color for each class), color-vision accessibility (class colors must remain distinguishable after deuteranopia simulation) and visual hierarchy (inter-class color distance metric).
Classification uses the Okabe-Ito / Tol accessible palettes, and outputs a complete symbology scheme as JSON plus a color scheme figure.
Core Algorithm / 核心算法
relative_luminance/contrast_ratio (WCAG, (L1+.05)/(L2+.05)) → simulate_deuteranopia linear matrix → min_pairwise_separation determines color-vision safety → best_text_color picks the text color → optimize_symbology assembles the scheme.
Dependencies / 依赖
pip install numpy rasterio scipy matplotlib geopandas shapely pillow
Usage / 使用方法
Example 1 (synthetic data, offline)
python geoskill-map-symbology-optimizer.py --bbox 116.0 39.0 117.0 40.0 --synthetic --output-dir ./out
Example 2 (equal-interval classification)
python geoskill-map-symbology-optimizer.py --input landcover.tif --method equal_interval --classes 6
Example 3 (Tol muted palette)
python geoskill-map-symbology-optimizer.py --input landcover.tif --palette tol-muted
Example 4 (synthetic, 4 classes)
python geoskill-map-symbology-optimizer.py --bbox 116 39 117 40 --synthetic --classes 4
Example 5 (quantile + Okabe-Ito)
python geoskill-map-symbology-optimizer.py --input landcover.tif --method quantile --palette okabe-ito
Output / 输出
| File | Format | Description |
|---|---|---|
symbology.png | PNG | Color-classified map + legend (main deliverable) |
classes.tif | GeoTIFF | Class index raster (verifiable deliverable) |
symbology.json | JSON | Breaks/colors/contrast/color-vision-safety QA |
Each run also produces output-manifest.json (run manifest).
Data Source / 数据源 / Source
Local GeoTIFF / vector files; --synthetic mode generates physically consistent simulated data, fully offline.
Privacy / 隐私声明 / Privacy
- Runs offline by default;
--syntheticmode requires no network at all. - All processing is performed locally; no user data is uploaded.
License / License
MIT
name: geoskill-map-symbology-optimizer description: 'Optimize map symbology using color theory, contrast, visual hierarchy and accessible palettes'
地图符号优化 | Map Symbology Optimizer
基于色彩理论与视觉感知优化地图符号配色:WCAG 对比度(为每类选最优黑/白文字)、色觉无障碍(deuteranopia 模拟后要求类别色仍可区分)、视觉层次(类间色彩距离度量)。
分类采用 Okabe-Ito / Tol 无障碍调色板,输出完整符号方案 JSON 与配色图。
核心算法
relative_luminance/contrast_ratio(WCAG,(L1+.05)/(L2+.05)) → simulate_deuteranopia 线性矩阵 → min_pairwise_separation 判定色觉安全 → best_text_color 选文字色 → optimize_symbology 组装方案。
依赖
pip install numpy rasterio scipy matplotlib geopandas shapely pillow
使用方法
示例 1(合成数据,离线)
python geoskill-map-symbology-optimizer.py --bbox 116.0 39.0 117.0 40.0 --synthetic --output-dir ./out
示例 2(等间距分类)
python geoskill-map-symbology-optimizer.py --input landcover.tif --method equal_interval --classes 6
示例 3(Tol muted 调色板)
python geoskill-map-symbology-optimizer.py --input landcover.tif --palette tol-muted
示例 4(合成 4 类)
python geoskill-map-symbology-optimizer.py --bbox 116 39 117 40 --synthetic --classes 4
示例 5(分位数 + Okabe-Ito)
python geoskill-map-symbology-optimizer.py --input landcover.tif --method quantile --palette okabe-ito
输出
| 文件 | 格式 | 说明 |
|---|---|---|
symbology.png | PNG | 配色分类图+图例(主产物) |
classes.tif | GeoTIFF | 类别索引栅格(可验证产物) |
symbology.json | JSON | 断点/配色/对比度/色觉安全 QA |
每次运行还会产出 output-manifest.json(运行清单)。
数据源 / Source
本地 GeoTIFF / 矢量文件;--synthetic 模式生成物理一致的模拟数据,完全离线。
隐私声明 / Privacy
- 默认离线运行,
--synthetic模式完全无网络。 - 所有处理在本地完成,不上传用户数据。
License
MIT
相关技能
Automate map layout with title, legend, scale bar and north arrow to PDF or PNG
Transfer map styles via color mapping and histogram matching with style templates
Compose multi-layer maps with cartographic decoration and high-resolution render to TIFF or PDF
Build spatial dashboards combining map layers and statistical charts into HTML
Compose multi-temporal rasters into unified rendered frames and a GIF animation