Skip to content

Repository files navigation

🗺️ CartoPro Map Studio

Générateur de cartes artistiques haute résolution à partir des données OpenStreetMap. Choisissez un lieu, une zone, un thème — récupérez un PNG, un PDF ou un SVG prêt à imprimer.

Open in Streamlit CI License: AGPL v3

Construit sur prettymaps de Marcelo Prates — voir CREDITS.md.


✨ Fonctionnalités

  • 3 formes de zone — cercle, rectangle/carré, polygone
  • 7 thèmes professionnels + éditeur de couleurs personnalisé
  • Aperçu interactif sur fond de carte avant génération
  • Recherche de lieu par nom, ou clic direct sur la carte
  • Export PNG, JPEG, PDF, SVG jusqu'à 600 dpi
  • Habillage titre, coordonnées et échelle entièrement paramétrables

🚀 Installation

Aucune installation n'est nécessaire pour essayer : l'application tourne sur https://cartopro-map-studio.streamlit.app/. Installez-la localement pour générer de grandes zones — l'instance en ligne dispose d'environ 1 Go de mémoire et peut redémarrer au-delà de 5 km de côté en centre-ville.

Windows

git clone https://github.com/bouhaaddii/cartopro-map-studio.git
cd cartopro-map-studio
run.bat

run.bat crée l'environnement virtuel, installe les dépendances et lance l'application.

Linux / macOS

git clone https://github.com/bouhaaddii/cartopro-map-studio.git
cd cartopro-map-studio
./run.sh

Manuellement

python -m venv venv
source venv/bin/activate        # Windows : venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py

L'application s'ouvre sur http://localhost:8501.


⚠️ Ne pas mettre à jour les dépendances à l'aveugle

requirements.txt fige trois paquets mutuellement verrouillés. En upgrader un seul casse l'application.

Paquet Contrainte Pourquoi
Shapely <2.0 osmnx 1.2.2 importe TopologicalError, symbole supprimé dans Shapely 2.xImportError au démarrage.
osmnx ==1.2.2 prettymaps 1.0.0 utilise l'API geometries_from_*, renommée features_from_* en osmnx 1.3.
prettymaps ==1.0.0 Seule version dont la signature plot() correspond à ce code.
geopandas <1.0 geopandas 1.0 exige Shapely ≥ 2.0.

Les autres dépendances ne sont volontairement pas figées : pip choisit la version compatible avec votre interpréteur.

Une migration vers Shapely 2 + osmnx 2 impliquerait de réécrire l'appel à prettymaps.

Réinstallation propre :

pip install --force-reinstall -r requirements.txt

📖 Utilisation

  1. Rechercher un lieu — « Rabat, Maroc », « Eiffel Tower »… ou cliquer sur la carte.
  2. Choisir la forme — cercle, rectangle/carré ou polygone.
  3. Régler la zone — la taille est annoncée en kilomètres réels.
  4. Choisir un thème, personnaliser titre, coordonnées et échelle.
  5. Aperçu, puis Générer.

Mode Rectangle/Carré

Réglage Effet
🟦 Transformer en Carré Verrouille le ratio à 1:1 — carré réel au sol, pas en degrés
Taille de la zone Largeur, en degrés de longitude (conversion en km affichée)
Rapport hauteur/largeur De 0,5 (paysage) à 2,0 (portrait) — case décochée uniquement

La zone demandée est transmise à prettymaps sous forme de périmètre exact, construit en projection métrique locale (UTM) : un carré de 4 km fait 4 km sur les deux axes, quelle que soit la latitude.


⏱️ Si le téléchargement OSM expire

L'API Overpass est gratuite et souvent saturée. Dans l'ordre :

  1. Réduire la zone (moins de 5 km de côté en centre-ville).
  2. Décocher les couches inutiles — les bâtiments sont de loin la plus lourde.
  3. Attendre 5 à 10 minutes : Overpass limite le débit par adresse IP.
  4. Relancer — OSMnx met en cache, la seconde tentative est quasi instantanée.

🧪 Tests

pip install pytest matplotlib
pytest tests/ -q

☁️ Déploiement sur Streamlit Community Cloud

L'instance officielle tourne sur https://cartopro-map-studio.streamlit.app/. Pour déployer la vôtre depuis un fork :

Sur https://share.streamlit.io : New app → votre dépôt, branche main, fichier app.py.

Dans Advanced settings, choisir Python 3.10. Ce n'est pas un détail : prettymaps 1.0.0 impose PyYAML==6.0, dont la dernière version compilée disponible s'arrête à Python 3.10. Sous 3.11 ou plus, pip tente de la compiler depuis les sources et échoue.

Les dépendances géospatiales sont lourdes : le premier build prend 10 à 15 minutes.

Si le build échoue malgré tout sur Shapely, ajoutez un fichier packages.txt à la racine contenant libgeos-dev : Streamlit Cloud installera GEOS et compilera Shapely depuis les sources.


🙏 Crédits

Ce projet est une interface. Le moteur de rendu cartographique est prettymaps, créé et maintenu par Marcelo Prates — c'est lui qui transforme les données brutes d'OpenStreetMap en cartes esthétiques. Vous pouvez le soutenir sur ko-fi.

L'accès aux données passe par OSMnx de Geoff Boeing, et les données elles-mêmes viennent d'OpenStreetMap, relevées par des centaines de milliers de contributeurs bénévoles.

Liste complète, publications à citer et demandes explicites des auteurs : CREDITS.md.


📄 Licence

GNU AGPL-3.0 — voir LICENSE.

prettymaps est sous AGPL-3.0, une licence copyleft : tout projet qui l'utilise et qui est publié ou hébergé doit adopter la même licence.

  • ✅ Usage commercial, modification et redistribution autorisés.
  • ⚠️ Le code source doit rester accessible, licence et copyright inclus.
  • ⚠️ Clause réseau (§13) — si vous déployez cette application en ligne, ses utilisateurs ont le droit d'en obtenir le code source.

Données cartographiques © contributeurs OpenStreetMap, sous licence ODbL. L'attribution est obligatoire sur toute carte publiée — ajoutez © OpenStreetMap contributors sur vos exports si vous les diffusez.

L'auteur de prettymaps demande par ailleurs explicitement que son travail ne soit pas utilisé pour vendre des NFT.