
maptoposter
Python script that turns a city's OpenStreetMap data into a minimalist, printable map poster.
- Stars
- 14.3k
- Forks
- 1.3k
- Licence
- MIT
- Language
- Python
- Last update
- 3 months ago
- Type
- CLI
What it is
MapToPoster is a Python command-line script that draws a map of a city you name, using map data, and exports it as an image suitable for a poster. You choose a theme for colors and styling, plus a map radius and print size. It is aimed at people who want a decorative city map without using design software.
- Generate a poster for a city by name and country with a chosen theme
- Render the same city across all 17 themes with --all-themes
- Create a poster with native-script city names and a Google Fonts typeface
- Produce sized output for social posts, wallpapers, or A4 printing using the width and height options
Great for
- People who want a decorative city map poster for a home or gift
- Designers experimenting with map-based visuals and color themes
- Python users comfortable running a command-line script
- Anyone making posters in non-Latin scripts, using the multilingual options
Not ideal for
- People who want a point-and-click editor, since usage is through terminal commands
- Users who need precise cartographic accuracy, since the README describes stylized designs rather than survey-grade maps
- Users unfamiliar with installing Python tools, since setup requires uv or pip and a virtual environment
How to get it
- 1
Install with a package manager
You'll need: Python (version not stated in README) · uv or pip with a virtual environment
Install with uv (first run installs dependencies)
uv run ./create_map_poster.py --city "Paris" --country "France"Sync locked dependencies with uv
uv sync --lockedCreate a virtual environment with pip
python -m venv .venvInstall requirements with pip
pip install -r requirements.txt - 2
Run it
- Install uv or set up a Python virtual environment and install requirements
- Run the script with a city and country, for example --city "Paris" --country "France"
- Pick a theme with -t, such as noir or sunset
- Run --list-themes to see all available themes
- Adjust -d for map radius in meters and -W/-H for size in inches
- 3
Get the most out of it
- Use the distance guide: smaller radii suit dense cities, larger radii suit full metro views
- Use --display-city, --display-country, and --font-family for native-script labels
- Use --latitude and --longitude to set a custom map center
- Use --all-themes to compare styles for one city before choosing one
- Use the resolution guide values to match Instagram, wallpaper, or A4 sizes
Downloads
Strengths
- Simple command-line interface with clearly documented options
- Includes 17 built-in themes and a theme list command
- Supports custom fonts and non-Latin city names from Google Fonts
Trade-offs
- Requires running Python code and understanding terminal commands
- Map data depends on external geocoding and OpenStreetMap, and the README does not describe offline use
- Maximum output size is 20 inches per side according to the README
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| maptoposter (this) | 14.3k | CLI | intermediate | 3 months ago | People who want a decorative city map poster for a home or gift |
| huashu-design | 28.5k | CLI | beginner | 6 days ago | Designers or founders who want quick visual drafts from a short text prompt |
| bulma | 50k | Library | beginner | 2 months ago | Developers who want a quick, consistent styling baseline for a web page |
| Awesome-Design-Tools | 41.7k | Curated list | beginner | 2.3 years ago | Designers looking for a tool for a specific task such as color contrast checking or wireframing |
| materialize | 38.8k | Library | beginner | 3 months ago | Developers building a web page or app who want a Material Design look quickly |
| ml-visuals | 17.4k | Other | beginner | 3.7 years ago | Machine learning students preparing presentations or thesis figures |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.