.. | ||
osm_data | ||
.gitignore | ||
cities_insee.csv | ||
counting.sh | ||
dashboard_zone.py | ||
generate_graph.py | ||
get_all_polys.py | ||
get_poly.py | ||
historize_zone.py | ||
latest.sh | ||
loop_thematics_history_in_zone_to_counts.py | ||
osm-commerces-villes-export.csv | ||
plotly_city.py | ||
README.md | ||
README_update.md | ||
up.sh | ||
update.py |
Counting OSM Objects
Ce répertoire contient des scripts pour compter et analyser les objets OpenStreetMap dans différentes zones administratives françaises.
Pour fonctionner vous aurez besoin du fichier historisé de la france, pour cela connectez vous à geofabrik avec votre compte osm (oui c'est relou).
Scripts disponibles
activez le venv python et les dépendances
python -m venv bin/venv activate
source bin/venv/bin/activate
pip install plotly pandas
# extraire un historique pour une ville à partir de l'historique de france et du polygone de la ville
# ici pour paris on peut utiliser l'historique de l'ile de france
wget https://osm-commerces.cipherbliss.com/admin/export_csv
py get_all_polys.py # ce qui utilise l'export csv des villes de osm mon commerce
osmium extract -p polygons/commune_75056.poly -H osm_data/ile-de-france-internal.osh.pbf -s complete_ways -O -o commune_75056.osh.pbf
# générer les historiques de la commune 76216 pour tous ses thèmes et tous ses graphes
py loop_thematics_history_in_zone_to_counts.py --input osm_data/commune_76216.osh.pbf --output-dir test_results --temp-dir test_temp --max-dates 100 --poly polygons/commune_76216.poly
# générer un graphe pour un thème dans une ville
py generate_graph.py --insee 91111 test_results/commune_75056_building.csv
Graphique sauvegardé: test_results/commune_75056_building_monthly_graph.png
Graphique de complétion sauvegardé: test_results/commune_75056_building_monthly_graph_completion.png
Graphiques générés avec succès!
historize_zone.py
Ce script principal permet de lancer l'analyse historique d'une ville dans OpenStreetMap. Il:
- Demande à l'utilisateur quelle ville il souhaite traiter
- Trouve le code INSEE de la ville demandée
- Vérifie si le polygone de la ville existe, sinon le récupère
- Traite les données historiques OSM pour cette ville en utilisant loop_thematics_history_in_zone_to_counts.py
Utilisation
python historize_zone.py [--input fichier_historique.osh.pbf]
Si le fichier d'historique n'est pas spécifié, le script utilisera par défaut le fichier
osm_data/france-internal.osh.pbf
.
Exemples
Lancer l'analyse avec le fichier d'historique par défaut:
python historize_zone.py
Lancer l'analyse avec un fichier d'historique spécifique:
python historize_zone.py --input osm_data/ile-de-france-internal.osh.pbf
loop_thematics_history_in_zone_to_counts.py
Ce script compte les objets OSM par thématique sur une zone donnée à différentes dates. Il:
- Filtre les données historiques OSM à différentes dates (mensuelles sur les 10 dernières années)
- Compte les objets correspondant à chaque thématique à chaque date
- Calcule le pourcentage de complétion des attributs importants pour chaque thème
- Sauvegarde les résultats dans des fichiers CSV
- Génère des graphiques montrant l'évolution dans le temps
Utilisation
python loop_thematics_history_in_zone_to_counts.py --input fichier.osh.pbf --poly polygons/commune_XXXXX.poly
Ce script est généralement appelé par historize_zone.py et ne nécessite pas d'être exécuté directement.
get_poly.py
Ce script permet de récupérer le polygone d'une commune française à partir de son code INSEE. Il interroge l'API Overpass Turbo pour obtenir les limites administratives de la commune et sauvegarde le polygone dans un fichier au format .poly (compatible avec Osmosis).
Utilisation
python get_poly.py [code_insee]
Si le code INSEE n'est pas fourni en argument, le script le demandera interactivement.
Exemples
Récupérer le polygone de la commune d'Étampes (code INSEE 91111) :
python get_poly.py 91111
Le polygone sera sauvegardé dans le fichier polygons/commune_91111.poly
.
Format de sortie
Le fichier de sortie est au format .poly, qui est utilisé par Osmosis et d'autres outils OpenStreetMap. Il contient :
- Le nom de la commune
- Un numéro de section
- Les coordonnées des points du polygone (longitude, latitude)
- Des marqueurs "END" pour fermer le polygone et le fichier
Exemple de contenu :
commune_91111
1
2.1326337 48.6556426
2.1323684 48.6554398
...
2.1326337 48.6556426
END
END
Dépendances
- Python 3.6+
- Modules Python : argparse, urllib, json
- Pour compare_osm_objects.sh : PostgreSQL, curl, jq
Installation
Aucune installation spécifique n'est nécessaire pour ces scripts. Assurez-vous simplement que les dépendances sont installées.
Licence
Ces scripts sont distribués sous la même licence que le projet Osmose-Backend.