- 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
- 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-themes lä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.
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 15000
python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
python 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 ab
create_poster(): Gesamte Rendering-Pipeline
get_edge_colors_by_type(): Legt Farben nach Straßentyp fest
get_edge_widths_by_type(): Legt Linienstärken nach Straßenbedeutung fest
load_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
dpi auf 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
Noch keine Kommentare.