20. August 2026 · Von YasKad
originalankur/maptoposter

MapToPoster: urbane Kartografie als reproduzierbare Poster

originalankur/maptoposter · 14.153★ · 1.259 forks

Alles Wissenswerte über originalankur/maptoposter: ein Python-Werkzeug, das das Straßennetz und weitere OpenStreetMap-Ebenen abruft, um Stadtposter aus der Kommandozeile zu rendern.


Was MapToPoster ist

MapToPoster verwandelt eine Stadt und ein Land in ein minimalistisches Kartografie-Poster. Das Projekt kombiniert Geokodierung, OpenStreetMap-Daten und Rendering mit Matplotlib; das Ergebnis wird als Bild in posters/ gespeichert. Das Repository präsentiert sich als programmierbarer Generator, nicht als gehosteter Dienst oder offizielle grafische Anwendung.

Das praktische Versprechen ist, dass derselbe Befehl, dasselbe Thema und derselbe Radius eine wiederholbare Komposition erzeugen. Enthalten sind 17 Themes, Straßenhierarchien, Wasser, Parks, Typografie und Unterstützung für Beschriftungen in nicht-lateinischen Schriften.

Bild einer Neon-Stadtkarte, die sich aus einer Kaskade von Codefragmenten und Datenknoten materialisiert, mit Straßen in Cyan und Magenta, Wasser in Blau und Parks in Grün, über einem holografischen Terminal, das den Poster-Generierungsbefehl ausführt.

Der Ursprung: ein schneller Launch mit sofortiger Aufmerksamkeit

Das Repository wurde am 8. Januar 2026 von Ankur Gupta (originalankur) erstellt, dessen öffentliches Profil Bengaluru angibt und auf ankur.dev verlinkt. Die Projekthistorie datiert die erste Version 0.1.0 auf den 17. Januar 2026, mit 17 Themes und dem grundlegenden Stadt/Land-Ablauf; am selben Tag wurde auch v0.2 getaggt.

Der Beitrag „Map To Poster – Create Art of your favourite city” erreichte Hacker News am 17. Januar 2026. Er kam auf 296 Punkte und 70 Kommentare — bemerkenswert frühe Aufmerksamkeit für ein gerade erst erstelltes Repository. Die Resonanz offenbarte auch die zentrale Spannung des Projekts: attraktive Bilder aus öffentlichen Geodaten zu erzeugen ist über die Oberfläche einfach, aber Grenzen bei Geokodierung, Projektion und Datenvolumen zeigen sich, sobald Präzision oder eine große Stadt gefragt sind.

Philosophie und Prinzipien

  • Code vor Oberfläche: Der Maintainer bittet darum, vorerst keine Web- oder Desktop-Oberflächen einzureichen und kein Docker hinzuzufügen; der erwartete Kern ist das Kommandozeilenwerkzeug.
  • Deklarative Anpassung: Themes werden als JSON-Dateien in themes/ definiert, mit Farben für Hintergrund, Text, Wasser, Parks und Straßenkategorien.
  • Offene Daten mit visueller Ausgabe: Der Ablauf nutzt Nominatim zur Geokodierung, OSMnx zum Abrufen der Daten und Matplotlib zum Rendern.
  • Überprüfbares Ergebnis: Der Contributor-Leitfaden verlangt, jede Korrektur visuell zu testen und das Poster vorher/nachher zu vergleichen.

Terminal im Dunkelmodus mit neongrünem und cyanfarbenem Text, das Python-Befehle zur Erstellung von Stadtkarten zeigt, umgeben von holografischen Darstellungen von JSON-Theme-Dateien mit Farbpaletten für Hintergrund, Wasser, Parks und Straßen.

Wie es funktioniert

Das Programm wertet Argumente aus, löst die Stadt mit Nominatim in Koordinaten auf, lädt das Netz und die Ebenen über OSMnx von OpenStreetMap herunter und zeichnet sie mit Matplotlib. Die dokumentierte Reihenfolge stapelt Hintergrund, Wasser, Parks, Straßen, Verläufe und schließlich Beschriftungen; Straßen erhalten ihre Breite und Farbe nach OSMs highway-Kategorie.

Leuchtender Globus aus Glasfaserfäden und Datenpunkten, mit einem Neonlichtstrahl, der auf eine bestimmte Stadtkoordinate zeigt, während Datenströme mit der Beschriftung „Nominatim" und „OSMnx" in eine Rendering-Pipeline fließen.

Das Werkzeug unterstützt einen Radius in Metern, ein explizites Zentrum über Breiten-/Längengrad, eine physische Größe in Zoll, ein einzelnes Theme oder alle Themes. Für internationale Texte kann es den zur Geokodierung verwendeten Namen vom auf dem Poster angezeigten Text trennen und eine Google-Fonts-Familie nach fonts/cache/ herunterladen.

