Ce script utilise Folium pour générer des cartes interactives en HTML.
#### Syntaxe
```bash
python map_simple.py <osm_id> [options]
```
#### Arguments
-`<osm_id>` : ID OpenStreetMap de la ville (obligatoire)
-`-o, --output` : Chemin où sauvegarder la carte HTML (par défaut: city_map.html)
-`-v, --verbose` : Afficher les messages de débogage
#### Exemples
```bash
python map_simple.py 1209165 -o carte_ville.html
```
### Script simplifié : simple_map.py
Version simplifiée qui utilise directement l'API Overpass pour récupérer les données.
#### Syntaxe
```bash
python simple_map.py <osm_id> [options]
```
#### Arguments
-`<osm_id>` : ID OpenStreetMap de la ville (obligatoire)
-`-o, --output` : Chemin où sauvegarder la carte HTML (par défaut: city_map.html)
#### Exemples
```bash
python simple_map.py 1209165 -o carte_ville.html
```
### Fonds de carte disponibles
Les cartes générées utilisent par défaut le fond de carte **Stamen Terrain** qui offre une meilleure lisibilité et un rendu plus esthétique que le fond OpenStreetMap standard. Les cartes interactives incluent également un sélecteur de fonds de carte permettant de basculer entre :
- **OpenStreetMap** : fond standard d'OpenStreetMap
Pour changer de fond de carte, utilisez le contrôle de couches situé en haut à droite de la carte interactive.
### Filtrage précis des éléments
Les scripts de génération de cartes utilisent désormais une méthode avancée pour récupérer uniquement les éléments (routes, bâtiments, parkings) qui se trouvent à l'intérieur du polygone de la ville, et non plus simplement dans une boîte englobante rectangulaire. Cela permet d'obtenir des cartes plus précises qui ne contiennent que les éléments appartenant réellement à la ville.
Cette fonctionnalité utilise l'opérateur `area` de l'API Overpass pour filtrer les éléments par leur appartenance géographique au polygone de la ville, ce qui donne des résultats beaucoup plus précis qu'un simple filtrage par coordonnées.
**Note :** Pour les points d'intérêt (nodes), un filtrage par boîte englobante est toujours utilisé, mais avec un rayon réduit.
## Conversion HTML vers JPG
Deux scripts sont disponibles pour convertir les cartes HTML en images JPG.
### Script recommandé : html2jpg.py
Ce script utilise Playwright pour rendre la page web et la capturer en image.
#### Prérequis
```bash
pip install playwright
playwright install
```
#### Syntaxe
```bash
python html2jpg.py <fichier_html> [-o output.jpg]
```
#### Arguments
-`<fichier_html>` : Chemin vers le fichier HTML à convertir (obligatoire)
3.**Alternative manuelle** : Ouvrez le fichier HTML dans un navigateur et prenez une capture d'écran.
### ID OpenStreetMap invalide
Si l'ID OpenStreetMap ne fonctionne pas, vérifiez qu'il s'agit bien d'une relation, d'un way ou d'un node valide sur [OpenStreetMap](https://www.openstreetmap.org/).
### Trouver l'ID OpenStreetMap d'une ville
1. Allez sur [OpenStreetMap](https://www.openstreetmap.org/)
2. Recherchez la ville souhaitée
3. Cliquez sur la ville dans les résultats
4. L'URL contiendra l'ID, par exemple : `https://www.openstreetmap.org/relation/123456`
5. L'ID est le nombre après "relation/" (ici, 123456)
### Recherche automatique d'ID OpenStreetMap
Le script `find_city_osm_id.py` permet de rechercher automatiquement l'identifiant OpenStreetMap d'une ville à partir de son nom.
#### Syntaxe
```bash
python find_city_osm_id.py <nom_ville> [options]
```
#### Arguments
-`<nom_ville>` : Nom de la ville à rechercher (obligatoire)
-`-c, --country` : Code pays pour filtrer les résultats (ex: fr, be, ch)
-`-l, --limit` : Nombre maximum de résultats à afficher (défaut: 5)
-`-r, --relation-only` : Afficher uniquement les IDs de relation
-`-j, --json` : Afficher les résultats au format JSON
-`-g, --generate-map` : Générer automatiquement une carte pour le premier résultat (actif par défaut)
-`-ng, --no-generate-map` : Ne pas générer automatiquement de carte
-`-o, --output` : Chemin où sauvegarder la carte générée (défaut: carte_ville.html)
-`--no-folium` : Utiliser OSMnx au lieu de Folium pour la génération de carte
-`-v, --verbose` : Afficher les messages de débogage
#### Exemples
```bash
# Recherche simple avec génération automatique de carte
python find_city_osm_id.py "Briis-sous-Forges"
# Filtrer par pays (France) sans génération de carte
python find_city_osm_id.py "Paris" -c fr -ng
# Recherche avec génération de carte et spécification du fichier de sortie
Le script utilise l'API Nominatim d'OpenStreetMap pour rechercher les villes correspondant au nom fourni. Pour chaque résultat, il affiche :
1. Le nom de la ville et son type (city, town, village, etc.)
2. Sa localisation (département, région, pays)
3. Son identifiant OpenStreetMap et son type (node, way, relation)
4. L'URL pour accéder à la ville sur OpenStreetMap
Si le résultat n'est pas déjà une relation, le script recherche automatiquement l'identifiant de relation associé en utilisant l'API Overpass.
#### Génération automatique de carte
Par défaut, le script génère automatiquement une carte HTML avec Folium pour le premier résultat trouvé. Cette fonctionnalité peut être désactivée avec l'option `-ng` ou `--no-generate-map`.
Le processus de génération de carte est le suivant :
1. Le script trouve l'ID OpenStreetMap de la ville
2. Si l'élément n'est pas une relation, il recherche l'ID de relation associé
3. Il exécute automatiquement `generate_city_map.py` avec l'ID trouvé
4. La carte est générée au format HTML (par défaut) ou JPG (si `--no-folium` est spécifié)
5. Le chemin vers la carte générée est affiché
Si la carte est générée au format HTML, le script suggère également la commande pour la convertir en JPG avec `html2jpg.py`.
#### Workflow tout-en-un
Ce script simplifie considérablement le workflow en permettant de passer directement du nom d'une ville à une carte générée en une seule commande :
```bash
# Rechercher une ville, générer sa carte HTML et la convertir en JPG
Cette approche est beaucoup plus simple que de rechercher manuellement l'ID OpenStreetMap de la ville, puis d'exécuter séparément les scripts de génération de carte.
## Utilisation simplifiée avec Make
Un Makefile est disponible pour simplifier l'installation et l'utilisation du projet. Cette approche est recommandée pour les utilisateurs qui souhaitent une solution clé en main.
### Installation avec Make
Pour installer l'environnement virtuel et toutes les dépendances nécessaires :
```bash
make setup
```
Cette commande va :
- Créer un environnement virtuel Python
- Installer toutes les dépendances requises depuis requirements.txt
- Installer et configurer Playwright pour la conversion HTML vers JPG
Après l'installation, activez l'environnement virtuel :
```bash
source venv/bin/activate
```
### Commandes disponibles
#### Analyse d'une ville
Pour récupérer les données, effectuer l'analyse et générer une carte pour une ville :
```bash
make city CITY="Nom de la ville"
```
Exemple :
```bash
make city CITY="Paris"
```
Cette commande exécute automatiquement :
1.`fetch.py` pour récupérer les données OpenStreetMap
2.`find_city_osm_id.py` pour générer une carte HTML
3.`html2jpg.py` pour convertir la carte en image JPG
Les fichiers générés seront :
-`Paris_results.json` : Résultats de l'analyse
-`Paris_carte.html` : Carte HTML interactive
-`Paris_carte.jpg` : Image de la carte
#### Génération d'un rapport HTML
Pour générer un rapport HTML à partir des résultats d'analyse :
```bash
make report CITY="Paris"
```
Cette commande utilise `present.py` pour générer un rapport HTML à partir du fichier `Paris_results.json`.
#### Analyse complète
Pour effectuer l'analyse complète (données, carte et rapport) en une seule commande :
```bash
make all CITY="Paris"
```
#### Nettoyage
Pour supprimer tous les fichiers temporaires et l'environnement virtuel :
```bash
make clean
```
### Avantages de l'utilisation de Make
- **Simplicité** : Une seule commande pour effectuer plusieurs opérations
- **Cohérence** : Nommage cohérent des fichiers de sortie
- **Environnement isolé** : Utilisation d'un environnement virtuel pour éviter les conflits de dépendances
- **Automatisation** : Enchaînement automatique des différentes étapes du workflow
Cette approche est particulièrement recommandée pour les utilisateurs qui souhaitent analyser plusieurs villes ou qui utilisent régulièrement le projet.