

























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




使用非常简单,可以全程交互操作,就三步 —— 打开冰箱门,把大象放进去,关上冰箱门:
其中的地图数据来自 OSM(OpenStreetMap),由全世界志愿者协作维护的”开源版谷歌地图”,不会有任何的版权问题。
当然,如果你更习惯写代码也很方便,需要安装 prettymapp 包,有更大的自由度,比如:
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 封装了很多常用的前端组件,比如滑块、按钮、图表、地图等等,也支持自定义更为复杂的组件,运行时自动渲染页面,对数据分析师极为友好。
应用场景很多,比如:
Prettymapp 也是个典型的 Streamlit 应用 —— 它把 prettymaps(用 OpenStreetMap 数据画地图的 Python 库,两个名字只差一个字母)搬进了浏览器,简化了配置,降低了上手门槛。
Streamlit 大幅降低了 “把想法变成可交互的应用” 的门槛。不是每个想法都值得单独做个前端,但行不行都值得快速搭个样子,找人试试看。下面是两个能找到更多有趣尝试的地方:


但“全栈脚本模式”本身也是一把双刃剑,逻辑和 UI 混在一起,对于大型项目和长期维护来说是件很麻烦的事情。即使在官方画廊,也有很多无法正常显示的、被废弃的应用,比如新冠数据的追踪展示,用完即弃是很多 demo 的宿命,倒也没什么奇怪的。
回到篇头的那四个地图徽章,虽然只是一块 3公里 见方的城市地图切片,却已经能读出些关于城市气质方面的信息:
这些信息,地图自己当然说不出来,只是静静的躺在哪里,让看的人去观察、发现、解读和感慨。就像城市气质,只能靠每个人去解读,得出各自不同答案,然后口口相传,历经几十上百年,逐渐成为越来越清晰的集体记忆。
看到这些地图切片,我脑子里蹦出第一个念头——做成实体冰箱贴或者徽章的话,感觉应该不错。


简单版的就用哑光喷漆,高档版的还可以上珐琅,背面加磁吸或胸针扣。一城多样,北京除了天安门版,还可以做三山五园版、环球影城版、应该比纪念品商店里那些”I ❤️ 北京”强不少。
不知道有没有人愿意做。如果有,考虑到我贡献了点子 —— 送我一套不过分吧?—— 还是说,已经有人做了?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。