Das Changelog schreibt Version 0.2.1 lokales Caching von OSM-Daten, eine Pause von 0,3 Sekunden zwischen Anfragen, Projektionskorrekturen und ein Nominatim-Timeout von 10 Sekunden zu. Der noch nicht formal veröffentlichte Branch fügt Unterstützung für uv, Python 3.11 oder neuer und das Überschreiben von Koordinaten hinzu.

Offizieller und halboffizieller Status

Es wurde kein Beleg für die Aufnahme in einen offiziellen Marktplatz, eine Unterstützung durch einen Kartenanbieter oder ein offizielles Registry-Paket bei dieser Recherche gefunden. GitHubs Feld homepage ist leer, sodass das Repository und sein README die auffindbare kanonische Dokumentation sind.

In der Praxis ist es ein Community-Open-Source-Projekt unter MIT-Lizenz, mit aktivierten Discussions, Issues und Pull Requests; seine zahlreichen Forks und Anpassungen entsprechen keiner offiziellen Zertifizierung.

Minimalistisches Kartografie-Poster einer stilisierten Stadt, gerendert in Matplotlib, mit einem hierarchischen Straßennetz in Neonorange, warmem Gelb und kühlem Weiß, tiefblauem Wasser und leuchtend grünen Parks, gerahmt in einer futuristischen dunklen Oberfläche.

Das Ökosystem

Ableger, Ports und Oberflächen

  • cedgeek/maptoposter-docker ist ein von der API erkannter Fork und kündigt eine Docker-Variante an: 26 Sterne und 5 Forks. Es ist eine Community-Anpassung, obwohl das Hauptprojekt Docker vorerst nicht akzeptiert.
  • rramboer/OpenCartograph ist ein weiterer Fork aus der API; er wird als Kartografie-Generator umbenannt, mit 4 Sternen und 3 Forks.
  • frohman04/maptoposter-rs beschreibt sich als Rust-Version von MapToPoster; und fezcode/CartoGo erklärt, ästhetische Parität mit dem Original-Generator anzustreben — von Go aus. Beides sind von ihren Autoren selbst erklärte Ports, keine offiziellen Komponenten.
  • simongrossi/maptoposter-web, s4chdev/maptoposter-webui und msamuslim101/maptopostergui beschreiben sich als Web- oder Desktop-Schichten, die auf der ursprünglichen Idee oder dem Skript aufbauen. Die explizite Einschränkung im Haupt-README schließt aus, sie als akzeptierte Erweiterungen darzustellen.
  • ianho7/maptoposter-online ist eine angrenzende Online-App mit 891 Sternen; dimartarmizi/map-to-poster ist eine clientseitige Web-App mit 1.050 Sternen, Themes, Layouts und Export. Die Suche gibt sie als verwandt zurück, aber nicht als offizielle GitHub-Forks.

Es wurde keine vollständige Community-Übersetzung des Repositorys identifiziert. Internationalisierung existiert jedoch im Produkt selbst: Das README zeigt Beispiele auf Japanisch, Koreanisch, Arabisch, Chinesisch, Thailändisch und Khmer über Anzeigenamen und passende Schriftarten.

Neon-Karte von Tokio, die sich in eine Darstellung nicht-lateinischer Schriften verwandelt — Japanisch, Arabisch und Thailändisch — dargestellt in schwebender, leuchtender Typografie, untergebracht in futuristischen Cache-Modulen mit der Beschriftung „Google Fonts".

Vergleichbare Projekte

ProjektNachweisbare Beziehung
anvaka/city-roadsVisualisiert die Straßen einer Stadt; konzentriert sich auf diese eine Ebene, während MapToPoster ein Poster mit Themes und Beschriftungen komponiert.
yousifamanuel/terrainkPräsentiert sich als anpassbare Engine für Kartografie-Poster.
chrieke/prettymappEine Streamlit-App zum Erstellen künstlerischer Karten aus OSM-Daten.
koenderks/rcityviewsEin R- und Shiny-Paket für stilisierte Stadtkarten.
dimartarmizi/map-to-posterEine clientseitige Web-Alternative für Standort-Poster.

Die Repositories und Beschreibungen in dieser Tabelle wurden über GitHub-Suchen abgerufen; es wird weder Kompatibilität noch Zugehörigkeit noch eine unabhängige vergleichende Bewertung behauptet.

Zahlen des Repos

Messung: 9. August 2026, GitHub-API.

MetrikWert
Sterne13.901
Forks1.249
Echte Abonnenten45
Von der API zurückgegebene Contributor16
Von der API gemeldete offene Issues63
HauptsprachePython
LizenzMIT
Erstellung8. Januar 2026
Letzter registrierter Push6. August 2026
Letzte Metadaten-Aktualisierung9. August 2026
Letzte Changelog-Version0.3.0, 27. Januar 2026
Formale GitHub-Releaseskeine; es gibt ein v0.2-Tag

