Skip to content

janfallgatter-rgb/Map2Poster3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Map2Poster - City Map Poster Generator

Görlitz - Warm Beige Liberec - Warm Beige Zittau - Warm Beige

Erstelle wunderschöne, minimalistische Kartenposter für jede Stadt der Welt.

Features

  • 18 handgefertigte Themes - Von minimalistisch bis Cyberpunk
  • Gebäudeumrisse - Zeigt die Bebauungsstruktur der Stadt
  • Landnutzung - Wohn-, Gewerbe-, Industrie- und Einzelhandelsflächen
  • Fußwege & Pfade - Parkwege und Fußgängerzonen sichtbar
  • Bahnlinien - Dezente Rail-Overlays, klar von Straßen getrennt
  • Stadt-Basisdaten - Population/Fläche/Dichte/Höhe/Gründungsjahr (Wikidata + Fallback)
  • Intelligentes Caching - Schnellere wiederholte Generierung
  • Proportionale Darstellung - Korrekte geografische Proportionen
  • Druckqualität - 300 oder 600 DPI Auflösung
Stadt Land Theme Befehl
Kamenz Deutschland noir python create_map_poster.py -c "Kamenz" -C "Germany" -t noir -d 2800 -b -l
Zittau Deutschland terracotta python create_map_poster.py -c "Zittau" -C "Germany" -t terracotta -d 2800 -b -l
Löbau Deutschland blueprint python create_map_poster.py -c "Löbau" -C "Germany" -t blueprint -d 2800 -b -l
Görlitz Deutschland warm_beige python create_map_poster.py -c "Görlitz" -C "Germany" -t warm_beige -d 4200 -b -l

Installation

# Repository klonen
git clone https://github.com/janfallgatter-rgb/Map2Poster.git
cd Map2Poster

# Abhängigkeiten installieren
pip install -r requirements.txt

Abhängigkeiten

  • Python 3.8+
  • osmnx
  • matplotlib
  • numpy
  • geopy
  • tqdm

Verwendung

python create_map_poster.py --city <stadt> --country <land> [optionen]

Optionen

Benötigt: --city (-c) und --country (-C).

Option Kurz Beschreibung Standard
--theme -t Theme-Name feature_based
--distance -d Kartenradius in Metern 29000
--landuse -l Landnutzungsflächen anzeigen aus
--buildings -b Gebäudeumrisse anzeigen aus
--dpi Auflösung: 300 (Standard) oder 600 (Druck) 300
--projection Projektion: isometric (Standard), flat, military isometric
--no-relief Geländerelief (Hillshade) deaktivieren
--relief-zoom Relief-Detailstufe (Tile-Zoom, Standard 12) 12
--relief-alpha Relief-Transparenz (Standard 0.22) 0.22
--relief-resolution Relief-Gitterauflösung (Standard 600) 600
--relief-blur Relief-Glättung (Sigma, Standard 3.0) 3.0
--no-rails Bahnlinien ausblenden (Standard: an)
--list-themes Alle verfügbaren Themes auflisten

Hinweis: Stadt‑Basisdaten werden per Wikidata geladen; für Kamenz/Zittau/Löbau/Görlitz sind Schätzwerte als Fallback hinterlegt.

Schnellstart

# Einfache Karte
python create_map_poster.py -c "Dresden" -C "Germany" -t noir -d 10000

# Mit Gebäuden und Landnutzung
python create_map_poster.py -c "Görlitz" -C "Germany" -t warm_beige -d 5000 -b -l

# Druckqualität (600 DPI)
python create_map_poster.py -c "Prag" -C "Czech Republic" -t midnight_blue -d 10000 -b -l --dpi 600

# Projektion (Militär / Flat)
python create_map_poster.py -c "Prag" -C "Czech Republic" -t blueprint -d 8000 --projection military
python create_map_poster.py -c "Prag" -C "Czech Republic" -t blueprint -d 8000 --projection flat

# Geländerelief (Hillshade)
python create_map_poster.py -c "Löbau" -C "Germany" -t urbanism -d 4000
python create_map_poster.py -c "Löbau" -C "Germany" -t urbanism -d 4000 --relief-zoom 12 --relief-resolution 320
python create_map_poster.py -c "Löbau" -C "Germany" -t urbanism -d 4000 --no-relief

