MapToPoster – Stadtpläne in Kunstposter verwandeln
(github.com/originalankur)- Python-basiertes Open-Source-Tool, mit dem sich Stadtpläne aus aller Welt in minimalistische Kunstposter umwandeln lassen
- Nutzt OpenStreetMap(OSMnx)-Daten, um Straßen, Wasserwege, Parks und andere topografische Elemente zu visualisieren, und rendert sie mit matplotlib
- Bietet 17 Theme-Stile (z. B. neon_cyberpunk, blueprint, japanese_ink) und erlaubt das Hinzufügen benutzerdefinierter Themes per JSON-Datei
- Erstellt und speichert Poster automatisch über die Kommandozeile, indem Stadtname, Land, Radius und Theme angegeben werden
- Ein Tool, das Design und Datenvisualisierung verbindet, damit Entwickler und Designer Stadtstrukturen auf künstlerische Weise erkunden können
Projektüberblick
- MapToPoster ist ein Python-Skript, das auf Basis der Karte einer vom Nutzer angegebenen Stadt Poster in minimalistischem Design erzeugt
- Die erzeugten Poster werden automatisch im Verzeichnis
posters/gespeichert - Veröffentlicht unter der MIT-Lizenz und frei für Änderungen und Weiterverbreitung
- Die erzeugten Poster werden automatisch im Verzeichnis
- Das Repository hat rund 2,7k Stars und 164 Forks
Hauptfunktionen
- Über die Kommandozeilenschnittstelle (CLI) können Stadtname (
--city), Land (--country), Theme (--theme) und Distanz (--distance) eingegeben werden, um Poster zu erzeugen - Mit der Option
--list-themeslässt sich eine Liste aller verfügbaren Themes anzeigen - Je nach Distanzwert (
distance) lässt sich ein passender Radius für verschiedene Stadtgrößen festlegen- 4.000–6.000 m: kleine Städte
- 8.000–12.000 m: mittelgroße Städte
- 15.000–20.000 m: Großstädte
Theme-Struktur
- Im Verzeichnis
themes/sind 17 Theme-JSON-Dateien enthalten- Beispiele: noir, blueprint, neon_cyberpunk, warm_beige, forest, terracotta usw.
- Jedes Theme definiert Farbeigenschaften für Hintergrund, Straßen, Wasserflächen, Parks usw.
- Nutzer können neue Themes direkt selbst hinzufügen im JSON-Format
- Beispiel:
"bg": "#FFFFFF","road_primary": "#1A1A1A"usw.
- Beispiel:
Anwendungsbeispiele
- Poster lassen sich mit verschiedenen Kombinationen aus Städten und Themes erzeugen
python create_map_poster.py -c "Tokyo" -C "Japan" -t japanese_ink -d 15000python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000python create_map_poster.py -c "Dubai" -C "UAE" -t midnight_blue -d 15000
- Beispielposter enthalten Städte wie San Francisco, Venice, Marrakech und Singapore
Interne Struktur und Architektur
- Die Hauptkomponenten sind CLI Parser, Geocoding(Nominatim), Data Fetching(OSMnx) und Rendering(matplotlib)
- Die Rendering-Reihenfolge (z-order) ist Hintergrund → Wasserflächen → Parks → Straßen → Farbverlauf → Text
- Wichtige Funktionen
get_coordinates(): Ruft Breiten- und Längengrad über den Stadtnamen abcreate_poster(): Gesamte Rendering-Pipelineget_edge_colors_by_type(): Legt Farben nach Straßentyp festget_edge_widths_by_type(): Legt Linienstärken nach Straßenbedeutung festload_theme(): Lädt JSON-Themes
Erweiterung und Anpassung
- Um neue Karten-Layer (z. B. Bahnlinien) hinzuzufügen, können innerhalb von
create_poster()OSMnx-Daten geladen und gerendert werden - Wenn neue Theme-Eigenschaften ergänzt werden, müssen sie sowohl im JSON als auch im Code (
load_theme()) definiert werden - Regeln für die Textplatzierung
- Stadtname: y=0.14
- Ländername: y=0.10
- Koordinaten: y=0.07
- Quellenangabe: y=0.02
Tipps zur Performance-Optimierung
- Bei einem
dist-Wert von 20 km oder mehr sinken Download-Geschwindigkeit und Speichereffizienz - Koordinaten-Caching hilft, Request-Limits von Nominatim zu umgehen
- Mit der Einstellung
network_type='drive'verbessert sich die Rendering-Geschwindigkeit - Für schnelle Vorschauen kann
dpiauf 150 reduziert werden
Tech-Stack und Lizenz
- Zu 100 % in Python geschrieben
- Zentrale Bibliotheken: OSMnx, matplotlib, argparse
- Veröffentlicht unter der MIT License, kommerzielle Nutzung und Änderungen sind möglich
Zusammenfassung
- MapToPoster ist ein codebasiertes Tool zur künstlerischen Darstellung von Stadtplänen, das Datenvisualisierung und Design in einem Open-Source-Projekt verbindet
- Ein nützliches Tool für Entwickler, Designer und Experten für Datenvisualisierung, um Stadtstrukturen in künstlerischer Form zu erkunden
3 Kommentare
In den Kommentaren auf Hacker News wurde auch
city-roadserwähnt; das wurde hier früher schon einmal vorgestellt.Ich habe testweise einmal etwas für Seoul/Busan erstellt, und weil es ganz gut geworden ist, habe ich es dem GeekNews-Twitter-Account angehängt.
Seoul: https://x.com/GeekNewsHada/status/2013410000031395905
Busan: https://x.com/GeekNewsHada/status/2013412083749265695
Hacker-News-Kommentare
plt.savefig(output_file, format='svg', facecolor=THEME['bg'])lösen. Ich werde einen--format-Parameter hinzufügen und das übernehmen.