9 Punkte von GN⁺ 2026-01-19 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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.

Noch keine Kommentare.