MapToPoster : Créer des affiches cartographiques minimalistes de villes en Python

MapToPoster : Créer des affiches cartographiques minimalistes de villes en Python

Si vous avez déjà voulu produire une carte propre et artistique de votre ville préférée, MapToPoster est l'outil qu'il vous faut. Il s'agit d'un projet open-source Python pur qui assemble les données OpenStreetMap (OSM) en une affiche soignée grâce à Matplotlib. Que vous soyez cartographe amateur, designer à la recherche d'un arrière‑plan unique ou data‑scientist ayant besoin d'un support visuel, ce dépôt vous fournit tout ce qu'il faut dès le départ.


1. Ce que vous offre MapToPoster

Fonctionnalité Description
Génération sans configuration Un seul appel CLI produit un PNG de la ville centrée sur votre rayon choisi.
18 thèmes prêts à l'emploi Du noir classique au néon cyberpunk futuriste, chaque thème ajuste automatiquement arrière‑plan, couleurs des routes et dégradés.
Thème JSON personnalisable Créez votre propre thème en éditant le fichier themes/{nom}.json – contrôlez chaque canal de couleur.
Distance flexible Choisissez un rayon de 4 km (centre-ville) à 20 km (ville entière) selon votre échelle.
Portable Le code dépend uniquement de bibliothèques bien entretenues : osmnx, networkx, matplotlib. Tout ce dont vous avez besoin est Python 3.9+.
Licence MIT Gratuit à utiliser, modifier et redistribuer.

2. Démarrage rapide

  1. Cloner le dépôt

    git clone https://github.com/originalankur/maptoposter.git
    cd maptoposter
    

  2. Créer un environnement virtuel (recommandé)

    python -m venv .venv
    source .venv/bin/activate   # Windows : .venv\\Scripts\\activate
    

  3. Installer les dépendances

    pip install -r requirements.txt
    

  4. Générer une affiche

    python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
    

    Résultat : posters/barcelona_warm_beige_20260108_172924.png est créé.

Vous pouvez remplacer les arguments par n’importe quelle paire ville/pays et nom de thème. Exécutez python create_map_poster.py --list-themes pour voir toutes les options disponibles.


3. Vue d’ensemble des thèmes

Thème Style Cas d’utilisation idéal
feature_based Noir & blanc classique avec hiérarchie des routes Légendes de cartes chargées en texte
gradient_roads Routes à dégradé doux Visualisation scientifique
noir Arrière‑plan noir pur, routes blanches Art d’affiche pour cinéma/site web
midnight_blue Arrière‑plan marine, routes or Ambiance nocturne de ville
blueprint Plancherure architecturale Projets architecturaux
neon_cyberpunk Foncé avec rose/cyan électrique Arrière‑plans futuristes de jeux
warm_beige Tons sépia Ambiance urbaine vintage
pastel_dream Pastels doux Invitations nuptiales légères
japanese_ink Lavage d’encre minimaliste Œuvres culturelles
forest Verts profonds Thèmes axés sur la nature
ocean Bleus & teals Plans de villes côtières
terracotta Chaleur méditerranéenne Affiches de voyage chaleureuses
sunset Oranges chaudes Art urbain au coucher du soleil
autumn Rouges brûlés Thèmes saisonniers d’automne
copper_patina Cuivre oxydé Esthétique industrielle ou vintage
monochrome_blue Famille monochrome bleue Branding corporatif

4. Étendre MapToPoster

4.1 Ajouter un nouveau thème

  1. Créez un fichier JSON dans themes/. Exemple my_fantasy.json :
    {
      "name": "Fantasy",
      "description": "Un thème de carte fantaisie",
      "bg": "#111111",
      "text": "#AAFFAA",
      "gradient_color": "#22AA22",
      "water": "#004400",
      "parks": "#006600",
      "road_motorway": "#FF0044",
      "road_primary": "#FF8844",
      "road_secondary": "#FFCC44",
      "road_tertiary": "#FFF444",
      "road_residential": "#999999",
      "road_default": "#666666"
    }
    
  2. Exécutez le générateur d’affiches avec -t fantasy.

4.2 Ajouter une nouvelle couche de carte

Pour insérer les voies ferrées avant les routes :

# Dans create_map_poster.py après la récupération des parcs
try:
    railways = ox.features_from_point(point, tags={"railway": "rail"}, dist=dist)
except Exception:
    railways = None
if railways is not None and not railways.empty:
    railways.plot(ax=ax, color=THEME["railway"], linewidth=0.5, zorder=2.5)
Assurez‑vous de définir la couleur railway dans votre JSON thème.


5. Considérations de performance

  • Limites de distance : Les rayons larges ralentissent le téléchargement des données OSM. Gardez -d ≤ 20 km pour des exécutions rapides.
  • Cache : OSMnx met automatiquement en cache les données OSM localement. Lancer à nouveau la même ville sera nettement plus rapide.
  • Type de réseau : drive est la valeur par défaut ; passez à walk ou bike pour les données plus légères.
  • DPI : 300 dpi par défaut ; réduisez‑le à 150 dpi pour des aperçus rapides.

6. Pourquoi utiliser MapToPoster ?

  • Zéro surcharge : aucun compte ou clé d’API requis ; toutes les données proviennent directement d’OSM.
  • Contrôle créatif : les thèmes sont modulaires ; les designers peuvent ajuster couleurs, dégradés et typographie.
  • Reproductible : le script est déterministe ; avec les mêmes entrées il rendra la même image à chaque fois.
  • Communauté active : avec près de 5 k étoiles et 394 forks, le projet bénéficie d’un support communautaire engagé.

7. Commencez dès aujourd’hui

  1. Forkez le dépôt ou clonez‑le localement.
  2. Explorez les thèmes existants et lancez quelques exemples.
  3. Créez votre propre affiche et partagez‑la sur les réseaux sociaux ou intégrez‑la dans un article.
  4. Contribuez : ouvrez une issue si vous trouvez un bogue ou proposez un nouveau thème, ou soumettez une pull request avec des améliorations.

MapToPoster transforme le réseau routier d’une ville en un récit visuel. Que vous créiez des guides de voyage, de l’arrière‑plan artistique ou des illustrations académiques, ce projet vous offre un moyen rapide, évolutif et beau de produire des affiches cartographiques – tout cela grâce à la technologie open‑source.

Bonne cartographie !

Original Article: Voir l’original

Partager cet article