- Python 100%
| .vscode | ||
| data/test | ||
| docs/diagrams | ||
| visugpx | ||
| README.md | ||
| test_full_workflow.py | ||
| test_pois_threading.py | ||
| test_reproduce_crash.py | ||
| test_thread_qapp.py | ||
| test_thread_simple.py | ||
VisuGPX
Application desktop pour visualiser des traces GPX sur des cartes OpenStreetMap avec gestion de projets et affichage de points d'intérêt.
Fonctionnalités
- Gestion de projets : Créez, supprimez et gérez des projets qui regroupent plusieurs traces GPX
- Visualisation de traces : Affichez plusieurs traces sur une carte avec des couleurs et épaisseurs personnalisables
- Points d'intérêt (POI) : Affichez des restaurants, cafés, bars, supermarchés, stations-service, points de vue, hôtels, pharmacies et hôpitaux depuis OpenStreetMap. Les POI sont affichés en clusters pour une meilleure lisibilité et sont calculés en arrière-plan sans bloquer l'interface.
- Personnalisation :
- Modifiez la couleur, l'épaisseur et l'opacité de chaque trace
- Choisissez les catégories de POI à afficher
- Configurez le rayon de recherche pour les POI
- Sélection multiple : Ajoutez plusieurs traces GPX en une seule opération
- Interface intuitive : Menu contextuel par clic droit sur les projets et traces
- Export : Exportez la carte affichée au format HTML
Prérequis
- Python 3.8 ou supérieur
- pip (gestionnaire de paquets Python)
Installation
1. Cloner le dépôt
cd /path/vers/vos/projets
git clone <url-du-depot>
cd visugpx
2. Créer un environnement virtuel
# Sous Linux/macOS
python3 -m venv venv
source venv/bin/activate
# Sous Windows
python -m venv venv
venv\Scripts\activate
3. Installer les dépendances
pip install --upgrade pip
pip install PySide6 folium gpxpy requests
4. Installer les dépendances optionnelles pour les POI
Pour l'affichage des points d'intérêt (restaurants, cafés, etc.) :
pip install osmium
5. Base de données SQLite pour les POI (recommandé)
L'application utilise une base de données SQLite locale pour afficher les points d'intérêt. Cette approche offre des performances optimales sans dépendance réseau.
Catégories de POI disponibles (9 catégories) :
- 🍽️ Restaurants - Établissements de restauration
- ☕ Cafés - Cafés et salons de thé
- 🍺 Bars - Bars et pubs
- 🛒 Supermarchés - Grandes surfaces et supermarchés
- ⛽ Stations-service - Stations d'essence
- 🏞️ Points de vue - Points de vue et belvédères
- 🏨 Hôtels - Hôtels et hébergements
- 💊 Pharmacies - Pharmacies
- 🏥 Hôpitaux - Hôpitaux et centres médicaux
Pour créer la base de données :
# Exécuter le script de construction (prend plusieurs minutes pour un fichier PBF de 4.7Go)
python scripts/build_poi_database.py
Ce script utilise le fichier PBF (visugpx/res/france-260618.osm.pbf) pour créer une base de données SQLite (visugpx/res/poi_database.sqlite) contenant tous les POI des 9 catégories.
Requirements :
- La bibliothèque
osmiumdoit être installée :pip install osmium - Le fichier PBF doit être présent dans
visugpx/res/ - Le script peut prendre 5-15 minutes pour traiter un fichier de 4.7Go
Avantages :
- ✅ Requêtes instantanées (pas de dépendance réseau)
- ✅ Filtrage efficace par catégorie et par zone géographique
- ✅ Support du rayon de recherche avec calcul de distance précis (formule de Haversine)
- ✅ Affichage optimisé avec clustering automatique des marqueurs proches
Note : Si la base de données n'existe pas, l'application affichera un message d'avertissement mais continuera à fonctionner (sans les POI). Les POI sont calculés en arrière-plan via un thread dédié, ce qui permet de garder l'interface utilisateur réactive pendant le traitement.
Exécution
# Activer l'environnement virtuel si ce n'est pas déjà fait
source venv/bin/activate # Linux/macOS
# ou
venv\Scripts\activate # Windows
# Lancer l'application
python visugpx/main.py
Utilisation
Création d'un projet
- Cliquez sur Fichier > Nouveau projet
- Donnez un nom à votre projet
- Le projet est créé et apparaît dans l'arborescence
Ajout de traces GPX
- Sélectionnez un projet dans l'arborescence (clic gauche)
- Faites un clic droit sur le projet et sélectionnez Ajouter une trace
- Sélectionnez un ou plusieurs fichiers GPX
- Les traces sont copiées dans le dossier du projet et apparaissent dans l'arborescence
Modification des propriétés d'une trace
- Faites un clic droit sur une trace dans l'arborescence
- Sélectionnez Propriétés
- Modifiez le nom, la couleur, l'épaisseur ou l'opacité
- Validez avec OK
Suppression
- Supprimer un projet : Clic droit sur le projet > Supprimer le projet
- Supprimer une trace : Clic droit sur la trace > Supprimer la trace
Points d'intérêt (POI)
L'application permet d'afficher des points d'intérêt autour de vos traces. Les POI sont automatiquement clusterisés sur la carte pour une meilleure lisibilité.
Pour activer et configurer les POI :
- Activer l'affichage : Cochez Points d'intérêt > Afficher les POI dans le menu
- Configurer les catégories : Sélectionnez Points d'intérêt > Configurer les POI pour choisir quelles catégories afficher
- Définir le rayon de recherche : Dans la boîte de dialogue des paramètres, configurez le rayon en kilomètres (0.1 à 50 km)
- Important : Seuls les POI situés à une distance maximale (rayon) de vos traces seront affichés
- Par exemple, avec un rayon de 1km, seuls les POI dans un cercle de 1km autour de chaque point de la trace seront affichés
- Légende : Une légende visuelle avec les couleurs des catégories est affichée en bas à droite de la carte
Fonctionnement :
- Le calcul des POI s'effectue en arrière-plan et ne bloque pas l'interface
- Les POI sont affichés avec un icône coloré correspondant à leur catégorie
- Les clusters se décomposent automatiquement au zoom pour afficher les POI individuels
- Seuls les POI proches de vos traces sont affichés, ce qui améliore les performances
Conversion de POI en Waypoints
Vous pouvez convertir un POI en waypoint de trace directement depuis la carte :
- Activez l'affichage des POI (voir section ci-dessus)
- Faites un clic droit sur un POI dans la carte
- Sélectionnez "Ajouter 'NomDuPOI' comme waypoint"
- Le waypoint est ajouté à la trace sélectionnée
Caractéristiques des waypoints :
- Affichés sur la carte avec un icône de drapeau (▼)
- La couleur du drapeau correspond à la couleur de la trace
- Sauvegardés automatiquement dans le fichier GPX
- Persistants entre les sessions
Où sont stockés les waypoints ?
- Dans le fichier GPX (pour compatibilité avec d'autres logiciels)
- Dans le project.json (pour gestion par l'application)
Changement de carte de base
Différents styles de cartes sont disponibles dans le menu Carte :
- OpenStreetMap Standard
- OpenStreetMap Transport
- CartoDB Positron
- Stamen Terrain
- etc.
Export de la carte
- Sélectionnez un projet
- Cliquez sur Fichier > Exporter carte
- Choisissez un emplacement et un nom de fichier
- La carte sera exportée au format HTML, ouvrable dans n'importe quel navigateur
Structure des projets
Chaque projet est stocké dans un sous-dossier du dossier data/ :
data/
<project-id>/
project.json # Métadonnées du projet (inclut les waypoints)
trace1.gpx # Fichiers GPX (incluent les waypoints ajoutés)
trace2.gpx
...
Contenu du project.json :
- Métadonnées du projet (nom, date de création/modification)
- Liste des traces avec leurs propriétés (couleur, épaisseur, opacité)
- Liste des waypoints pour chaque trace
Contenu des fichiers GPX :
- Les traces originales (track points)
- Les waypoints ajoutés (via clic droit sur les POI)
Le dossier data/ est créé automatiquement lors du premier lancement de l'application.
Dépannage
"GBM is not supported" warning
Ce message est normal et indique que l'application utilise Vulkan au lieu de GBM pour le rendu. Cela n'affecte pas le fonctionnement.
Les POI ne s'affichent pas
- Vérifiez que vous avez activé l'option Afficher les POI dans le menu Points d'intérêt
- Vérifiez que vous avez coché au moins une catégorie dans Configurer les POI
- Vérifiez que la base de données POI existe dans
visugpx/res/poi_database.sqlite- Si elle n'existe pas, exécutez :
python scripts/build_poi_database.py
- Si elle n'existe pas, exécutez :
- Assurez-vous que vos traces sont bien chargées et visibles dans l'arborescence
- Essayez avec une zone urbaine (plus de POI disponibles) ou augmentez le rayon de recherche
- Vérifiez que le fichier PBF (
france-260618.osm.pbf) est présent dansvisugpx/res/
Les waypoints ne s'affichent pas ou ne sont pas sauvegardés
- Vérifiez que vous avez bien fait un clic droit sur un POI (pas sur la carte vide)
- Assurez-vous qu'une trace est sélectionnée dans l'arborescence
- Si le waypoint apparaît sur la carte mais pas dans le GPX :
- Vérifiez que le projet a bien été sauvegardé (menu Fichier > Enregistrer projet)
- Les waypoints sont sauvegardés dans le GPX et dans le project.json
- Si les waypoints disparaissent après fermeture :
- Vérifiez que le fichier GPX n'est pas en lecture seule
- Vérifiez les permissions d'écriture dans le dossier du projet
Les traces ne s'affichent pas
- Vérifiez que le projet contient bien des fichiers GPX valides
- Assurez-vous que les traces sont visibles (case à cocher dans l'arborescence)
- Essayez de recharger l'application
Problèmes de locale (UTF-8)
Si vous voyez des avertissements concernant la locale, configurez votre système pour utiliser UTF-8 :
# Sous Linux/Ubuntu
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
# Ou pour votre système spécifique
locale-gen fr_FR.UTF-8
export LANG=fr_FR.UTF-8
Performances et Limitations
Performances
- Base de données : ~200 000 POI pour la France, requêtes en < 1 seconde
- Filtrage par distance : Calcul optimisé avec simplification des traces (max 200 points)
- Affichage : Clustering automatique pour gérer des centaines de POI simultanément
- Multithreading : Calcul des POI en arrière-plan pour une interface réactive
Limitations
- La base de données POI doit être construite manuellement avant la première utilisation
- Le fichier PBF source (5 Go) doit être téléchargé séparément
- Les POI ne sont affichés que dans un rayon configurable autour des traces
- Seuls les POI de France sont inclus (basé sur le fichier PBF fourni)
Conseils pour de meilleurs résultats
- Augmentez le rayon de recherche pour les zones rurales (5-10 km recommandé)
- Réduisez le rayon pour les zones urbaines denses (0.5-2 km recommandé)
- Activez uniquement les catégories qui vous intéressent pour améliorer les performances
Dépendances
Dépendances principales
| Paquet | Version | Description |
|---|---|---|
| PySide6 | 6.x | Interface graphique (Qt for Python) |
| folium | 0.14.x | Génération de cartes interactives |
| gpxpy | 1.5.x | Lecture des fichiers GPX |
| requests | 2.28.x | Requêtes HTTP (optionnel) |
| osmium | 4.x | Lecture des fichiers PBF OSM (optionnel, pour construire la base POI) |
Installation sous Windows
Sous Windows, vous pouvez rencontrer des problèmes avec PySide6. Assurez-vous d'avoir :
- Python installé avec l'option "Add Python to PATH"
- Les Visual C++ Redistributables installés
- Les dépendances installées dans l'environnement virtuel
Contribution
Les contributions sont les bienvenues !
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/nouvelle-fonctionnalite) - Commitez vos modifications (
git commit -m 'Ajout de la nouvelle fonctionnalité') - Poussez vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Ouvrez une Pull Request
Licence
MIT License - voir le fichier LICENSE pour plus de détails.
Remerciements
- OpenStreetMap pour les données cartographiques
- Folium pour la visualisation cartographique
- PySide6 pour l'interface utilisateur
- gpxpy pour le parsing des fichiers GPX
- SQLite pour le stockage local des POI