Generate beautiful, minimalist map posters for any city — now with offline SinoGDB support for Chinese cities.
Project description
CityPoster — 城市地图海报生成器
基于 maptoposter 改造,专注中国城市离线地图海报。
安装
git clone https://codeberg.org/songwupei/cityposter.git
cd cityposter
uv sync
Shell 补全
# bash
source completions/cityposter.bash
# zsh
fpath=(completions $fpath); autoload -Uz compinit; compinit
SinoGDB 数据 (中国城市离线生成)
下载 SinoGDB-PackSet,设置路径:
export SINOGDB_DIR="$HOME/Downloads/SinoGDB-PackSet_gpkg_20260208"
使用
# 中国城市 — 完全离线,秒级出图
cityposter --lat 39.9042 --lon 116.4074 -dc "北京" -dC "中国" -t noir --poi
cityposter --lat 30.5728 --lon 104.0668 -dc "成都" -dC "中国" -t gongqiang --poi
# 国际城市 — 走 OSMnx
cityposter -c "Paris" -C "France" -t pastel_dream -d 10000
参数
| 参数 | 说明 | 默认 |
|---|---|---|
--lat, --lon |
中心坐标 (WGS-84) | |
--gcj02 |
坐标视为 GCJ-02 | |
-dc, -dC |
显示名称 | |
-t |
主题 | terracotta |
-d |
半径 (米) | 8000(中国) |
--poi |
POI 标注 | 关闭 |
--poi 全部 / --poi subway,sightseeing 指定类别 |
--poi 详情
不加值显示全部,指定类别则只显示选中项:
cityposter ... --poi # 全部
cityposter ... --poi subway # 只看地铁
cityposter ... --poi subway,sightseeing,park # 地铁+景点+公园
cityposter ... --poi subway,custom # 地铁 + 自定义 POI
简写对照:
| 简写 | 全称 | 中文 |
|---|---|---|
subway |
subway_station |
地铁站 |
train |
train_station |
火车站 |
bus |
bus_station |
公交站 |
airport |
airport |
机场 |
sightseeing |
sightseeing_spot |
景点 |
landmark |
landmark |
地标 |
museum |
museum |
博物馆 |
temple |
temple |
寺庙 |
park |
park |
公园 |
mall |
mall |
商场 |
food |
restaurant |
餐饮 |
hotel |
accommodation |
住宿 |
school |
school |
学校 |
hospital |
hospital |
医院 |
custom |
— | 自定义 POI(同 --custom-poi) |
不加 --poi 则不显示任何标注,纯地图。
自定义 POI (--custom-poi)
两处数据源,个人目录优先:
| 目录 | 用途 |
|---|---|
~/.config/cityposter/custom-poi/ |
个人专属,升级不丢 |
config/custom-poi/ |
项目通用,随代码分发 |
GeoJSON 格式(支持 .json / .geojson):
{
"type": "FeatureCollection",
"coord_type": "gcj02",
"features": [
{
"type": "Feature",
"properties": {"name": "故宫", "category": "景点"},
"geometry": {"type": "Point", "coordinates": [116.3972, 39.9163]}
}
]
}
coord_type:"gcj02"高德坐标自动转 WGS-84,默认"wgs84"category: 支持中文("景点")、英文("Sightseeing")、key("sightseeing_spot")- 文件名含城市名 = 城市专属优先加载;不含 = 通用兜底
_或.前缀文件忽略(禁用/备份)
| -f | png/svg/pdf | png |
| --font-family | Google Fonts | Noto Sans SC(中国) |
主题层级
主题按 themes/{city,province,country}/ 分三级,自动检测中国坐标走 SinoGDB:
| 级别 | 目录 | 数据 | 适用 |
|---|---|---|---|
city |
themes/city/ |
道路+水系+公园+POI | 城市级(<50km) |
province |
themes/province/ |
铁路+省界 | 省级(100–1000km) |
country |
themes/country/ |
铁路+省界 | 全国/大区域(>1000km) |
province 级别默认启用铁路虚线(railway_dashed),在省级尺度清晰可见。
全国地图 (country/province 主题)
themes/country/ 目录包含全国/大区域主题,只加载铁路+省界数据,支持大半径:
# 全国高铁+省界图(8500km,西安中心,16:9 桌面壁纸)
cityposter --lat 34.26 --lon 108.94 -dc 中国 \
-t atlas_outline -W 16 -H 9 -d 8500000
# SVG 矢量输出(无限缩放)
cityposter ... -f svg
| 级别 | 主题 | 说明 |
|---|---|---|
| country | atlas_outline |
高铁+省界,纯轮廓图 |
| country | atlas_highway |
高速路网(motorway+primary) |
| country | atlas_railway |
全部铁路+高速骨架 |
| country | atlas_highspeed |
仅高铁+高速骨架 |
| country | atlas_transport |
综合交通(高速+主干+铁路) |
| country | atlas_outline_relief |
地形底图+高铁+省界,山河叙事地图 |
| country | atlas_outline_relief_water |
地形+水系+高铁+国省界,全要素山河地图 |
| province | atlas_dashed |
铁路虚线+省界,省级尺度 |
输出附带 _legend.yaml(颜色图例)、.sh(复现脚本)。GeoJSON/Parquet 导出需在主题中设置 "export_layers": true。
地形底图 (--relief)
基于 hongzhao (鸿爪) 的地形烘焙算法,从 AWS Terrarium DEM 瓦片生成山影地形。
# 全国山河叙事地图
cityposter --lat 34.26 --lon 108.94 -dc 中国 \
-t atlas_outline_relief -d 8000000 -W 16 -H 9
# 城市级地形底图
cityposter --lat 39.9042 --lon 116.4074 -dc 北京 -t noir --relief
特性:
- 自动选取 zoom 级别(5km→z14, 8000km→z6)
- 16 线程并行下载 + tqdm 进度条,缓存至
~/.cache/cityposter/terrarium/ - Natural Earth 陆地遮罩 → 陆海分离着色
- Mercator→WGS-84 重投影(大范围自动修正变形)
- 输出分辨率按
--dpi × -H自动适配(--dpi 300 -H 9→ 2700px) - 省界 Parquet 缓存、铁路分组 pickle 缓存
水系 (--water)
cityposter --lat 34.26 --lon 108.94 -dc 中国 \
-t atlas_outline_relief_water -d 8000000 -W 16 -H 9
加载 Natural Earth 1:50m 河流 (LineString) 和湖泊 (Polygon),在省界与铁路之间渲染。
图层架构
详见 doc/LAYERS.md。
所有主题 (46)
| 主题 | 名称 | 风格 |
|---|---|---|
autumn |
Autumn | 秋日橙红 |
blueprint |
Blueprint | 建筑蓝图 |
brutalist_concrete |
Brutalist Concrete | 粗野主义 |
carbon_fiber |
Carbon Fiber | 碳纤维黑 |
contrast_zones |
Contrast Zones | 高对比度 |
copper_patina |
Copper Patina | 铜绿氧化 |
cotton_candy |
Cotton Candy | 棉花糖粉紫 |
cyberpunk_neon |
Cyberpunk Neon | 赛博朋克 |
desert_rose |
Desert Rose | 沙漠玫瑰 |
emerald |
Emerald City | 翡翠绿 |
forest |
Forest | 森林绿 |
forest_moss |
Forest Moss | 苔藓绿金 |
gilded_noir |
Gilded Noir | 黑金奢华 |
glitch_purple |
Glitch Purple | 故障紫绿 |
gongqiang |
宫墙 Gongqiang | 红底鎏金 |
gradient_roads |
Gradient Roads | 渐变道路 |
japanese_ink |
Japanese Ink | 日式水墨 |
lavender_mist |
Lavender Mist | 薰衣草雾 |
matcha_latte |
Matcha Latte | 抹茶拿铁 |
mediterranean_summer |
Mediterranean Summer | 地中海蓝橙 |
mediterranean_summer_plus |
Mediterranean Summer + Rail | 地中海+铁路 |
midnight_blue |
Midnight Blue | 午夜蓝金 |
monochrome_blue |
Monochrome Blue | 单色蓝 |
neon_cyberpunk |
Neon Cyberpunk | 霓虹赛博朋克 |
noir |
Noir | 纯黑白 |
nordic_frost |
Nordic Frost | 北欧冰霜 |
ocean |
Ocean | 海洋蓝 |
ocean_abyss |
Ocean Abyss | 深海深渊 |
pastel_dream |
Pastel Dream | 梦幻粉彩 |
qingzhuan |
青砖 Qingzhuan | 胡同灰砖 |
red_alert |
Red Alert | 红色警报 |
royal_velvet |
Royal Velvet | 皇家天鹅绒 |
sakura_branch |
Sakura Branch | 樱花粉 |
shuimo |
水墨 Shuimo | 水墨白底 |
solarized_dark |
Solarized Dark | Solarized 暗色 |
sulfur_slate |
Sulfur & Slate | 硫磺金灰 |
sunset |
Sunset | 落日橙粉 |
terra_clay |
Terra Clay | 陶土暖色 |
terracotta |
Terracotta | 地中海陶 |
vintage_nautical |
Vintage Nautical | 复古航海 |
warm_beige |
Warm Beige | 暖米色 |
Credit
Forked from maptoposter by Ankur Gupta. MIT License.
SinoGDB data derived from OpenStreetMap, processed by QGIS.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cityposter-0.2.10.tar.gz.
File metadata
- Download URL: cityposter-0.2.10.tar.gz
- Upload date:
- Size: 61.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90db7f3c0c00dac68dc6ffe8a59cdf5107c6f5e4c7e82eb12aacdd9ce54ce5bb
|
|
| MD5 |
75fad1bb54e137aeaf631c78ac1bbb4d
|
|
| BLAKE2b-256 |
948e942a3c6d2035b29eb690309ea9d2b317adabb80f06ef008bceb40f7b246a
|
File details
Details for the file cityposter-0.2.10-py3-none-any.whl.
File metadata
- Download URL: cityposter-0.2.10-py3-none-any.whl
- Upload date:
- Size: 66.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd90759f3088fe970a9bde3c48c84154a6b71ac455e8107f6ad3cf1b90ffa99c
|
|
| MD5 |
a57b5f4a7a8d394c60adb840d0930fd8
|
|
| BLAKE2b-256 |
7c957912031d3b71b0228e908620bc33e25bc0087e4b863a29dc016b833b1748
|