OpenStreetMap-Daten in Poster verwandeln mit prettymaps
Manchmal stößt man auf Bibliotheken, die einfach eine Freude sind. Sie lösen keine komplexen Enterprise-Probleme oder beschleunigen Builds um das Zehnfache – stattdessen nehmen sie Geodaten und verwandeln sie in Grafiken, die man ausdrucken und eingerahmt an die Wand hängen möchte.
Vor etwa drei Jahren wurden vektorielle kreisförmige Stadtpläne in sanften Pastellfarben auf Reddit und Hacker News viral. Es stellte sich heraus, dass diese Ästhetik von einem kleinen Skript des brasilianischen Entwicklers Marcelo Prates geschaffen wurde. Das Projekt heißt prettymaps.

Unter der Haube
Die Bibliothek basiert auf einem einfachen Stack von Tools. Sie ruft rohe geografische Features von OpenStreetMap mit osmnx ab, verarbeitet Polygon-Geometrie mit shapely und rendert die finale Komposition über das vertraute matplotlib. Für die Vorbereitung von Vektorumrissen für Plotter verwendete der Autor außerdem vsketch.
Statt manuell Layer zu exportieren, Straßenn-, Fluss- und Gebäudetags zu filtern, Projektionen zu konfigurieren und sich mit matplotlib-Achsenstilen herumzuschlagen, übergibt man einfach eine Adresse oder Koordinaten und erhält eine fertige Zeichnung.
Ein Quick-Start sieht buchstäblich so aus:
import prettymaps
plot = prettymaps.plot('Stad van de Zon, Heerhugowaard, Netherlands')
Ein Funktionsaufruf lädt die Daten für den gewünschten Bereich herunter, teilt sie in Layer auf und erstellt den Plot.
So passt du deine Karte an
Die volle Flexibilität der Bibliothek zeigt sich in den Fine-Tuning-Optionen der Funktion prettymaps.plot().

Hier sind die Parameter, mit denen du am häufigsten arbeiten wirst:
- layers definiert ein Dictionary von OpenStreetMap-Layern. Hier legst du die Tags fest, mit denen Objekte ausgewählt werden: Gewässer (
natural: water), Gebäude (building: True), Parks, Straßen verschiedener Kategorien oder Eisenbahngleise. - style legt Rendering-Regeln für jeden Layer fest. Hier werden vertraute matplotlib-Parameter akzeptiert: Füllfarbe (
fc), Strichfarbe (ec), Linienbreite (lw) und fertige Farbpaletten (palette). - circle, radius und dilate steuern die Canvas-Grenzen. Du kannst die Karte in einen perfekten Kreis mit gegebenem Radius in Metern zuschneiden oder einen rechteckigen Bereich belassen.
- preset lädt fertige Stil-Konfigurationen (zum Beispiel
default,minimal,macaoodertijuca), sodass du kein Farbschema von Grund auf aufbauen musst.
Ein Beispiel für die Konfiguration eines bestimmten Standorts:
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"]},
},
)
Die Funktion gibt ein Plot-Dataclass-Objekt zurück. Darin findest du Geodataframes für jeden Layer (geodataframes) sowie Referenzen auf matplotlib-Objekte für fig und ax. Das ist praktisch, wenn du eigene Annotationen, Marker oder Beschriftungen mit Standard-Python-Plotting-Methoden hinzufügen möchtest.
So führst du es ohne Code-Schreiben aus
Wenn du zu faul bist, Code zu schreiben, oder schnell durch Paletten für verschiedene Städte klicken möchtest, enthält das Repository eine fertige Web-Oberfläche, die mit streamlit erstellt wurde.
Installation des Pakets:
pip install prettymaps
Starten der Oberfläche:
streamlit run app.py
Für interaktive Experimente hat der Autor ein Notebook für marimo vorbereitet (ein moderner Ersatz für Jupyter). Du kannst es lokal mit dem Befehl marimo edit notebooks/tutorial.py öffnen oder direkt in Google Colab über den Link in der Dokumentation ausführen.

Praktische Anwendungsfälle
Die erste Anwendung, die einem in den Sinn kommt, ist generative Kunst und Merch. Karten von Heimatstädten, Vierteln oder einprägsamen Orten in minimalistischem Stil eignen sich hervorragend für Poster, Postkarten und T-Shirts. Da die Bibliothek den Export von Vektorumrissen unterstützt, kannst du die Grafiken an Stiftplotter und Gravierer senden.
Das zweite Szenario ist Berichts- und Präsentationsdesign. Wenn du eine Stadtstudie durchführst, die Barrierefreiheit des Nahverkehrs analysierst oder ein Immobilien-Dashboard erstellst, sehen Standard-Map-Tiles oft überladen aus. Hier kannst du nur die Umrisse von Stadtblöcken und Gewässern beibehalten und sie strikt in den Farben deiner Marke einfärben.
Lizenz und wichtige Hinweise
Das Projekt hat ein paar Dinge, die man wissen sollte, bevor man es übernimmt.
Der Code wird unter der GNU AGPL v3.0-Lizenz vertrieben. Das bringt Verpflichtungen mit sich: Wenn du die Bibliothek im Backend eines Netzwerkdienstes verwendest, musst du diesen Dienst als Open Source veröffentlichen.
Beim Exportieren von Bildern musst du die Namensnennung von OpenStreetMap und dem Repository selbst beibehalten – das ist eine direkte Anforderung der Geodaten-Lizenz. Der Repository-Autor lehnt auch grundsätzlich die Nutzung seines Generators für den Verkauf von NFTs ab und hebt dies besonders im README hervor.
Lohnt es sich?
Die Bibliothek erledigt ihre Aufgabe hervorragend. Wenn du jemals eine schöne Stadtkarte brauchtest, ohne manuell in Illustrator oder QGIS zu arbeiten, spart dir prettymaps mehrere Stunden Arbeit.
Um loszulegen, installiere einfach das Paket über pip und arbeite ein paar Beispiele aus Colab durch. Das Projekt funktioniert mit Python 3.11+, ruft zuverlässig Daten über die OSM-API ab und liefert vorhersehbare Ergebnisse.
Ähnliche Projekte