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
-
Cloner le dépôt
git clone https://github.com/originalankur/maptoposter.git cd maptoposter -
Créer un environnement virtuel (recommandé)
python -m venv .venv source .venv/bin/activate # Windows : .venv\\Scripts\\activate -
Installer les dépendances
pip install -r requirements.txt -
Générer une affiche
python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000Résultat :
posters/barcelona_warm_beige_20260108_172924.pngest 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
- Créez un fichier JSON dans
themes/. Exemplemy_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" } - 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)
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 :
driveest la valeur par défaut ; passez àwalkoubikepour 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
- Forkez le dépôt ou clonez‑le localement.
- Explorez les thèmes existants et lancez quelques exemples.
- Créez votre propre affiche et partagez‑la sur les réseaux sociaux ou intégrez‑la dans un article.
- 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 !