Skip to main content
MapToPoster requires Python 3.11 or higher. You can install it using uv (recommended for automatic dependency management) or pip with a virtual environment.

Prerequisites

Before installing MapToPoster, ensure you have:
  • Python 3.11+ installed on your system
  • Git (to clone the repository)
  • Internet connection (for downloading map data from OpenStreetMap)
MapToPoster requires Python 3.11 or higher. Check your version with python --version or python3 --version.

Installation Methods

Verify Installation

Test that everything is working correctly:
uv run ./create_map_poster.py --list-themes
You should see output listing all available themes:
Available Themes:
------------------------------------------------------------
  terracotta
    Terracotta
    Mediterranean warmth - burnt orange and clay tones on cream

  noir
    Noir
    Pure black background, white roads

  midnight_blue
    Midnight Blue
    Navy background with gold roads

  ...

Directory Structure

After installation, your project structure should look like this:
maptoposter/
├── create_map_poster.py    # Main CLI script
├── font_management.py      # Font loading and Google Fonts
├── requirements.txt        # pip dependencies
├── pyproject.toml         # Project metadata
├── uv.lock                # uv lock file (if using uv)
├── themes/                # 17 theme JSON files
│   ├── terracotta.json
│   ├── noir.json
│   ├── midnight_blue.json
│   └── ...
├── fonts/                 # Default Roboto fonts
│   ├── Roboto-Bold.ttf
│   ├── Roboto-Light.ttf
│   └── cache/             # Downloaded Google Fonts (auto-created)
├── posters/               # Generated posters (auto-created)
└── cache/                 # Cached map data (auto-created)

Dependency Overview

MapToPoster uses the following key dependencies:

osmnx 2.0.7

Fetches street networks and geographic features from OpenStreetMap

matplotlib 3.10.8

Renders high-quality poster graphics with precise control over styling

geopandas 1.1.2

Handles geographic data structures and coordinate projections

geopy 2.4.1

Geocodes city names to latitude/longitude coordinates

Troubleshooting

MapToPoster requires Python 3.11+. Check your version:
python --version
If you have multiple Python versions, try:
python3.11 -m venv .venv
On some systems, you may need to install GEOS separately:
sudo apt-get install libgeos-dev
If you encounter SSL errors when downloading fonts or map data:
pip install --upgrade certifi
For very large metropolitan areas or large distance values (>20km), you may need to:
  • Reduce the --distance parameter
  • Close other applications to free up memory
  • Use a smaller output size (--width and --height)

Next Steps

Now that MapToPoster is installed, you’re ready to create your first poster!

Quick Start Guide

Follow the quickstart tutorial to generate your first map poster

Build docs developers (and LLMs) love