Skip to content

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
Step-by-step guide: how to use maptoposterInstall, first run, examples, tips and FAQs

How to get it

  1. 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 --locked

    Create a virtual environment with pip

    python -m venv .venv

    Install requirements with pip

    pip install -r requirements.txt
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
maptoposter (this)14.3kCLIintermediate3 months agoPeople who want a decorative city map poster for a home or gift
huashu-design28.5kCLIbeginner7 days agoDesigners or founders who want quick visual drafts from a short text prompt
bulma50kLibrarybeginner2 months agoDevelopers who want a quick, consistent styling baseline for a web page
Awesome-Design-Tools41.7kCurated listbeginner2.3 years agoDesigners looking for a tool for a specific task such as color contrast checking or wireframing
materialize38.8kLibrarybeginner3 months agoDevelopers building a web page or app who want a Material Design look quickly
ml-visuals17.4kOtherbeginner3.7 years agoMachine 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.