GitHub-Repository-Dashboard in dunkler Cyberpunk-Oberfläche mit leuchtenden Statistiken: „13.901 Sterne", „1.249 Forks" und „MIT-Lizenz", umgeben von holografischen Diagrammen und durch Datenlinien verbundenen Contributor-Avataren.

Die im API-Ergebnis führenden Contributor sind originalankur (17 Beiträge), lorenzofratus (9) und Saibamen (4). GitHubs Feld open_issues_count kann offene Pull Requests einschließen; es sollte nicht als reine Issue-Zahl gelesen werden. watchers_count verdoppelt die Sterne in dieser Antwort, weshalb subscribers_count für die 45 echten Abonnenten verwendet wird.

Wie man beiträgt

Im Root-Verzeichnis wurde keine CONTRIBUTING.md gefunden; die Anleitung steht im README. Sie akzeptiert Fehlerkorrekturen, verlangt einen visuellen Vorher-Nachher-Test des Ergebnisses und bittet darum, vor einer größeren Funktion Discussions oder Issues zu konsultieren. Als aktuelle Grenzen legt sie außerdem fest: keine Web-/Desktop-UI und kein Docker.

Der Verzeichnisbaum enthält test/, und das Changelog vermerkt Pull-Request-Prüfungen über GitHub Actions seit 0.3.0.

Es gibt sichtbare Discussions, Issues und Pull Requests, sodass der praktische Ablauf darin besteht, die Änderung in den Kanälen des Repositorys vorzuschlagen, sie in einem Fork umzusetzen und einen Pull Request mit visuellem Nachweis zu eröffnen.

Wie die Community reagierte

Der Hacker-News-Thread 46656834 erhielt 296 Punkte und 70 Kommentare. Nutzer stephenlf lobte die Ergebnisse und bezeichnete das README als Beispiel für hohe Qualität im Open-Source-Bereich; das ist eine individuelle Meinung, kein Beleg für allgemeine Qualität. mft_ bat um SVG-Ausgabe, während Helmut10001 mögliche Projektionsprobleme in Beispielen anmerkte. Kwpolska und mvdwoord forderten manuelle Koordinaten und erwähnten Schwierigkeiten bei der Geokodierung; Footprint0521 berichtete von extremer Langsamkeit beim Erzeugen von PDF/SVG für eine große Stadt. Diese Einwände decken sich mit den später im Changelog hinzugefügten Koordinaten-, Cache- und Projektionskontrollen.

Retrofuturistischer Bildschirm mit einem lebendigen Hacker-News-Thread in leuchtend orangefarbenem und weißem Text, umgeben von holografischen Kommentarblasen und Upvote-Pfeilen in Neonlicht, mit Stadtkarten-Silhouetten, die sich im dunklen Hintergrund auflösen.

Als externes praktisches Material wurde ein Video von Blueprint Bytes gefunden, „How to Create Custom Map Posters with Mapbox and Python: maptoposter Guide”: 4 Minuten 45 Sekunden, veröffentlicht am 24. Januar 2026, mit 610 Aufrufen zum Zeitpunkt der Abfrage. Es ist ein unabhängiges Tutorial; seine Existenz stellt keine technische Prüfung dar.

Von Reddit wurde wegen einer Zugriffsprüfung der Seite keine auffindbare Evidenz gewonnen, ebenso wenig von X, da eine Anmeldung erforderlich ist. Product Hunt zeigte eine Anti-Bot-Prüfung; DEV lieferte eine leere Liste für das Tag maptoposter, Hashnode zeigte keine Beiträge in seiner Suche, und iTunes lieferte keine exakten Episoden. Diese Einschränkungen belegen keine Abwesenheit von Konversation auf diesen Plattformen.

Kurzanleitung zur Nutzung

Installation und erster Start

Für das aktuelle Projekt ist Python 3.11 oder neuer erforderlich. Der empfohlene Weg ist, uv zu installieren und aus dem Klon auszuführen:

uv run ./create_map_poster.py --city "Paris" --country "France"

Bei der ersten Nutzung erstellt und verwaltet uv run die Umgebung und installiert Abhängigkeiten. Als reproduzierbare Alternative uv sync --locked vor demselben Befehl ausführen. Mit pip .venv erstellen und aktivieren, requirements.txt installieren und python create_map_poster.py ... ausführen. Das erste Ergebnis wird unter posters/{stadt}_{theme}_{JJJJMMTT_HHMMSS}.png gespeichert.

Übliche Arbeitsabläufe

# Ein Poster mit dem Standard-Theme erzeugen.
python create_map_poster.py -c "Paris" -C "France"

