9 points par GN⁺ 2026-01-19 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.