originalankur/maptoposter — 13.9k★ on GitHub (Python). Transform your favorite cities into beautiful, minimalist designs. MapToPoster lets you create and export visually striking map posters with code.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Generate beautiful, minimalist map posters for any city in the world.
Examples
Country
City
Theme
Poster
USA
San Francisco
sunset
Spain
Barcelona
warm_beige
Italy
Venice
blueprint
Japan
Tokyo
japanese_ink
India
Mumbai
contrast_zones
Morocco
Marrakech
terracotta
Singapore
Singapore
neon_cyberpunk
Australia
Melbourne
forest
UAE
Dubai
midnight_blue
USA
Seattle
emerald
Installation
With uv (Recommended)
Make sure uv is installed. Running the script by prepending uv run automatically creates and manages a virtual environment.
# First run will automatically install dependencies
uv run ./create_map_poster.py --city "Paris" --country "France"
# Or sync dependencies explicitly first (using locked versions)
uv sync --locked
uv run ./create_map_poster.py --city "Paris" --country "France"
z=11 Text labels (city, country, coords)
z=10 Gradient fades (top & bottom)
z=3 Roads (via ox.plot_graph)
z=2 Parks (green polygons)
z=1 Water (blue polygons)
z=0 Background color
OSM Highway Types → Road Hierarchy
# In get_edge_colors_by_type() and get_edge_widths_by_type()
motorway, motorway_link → Thickest (1.2), darkest
trunk, primary → Thick (1.0)
secondary → Medium (0.8)
tertiary → Thin (0.6)
residential, living_street → Thinnest (0.4), lightest
Typography & Script Detection
The script automatically detects text scripts to apply appropriate typography:
Latin scripts (English, French, Spanish, etc.): Letter spacing applied for elegant "P A R I S" effect
Non-Latin scripts (Japanese, Arabic, Thai, Korean, etc.): Natural spacing for "東京" (no gaps between characters)
Script detection uses Unicode ranges (U+0000-U+024F for Latin). If >80% of alphabetic characters are Latin, spacing is applied.
Adding New Features
New map layer (e.g., railways):
# In create_poster(), after parks fetch:
try:
railways = ox.features_from_point(point, tags={'railway': 'rail'}, dist=dist)
except:
railways = None
# Then plot before roads:
if railways is not None and not railways.empty:
railways = railways.to_crs(g_proj.graph["crs"])
railways.plot(ax=ax, color=THEME['railway'], linewidth=0.5, zorder=2.5)
New theme property:
Add to theme JSON: "railway": "#FF0000"
Use in code: THEME['railway']
Add fallback in load_theme() default dict
Typography Positioning
All text uses transform=ax.transAxes (0-1 normalized coordinates):
y=0.14 City name (spaced letters for Latin scripts)
y=0.125 Decorative line
y=0.10 Country name
y=0.07 Coordinates
y=0.02 Attribution (bottom-right)
Useful OSMnx Patterns
# Get all buildings
buildings = ox.features_from_point(point, tags={'building': True}, dist=dist)
# Get specific amenities
cafes = ox.features_from_point(point, tags={'amenity': 'cafe'}, dist=dist)
# Different network types
G = ox.graph_from_point(point, dist=dist, network_type='drive') # roads only
G = ox.graph_from_point(point, dist=dist, network_type='bike') # bike paths
G = ox.graph_from_point(point, dist=dist, network_type='walk') # pedestrian
Performance Tips
Large dist values (>20km) = slow downloads + memory heavy
Cache coordinates locally to avoid Nominatim rate limits
Use network_type='drive' instead of 'all' for faster renders
How active is development on originalankur/maptoposter?
The most recent commit recorded on originalankur/maptoposter was 5 months ago, based on the GitHub push timestamp. The repository has 1.2k forks — one of the better signals of community interest.
How many stars does originalankur/maptoposter have?
originalankur/maptoposter has 13.9k GitHub stars — refresh the page for the live number, or check github.com/originalankur/maptoposter. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is originalankur/maptoposter open source?
Yes — originalankur/maptoposter ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/originalankur/maptoposter.
What else is in the UI / UX space?
originalankur/maptoposter is tracked by TopGit under the UI / UX category, alongside 8 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is originalankur/maptoposter?
originalankur/maptoposter (originalankur/maptoposter) is a Python project on GitHub. From the project's own README: Transform your favorite cities into beautiful, minimalist designs. MapToPoster lets you create and export visually striking map posters with code.
What language is originalankur/maptoposter written in?
originalankur/maptoposter is written primarily in Python. GitHub's language field is based on the largest share of bytes in the default branch.
What license does originalankur/maptoposter use?
originalankur/maptoposter is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where do I read more about originalankur/maptoposter?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/originalankur/maptoposter is the definitive source.
Read full README in the tab above.
Still deciding about maptoposter?
One click hands the question to an AI along with this page — see what it says about maptoposter.