最近做项目用到了 Streamlit,去官网翻文档时,意外发现了 Prettymapp 。
在 Streamlit Gallery 上被豆腐块大小的网站缩略图吸引,点进去一看,那四张或圆或方小图片居然是四个城市的地图。只需要输入一个地名或城市名,几秒钟就能生成一个独具特色的城市地图切片,圆的像徽章、方的像邮票,像文创店橱窗里的小物件,颇具艺术气息。
拿北、上、广、深各做了一张,试了试自带的四个色系——蜜桃(Peach)、红棕(Auburn)、柑橘(Citrus)、法兰绒(Flannel)。




怎么做地图徽章
使用非常简单,可以全程交互操作,就三步 —— 打开冰箱门,把大象放进去,关上冰箱门:
- 打开 Prettymapp;
- 通过输入框、滑块、下拉菜单、颜色拾取器等组件调整设置,当然也可以全用默认值;
- 地点搜索框支持中文,滑块可以设定截取半径,下拉菜单可以选择喜欢的预设风格;
- 展开隐藏选项,还能对形状、标题、每类地图要素的颜色等进行更精细的自定义设置;
- 点击生成,等两秒钟,下载 PNG 图片。
其中的地图数据来自 OSM(OpenStreetMap),由全世界志愿者协作维护的”开源版谷歌地图”,不会有任何的版权问题。
当然,如果你更习惯写代码也很方便,需要安装 prettymapp 包,有更大的自由度,比如:
Streamlit 是什么
Streamlit 是个 python 库,可以快速搭建数据应用。完全不需要懂前端,只要写几个脚本,调几个 API,就能跑出一个交互式网页。
from prettymapp.geo import get_aoi
from prettymapp.osm import get_osm_geometries
from prettymapp.plotting import Plot
from prettymapp.settings import STYLES
aoi = get_aoi(address="北京", radius=2000, rectangular=False)
df = get_osm_geometries(aoi=aoi)
fig = Plot(
df=df,
aoi_bounds=aoi.bounds,
draw_settings=STYLES["Peach"],
shape="circle",
).plot_all()
fig.savefig("beijing.png")
Streamlit 封装了很多常用的前端组件,比如滑块、按钮、图表、地图等等,也支持自定义更为复杂的组件,运行时自动渲染页面,对数据分析师极为友好。
应用场景很多,比如:
- 快速搭建数据看板,把 CSV 拖进去就能交互过滤;
- 把机器学习模型包装成网页 demo,在浏览器里调参数、看结果;
Prettymapp 也是个典型的 Streamlit 应用 —— 它把 prettymaps(用 OpenStreetMap 数据画地图的 Python 库,两个名字只差一个字母)搬进了浏览器,简化了配置,降低了上手门槛。
发现更多 Streamlit 应用
Streamlit 大幅降低了 “把想法变成可交互的应用” 的门槛。不是每个想法都值得单独做个前端,但行不行都值得快速搭个样子,找人试试看。下面是两个能找到更多有趣尝试的地方:
- 官方 Gallery:从简单的天气看板,到实时股票分析,再到各类数据集的可视化,五花八门,有些项目的交互还蛮复杂的,渲染效果也还不错,Streamlit 都能驾驭。
- Hugging Face Spaces:Streamlit 和 AI 也很搭,只要是基于 Python 的项目,用 Streamlit就很方便,文本生成、图像识别、语音转文字等各种 AI 应用,都不在话下。


但“全栈脚本模式”本身也是一把双刃剑,逻辑和 UI 混在一起,对于大型项目和长期维护来说是件很麻烦的事情。即使在官方画廊,也有很多无法正常显示的、被废弃的应用,比如新冠数据的追踪展示,用完即弃是很多 demo 的宿命,倒也没什么奇怪的。
城市的气质
回到篇头的那四个地图徽章,虽然只是一块 3公里 见方的城市地图切片,却已经能读出些关于城市气质方面的信息:
- 当搜索城市名的时候,通常地图会以市政府为中心显示,上海市政府+人民广场,广东省/广州市政府+人民广场,深圳市政府+市民广场,北京 —— 天安门广场(徽章上方可以看到故宫三大殿,左上方是中南海,市政府在通州,大概要30公里的截取半径才能挤进来)。
- 北京和深圳市中心是方正的方格路网,但一个是《考工记》天圆地方理念下最为正统的都城格局,一个是深圳速度的历史留痕,规划先行、快速成型;两个城市的建筑体量的对比尤其突出,深圳单栋建筑的基底面积不知可以塞下多少“皇城根脚下的四合院”。
- 上海和广州的市中心是相对自由一些的路网格局,有着《管子》“故城郭不必中规矩,道路不必中准绳” 理念的痕迹,正是中国传统城市布局理念中重自然、重功能的另一渊源。各自依山傍水,上海的地图切片虽看不到黄浦江,但有苏州河出镜,广州的虽然珠江只卡了个边,好在有白云山点缀;两座老城历经风雨,建筑尺度大小混杂,不知道有多少旧去新来的故事。
这些信息,地图自己当然说不出来,只是静静的躺在哪里,让看的人去观察、发现、解读和感慨。就像城市气质,只能靠每个人去解读,得出各自不同答案,然后口口相传,历经几十上百年,逐渐成为越来越清晰的集体记忆。
结语:你会不会想买一个
看到这些地图切片,我脑子里蹦出第一个念头——做成实体冰箱贴或者徽章的话,感觉应该不错。


简单版的就用哑光喷漆,高档版的还可以上珐琅,背面加磁吸或胸针扣。一城多样,北京除了天安门版,还可以做三山五园版、环球影城版、应该比纪念品商店里那些”I ❤️ 北京”强不少。
不知道有没有人愿意做。如果有,考虑到我贡献了点子 —— 送我一套不过分吧?—— 还是说,已经有人做了?

发表回复