- Outil open source en Python permettant de générer des affiches artistiques minimalistes à partir de plans de villes du monde entier
- S’appuie sur les données OpenStreetMap (OSMnx) pour visualiser les routes, voies d’eau, parcs et autres éléments géographiques, avec un rendu via matplotlib
- Propose 17 styles de thèmes (par ex. neon_cyberpunk, blueprint, japanese_ink) et permet d’ajouter des thèmes personnalisés via des fichiers JSON
- Depuis la ligne de commande, il suffit de définir le nom de la ville, le pays, le rayon et le thème pour générer et enregistrer automatiquement une affiche
- Outil qui combine design et visualisation de données afin de permettre aux développeurs et designers d’explorer la structure urbaine de manière artistique
Aperçu du projet
- MapToPoster est un script Python qui génère des affiches au design minimaliste à partir de la carte d’une ville choisie par l’utilisateur
- Les affiches générées sont automatiquement enregistrées dans le répertoire
posters/
- Distribué sous licence MIT, il peut être librement modifié et redistribué
- Le dépôt compte environ 2,7k étoiles et 164 forks
Fonctionnalités principales
- Génération d’affiches via une interface en ligne de commande (CLI) en renseignant le nom de la ville (
--city), le pays (--country), le thème (--theme) et la distance (--distance)
- L’option
--list-themes permet d’afficher la liste de tous les thèmes disponibles
- Définition d’un rayon adapté à la taille de la ville selon la valeur de
distance
- 4 000–6 000 m : petite ville
- 8 000–12 000 m : ville moyenne
- 15 000–20 000 m : grande ville
Composition des thèmes
- Le répertoire
themes/ contient 17 fichiers JSON de thème
- Exemples : noir, blueprint, neon_cyberpunk, warm_beige, forest, terracotta
- Chaque thème définit des propriétés de couleur pour l’arrière-plan, les routes, les surfaces d’eau, les parcs, etc.
- L’utilisateur peut ajouter lui-même de nouveaux thèmes au format JSON
- Exemple :
"bg": "#FFFFFF", "road_primary": "#1A1A1A"
Exemples d’utilisation
- Il est possible de générer des affiches en combinant différentes villes et différents thèmes
python create_map_poster.py -c "Tokyo" -C "Japan" -t japanese_ink -d 15000
python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
python create_map_poster.py -c "Dubai" -C "UAE" -t midnight_blue -d 15000
- Parmi les affiches d’exemple figurent des villes comme San Francisco, Venice, Marrakech et Singapore
Structure interne et architecture
- Les principaux composants sont le parseur CLI, le géocodage (Nominatim), la récupération des données (OSMnx) et le rendu (matplotlib)
- L’ordre de rendu (
z-order) est : arrière-plan → eau → parcs → routes → dégradé → texte
- Fonctions principales
get_coordinates() : récupère la latitude et la longitude à partir du nom de la ville
create_poster() : pipeline complet de rendu
get_edge_colors_by_type() : attribue les couleurs selon le type de route
get_edge_widths_by_type() : définit l’épaisseur selon l’importance des routes
load_theme() : charge un thème JSON
Extension et personnalisation
- Pour ajouter de nouvelles couches cartographiques (par ex. les voies ferrées), il est possible de charger les données OSMnx puis de les rendre dans
create_poster()
- En cas d’ajout de nouvelles propriétés de thème, elles doivent être définies à la fois dans le JSON et dans le code (
load_theme())
- Règles de placement du texte
- Nom de la ville : y=0.14
- Nom du pays : y=0.10
- Coordonnées : y=0.07
- Mention de la source : y=0.02
Conseils d’optimisation des performances
- Si la valeur de
dist dépasse 20 km, la vitesse de téléchargement diminue et l’utilisation mémoire augmente
- La mise en cache des coordonnées permet d’éviter les limites de requêtes de Nominatim
- Le réglage
network_type='drive' améliore la vitesse de rendu
- Pour des aperçus rapides, il est possible d’abaisser le
dpi à 150
Stack technique et licence
- Écrit à 100 % en Python
- Bibliothèques principales : OSMnx, matplotlib, argparse
- Distribué sous licence MIT, avec usage commercial et modification autorisés
Résumé
- MapToPoster est un outil de création artistique de plans de ville basé sur le code, un projet open source qui combine visualisation de données et design
- Un outil utile pour les développeurs, designers et spécialistes de la visualisation de données souhaitant explorer la structure urbaine sous une forme artistique
Aucun commentaire pour le moment.