J'avais déjà parlé de l'outil maptoposter dans une note précédente. Très attaché à Gand, j'ai testé le rendu avec la carte de ma ville d'adoption.

Description

maptoposter est un script Python publié sous licence MIT qui permet de générer des affiches minimalistes de villes à partir des données OpenStreetMap. Il inclut 17 thèmes prêts à l'emploi (et accepte des thèmes personnalisés), prend en charge l'affichage multilingue des noms de villes, et offre des options pour ajuster la résolution et la taille des images. Le plus beau ? Le tout fonctionne localement sans nécessiter d'API externe, donc sans configuration compliquée avec des API tokens vers d'autres outils ou sites.

Utilisation

  • Prérequis : Python 3.11+
  • Téléchargez le depôt git

    git clone https://github.com/originalankur/maptoposter.git
    cd maptoposter
    
  • Lancez l'application

    # Avec uv
    uv run ./create_map_poster.py --city "Ghent" --country "Belgium"
    
    # Avec le traditionnel pip
    python -m venv .venv
    source .venv/bin/activate  # Windows: .venv\Scripts\activate
    pip install -r requirements.txt
    python create_map_poster.py -c "Ghent" -C "Belgium"
    

Vous devriez voir quelque chose comme ça en ligne de commande :

uv run ./create_map_poster.py --city "Ghent" --country "Belgium"
Using CPython 3.11.10
Creating virtual environment at: .venv
Built maptoposter @ file:///home/<user>/dev/maptoposter
Installed 31 packages in 101ms
==================================================
City Map Poster Generator
==================================================
Looking up coordinates...
✓ Found: Gent, Oost-Vlaanderen, Vlaanderen, België / Belgique / Belgien
✓ Coordinates: 51.0538286, 3.7250121
✓ Loaded theme: Terracotta
Mediterranean warmth - burnt orange and clay tones on cream

Generating map for Ghent, Belgium...
Downloading parks/green spaces: 100%|████████████████████████████████████████████████████████████████████████████████████████| 3/3
✓ All data retrieved successfully!
Rendering map...
Applying road hierarchy colors...
Saving to posters/ghent_terracotta_20260525_112642.png...
✓ Done! Poster saved as posters/ghent_terracotta_20260525_112642.png

================================================== Poster generation complete!
==================================================

Options

  • --city (-c) : Nom de la ville.
  • --country (-C) : Nom du pays.
  • --theme (-t) : Thème visuel (ex: noir, warm_beige, neon_cyberpunk).
  • --distance (-D) : Rayon de la carte en mètres.
  • --list-themes : Lister tous les thèmes disponibles.

Exemples de thèmes

Thème Style
noir Fond noir, routes blanches
warm_beige Tons sépia vintage
neon_cyberpunk Fond sombre avec rose/cyan électrique
blueprint Esthétique de plan architectural

Si vous n'êtes pas sur de quel thème est le plus adapté, vous pouvez générer la même carte avec tous les thèmes disponibles par défaut :

python create_map_poster.py -c "Tokyo" -C "Japan" --all-themes

Avantages

Déjà, maptoposter est gratuit et open source. Ensuite il propose une forte capacité de personnalisation grâce aux thèmes prêts à l'emploi (et même à la possibilité d'ajouter des thèmes via des fichiers JSON, non testé). Sa flexibilité et ses jolis thèmes intégrés le rend adapté aussi bien aux développeurs, aux designers qu'à n'importe qui sans fibre artistique qui veut une carte stylisée de sa ville.

Inconvénients

Ne nous mentons pas, l'outil n'a pas de "jolie" interface web: il requiert une certaine familiarité avec la ligne de commande et Python. Mais c'est largement surmontable avec un peu de curiosité. Il est aussi assez lent lorsqu'il génère des cartes pour des zones vastes. Parfois il faut un peu expérimenter pour avoir la bonne image finale, au niveau distance et détails.

Le résultat

Thème Cyberpunk Thème Japanese Ink Thème Copper Platina Thème Blueprint

Et une version haute définition, thème Blueprint, un peu plus zoomée sur le centre de la ville et prête pour impression 😊

Lien vers le projet