# Komposition und Theme für ein bestimmtes Gebiet anpassen.
python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000

# Eine mehrdeutige Geokodierung mit einem expliziten Zentrum korrigieren.
python create_map_poster.py --city "New York" --country "USA" -lat 40.776676 -long -73.971321 -t noir

# Alle visuellen Optionen durchsehen oder rendern.
python create_map_poster.py --list-themes
python create_map_poster.py -c "Tokyo" -C "Japan" --all-themes

Wesentliche Konfiguration

  1. --city und --country: erforderlich, werden zur Geokodierung verwendet.
  2. --theme und themes/*.json: wählen einen Stil aus oder erlauben es, einen mit Farben für Ebenen und Straßen zu erstellen.
  3. --distance: steuert den Radius, standardmäßig 18.000 m; das README schlägt 4–6 km für kleine, dichte Gebiete, 8–12 km für Stadtzentren und 15–20 km für Metropolregionen vor.
  4. --width und --height: gemessen in Zoll, mit einem Maximum von 20; sie dienen dazu, die Druck- oder Bildschirmauflösung auszurichten.
  5. --display-city, --display-country und --font-family: ermöglichen lokale Beschriftungen und laden die Schriftart nach fonts/cache/ herunter/cachen sie.

Häufige Fallstricke und Lösungen

  • Falsche Stadt oder ein wenig hilfreiches Zentrum: Stadt und Land für die Beschriftungen beibehalten, aber --latitude und --longitude gemeinsam nutzen, um das Zentrum festzulegen. Das Changelog vermerkt, dass diese Funktion speziell für die präzise Kontrolle existiert.
  • Langsames Rendering oder hoher Speicherverbrauch: Das README warnt, dass Radien über 20 km langsamere Downloads und mehr Speicher bedeuten. --distance reduzieren, network_type='drive' beim Bearbeiten des Codes für schnelle Vorschauen verwenden und die DPI für Vorschauen von 300 auf 150 senken.
  • Grenzen der Geokodierung: Der Leitfaden empfiehlt lokales Koordinaten-Caching, um Nominatim-Grenzen zu vermeiden; das Projekt wendet bereits OSM-Daten-Caching und eine Pause zwischen Anfragen an.
  • Ebenen, die Straßen verdecken: Das Changelog vermerkt eine Korrektur der Ebenenreihenfolge, damit Straßen über Wasser und Parks liegen. Bei einem älteren Checkout auf den aktuellen Code aktualisieren, falls dieser Fehler auftritt.

Integrationen und Migration

Die native Integration erfolgt mit OpenStreetMap-Daten über OSMnx, Nominatim-Geokodierung, Matplotlib und Google Fonts; eine offizielle Integration mit MCP, Editoren, CI oder Messaging ist nicht dokumentiert.

Für eine containerisierte Bereitstellung oder eine Oberfläche sind die Community-Forks und -Oberflächen im Ökosystem Ausgangspunkte, doch der Hauptmaintainer akzeptiert sie nicht als Beiträge.

Anwendungsfälle und wem dieses Repository helfen kann

  • Designer, Kartografen und Personen, die Drucke oder Hintergrundbilder vorbereiten, können dieselbe Stadt mit explizitem Radius, Theme und Größe erzeugen und PNG-Dateien mit einem nachvollziehbaren Namen in posters/ erhalten.
  • Wer lokale Beschriftungen oder Beispiele für internationale Städte benötigt, kann den Suchnamen in lateinischer Schrift beibehalten und Japanisch, Arabisch, Chinesisch, Koreanisch, Thailändisch oder Khmer mit einer passenden Schriftart anzeigen.
  • Entwickler, die OpenStreetMap-Daten erkunden, können die Theme-JSON-Dateien, die Ebenen von create_poster() oder die Straßenhierarchie ändern, um eine eigene Visualisierung hinzuzufügen, gestützt auf dokumentierte Architektur und Schlüsselfunktionen.
  • Teams, die eine Web-App, Docker oder eine Produktionspipeline benötigen, sollten zunächst die Community-Anpassungen oder vergleichbaren Projekte prüfen: Diese Anwendungsfälle fallen nicht in den vom Hauptrepository akzeptierten Beitragsumfang.

Zentraler Neon-Kern mit der Beschriftung „MapToPoster", der verzweigte Pfade zu Satellitenknoten aussendet, die Forks und Ports darstellen — Docker, Rust, eine Web-Oberfläche — mit pulsierenden Datenströmen in Violett, Cyan und Grün vor einem dunklen Hintergrund aus abstraktem digitalem Rauschen.

Ressourcen


Hinweis: Dieser Artikel kombiniert Dokumentation, Changelog und die GitHub-API sowie Community-Quellen, abgerufen am 9. August 2026. Zahlen ändern sich mit der Zeit.

Kommentare