# Alle Themes anzeigen
python create_map_poster.py --list-themes

Distanz-Empfehlungen

Distanz Geeignet für
3000-5000m Kleine Städte (Löbau, Kamenz, Zittau)
5000-8000m Mittlere Städte (Görlitz, Bautzen, Liberec)
8000-12000m Größere Städte (Dresden, Breslau, Prag)
15000-20000m Metropolen (Berlin, Wien, München)

Themes

18 Themes verfügbar im themes/ Verzeichnis:

Theme Stil
feature_based Klassisch schwarz-weiß mit Straßenhierarchie
noir Schwarzer Hintergrund, weiße Straßen
midnight_blue Dunkelblaue Basis mit goldenen Straßen
warm_beige Vintage Sepia-Töne
terracotta Mediterrane Wärme
urbanism Stadtplanung - deutliche Landnutzungsfarben
blueprint Architektur-Blueprint Ästhetik
japanese_ink Minimalistischer Tusche-Stil
neon_cyberpunk Dunkel mit elektrischem Pink/Cyan
pastel_dream Sanfte Pastelltöne
forest Tiefes Grün und Salbei
ocean Blau- und Türkistöne für Küstenstädte
sunset Warme Orange- und Rosatöne
autumn Herbstliche Braun- und Rottöne
copper_patina Oxidierte Kupfer-Ästhetik
contrast_zones Hoher Kontrast für urbane Dichte
gradient_roads Sanfte Farbverläufe
monochrome_blue Einheitliche Blautöne

Ausgabe

Poster werden im posters/ Verzeichnis gespeichert:

{stadt}_{theme}_{JJJJMMTT_HHMMSS}.jpg

Caching

Das Script verwendet automatisches Caching für OSM-Daten im cache/ Verzeichnis. Wiederholte Aufrufe für dieselbe Stadt/Distanz sind dadurch deutlich schneller.

Eigene Themes erstellen

Erstelle eine JSON-Datei im themes/ Verzeichnis:

{
  "name": "Mein Theme",
  "description": "Beschreibung des Themes",
  "bg": "#FFFFFF",
  "text": "#000000",
  "gradient_color": "#FFFFFF",
  "water": "#C0C0C0",
  "parks": "#F0F0F0",
  "road_motorway": "#0A0A0A",
  "road_primary": "#1A1A1A",
  "road_secondary": "#2A2A2A",
  "road_tertiary": "#3A3A3A",
  "road_residential": "#4A4A4A",
  "road_path": "#5A5A5A",
  "road_default": "#3A3A3A",
  "buildings": "#E0E0E0",
  "landuse_residential": "#F5F5F5",
  "landuse_commercial": "#EBEBEB",
  "landuse_industrial": "#E8E8E8",
  "landuse_retail": "#F0F0F0"
}

Projektstruktur

Map2Poster/
├── create_map_poster.py    # Hauptscript
├── themes/                 # Theme JSON-Dateien
├── fonts/                  # Roboto Schriftarten
├── posters/                # Generierte Poster
├── cache/                  # OSM-Daten Cache
├── requirements.txt        # Python-Abhängigkeiten
└── README.md

Rendering-Ebenen (z-order)

z=11  Textlabels (Stadt, Land, Koordinaten)
z=10  Gradientenverläufe (oben & unten)
z=3   Straßen und Wege
z=2.5 Gebäude (optional)
z=2   Parks (grüne Polygone)
z=1   Wasser (blaue Polygone)
z=0   Landnutzung (optional)
      Hintergrundfarbe

Lizenz

MIT License - siehe LICENSE

Autoren

Jan Fallgatter - Erweiterte Version mit Gebäuden, Landnutzung, Caching und neuen Themes

Claude Code (Anthropic) - KI-gestützte Entwicklung der erweiterten Features

Ankur Gupta - Originalversion

Danksagungen

  • Ankur Gupta für die ursprüngliche Idee und Implementierung
  • OSMnx für den Zugriff auf OpenStreetMap-Daten
  • OpenStreetMap Contributors für die Kartendaten
  • Roboto Schriftart von Google

About

Python tool to generate beautiful minimalist 3d city map posters with 18 themes, buildings, landuse and print-quality output.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages