marceloprates/prettymaps

GitHub Trending (daily) 工具

摘要

一个轻量级的Python库,用于从OpenStreetMap绘制自定义地图,利用osmnx、matplotlib、shapely和vsketch进行地理可视化。

基于OpenStreetMap数据绘制精美地图!使用osmnx +matplotlib + shapely构建。
查看原文
查看缓存全文

缓存时间: 2026/08/19 15:46

marceloprates/prettymaps 源码: https://github.com/marceloprates/prettymaps

prettymaps

一个用于从 OpenStreetMap (https://www.openstreetmap.org/#map=12/11.0733/106.3078) 绘制定制化地图的最小化 Python 库。它基于 osmnx (https://github.com/gboeing/osmnx), matplotlib (https://matplotlib.org/), shapely (https://shapely.readthedocs.io/en/stable/index.html) 和 vsketch (https://github.com/abey79/vsketch) 构建。

文档 (https://marceloprates.github.io/prettymaps/)

PyPI (https://pypi.org/project/prettymaps/) Python (https://www.python.org/) 许可证 本作品采用 GNU Affero 通用公共许可证 v3.0 授权(你可以进行商业使用、分发和修改此项目,但必须公开源代码并附带许可证和版权声明)。

关于署名和 NFT 的说明:

  • 请保留图片上署名我的仓库和 OpenStreetMap 的信息(这是其许可证 (https://www.openstreetmap.org/copyright) 的强制性要求)。
  • 我个人反对 NFT,因其对环境的影响 (https://earth.org/nfts-environmental-impact/)、本质上是一个巨大的洗钱金字塔骗局 (https://twitter.com/smdiehl/status/1445795667826208770),以及它们为开源和生成艺术社区的盗版行为创造了结构性诱因 (https://twitter.com/NFTtheft)。
  • 我绝不授权将此项目用于出售 NFT,尽管我无法在法律上强制执行这一点。请尊重创作者
  • AeternaCivitas (https://magiceden.io/marketplace/aeterna_civitas) 和 geoartnft (https://www.geo-nft.com/) 项目曾使用此作品出售 NFT,并拒绝署名。查看他们被曝光后的回应:AeternaCivitas (https://github.com/marceloprates/prettymaps/raw/main/pictures/NFT_theft_AeternaCivitas.jpg),geoartnft (https://github.com/marceloprates/prettymaps/raw/main/pictures/NFT_theft_geoart.jpg)。
  • 我已在 Github 上关闭了我的其他生成艺术项目,并且不会以开源形式分享新项目,以保护自己免受 NFT 社区的侵扰

曾出现在 Hacker News (https://web.archive.org/web/20210825160918/https://news.ycombinator.com/news) 上:

prettymaps 子版块 (https://www.reddit.com/r/prettymaps_/)

教程 (marimo) · Google Colaboratory 演示 (https://colab.research.google.com/github/marceloprates/prettymaps/blob/master/notebooks/tutorial.py)

安装

本地安装:

使用以下命令安装 prettymaps:

pip install prettymaps

在 Google Colaboratory 上安装:

使用以下命令安装 prettymaps:

!pip install -e "git+https://github.com/marceloprates/prettymaps#egg=prettymaps"

然后在导入 prettymaps 之前重启运行时(Runtime -> Restart Runtime)。

运行前端

安装 prettymaps 后,你可以使用以下命令从 prettymaps 仓库运行前端(streamlit)应用:

streamlit run app.py

教程

完整教程位于 docs/tutorial.md —— 一份包含渲染图像的 Markdown 指南,涵盖 [Plot] 数据类字段、layers/style 参数、预设、多图绘制、山体阴影和关键点。 Heerhugowaard 示例 快速开始:

import prettymaps
plot = prettymaps.plot('Stad van de Zon, Heerhugowaard, Netherlands')
资源在哪里找到
完整教程 (markdown + 图像)docs/tutorial.md
交互式 marimo 笔记本 (可运行)notebooks/tutorial.py
在 Google Colab 中打开在 Colab 中打开 (https://colab.research.google.com/github/marceloprates/prettymaps/blob/master/notebooks/tutorial.py)
Streamlit 前端streamlit run app.py

本地运行教程 (marimo)

# 安装 marimo (已在 requirements.txt 中)
pip install marimo
# 在浏览器中打开笔记本
marimo edit notebooks/tutorial.py

自定义参数

prettymaps.plot() 最重要的参数是:

  • layers —— 要获取的 OpenStreetMap 图层字典。
  • style —— 每个图层的 matplotlib 样式参数字典。
  • preset —— 加载一个 JSON 预设(例如 'default', 'minimal', 'macao', 'tijuca')。
  • circle / radius / dilate —— 边界形状。 plot 是一个数据类,包含 geodataframes(按图层划分的 GeoDataFrames)、figax
plot = prettymaps.plot(
    'Praça Ferreira do Amaral, Macau',
    circle=True,
    radius=1100,
    layers={
        "water": {"tags": {"natural": ["water", "bay"]}},
        "building": {"tags": {"building": True}},
    },
    style={
        "water": {"fc": "#a1e3ff", "ec": "#2F3737"},
        "building": {"palette": ["#FFC857", "#E9724C", "#C5283D"]},
    },
)

澳门,自定义参数 完整示例集(澳门、Bom Fim、马赛克、巴塞罗那绘图仪、Tijuca、多图绘制、山体阴影、Garopaba 关键点)请参见 docs/tutorial.md

相似文章

Organic Maps

Hacker News Top

Organic Maps 是一款免费、注重隐私的离线地图应用,适用于徒步、骑行和驾车,由 OpenStreetMap 提供支持,可在 iOS、Android 及其他平台上使用。最近其安装量达到了 600 万。

折叠纸地球

Hacker News Top

Folding Globes 提供基于开放许可数据构建的免费可打印纸地球,包含主题和地球仪构建器,是 MapScaping 的一个项目。