osm-commerces/counting_osm_objects
2025-08-21 16:07:02 +02:00
..
city_analysis ajout analyses osmose dans les pages de détail 2025-08-21 16:07:02 +02:00
osm_data add computing from osm history 2025-07-27 18:01:24 +02:00
.gitignore ajout analyses osmose dans les pages de détail 2025-08-21 16:07:02 +02:00
analyze_city_polygons.py script d'analyse de plusieurs polygones de ville 2025-08-21 11:27:14 +02:00
cities_insee.csv import city followup from csv 2025-08-08 18:09:29 +02:00
counting.sh add computing from osm history 2025-07-27 18:01:24 +02:00
dashboard_zone.py add computing from osm history 2025-07-27 18:01:24 +02:00
generate_graph.py up 2025-07-28 16:37:50 +02:00
get_all_polys.py add computing from osm history 2025-07-27 18:01:24 +02:00
get_poly.py add computing from osm history 2025-07-27 18:01:24 +02:00
historize_zone.py up 2025-07-28 16:37:50 +02:00
latest.sh up 2025-07-28 16:37:50 +02:00
loop_thematics_history_in_zone_to_counts.py up details theme graph page 2025-08-12 11:39:05 +02:00
osm-commerces-villes-export.csv up 2025-07-28 16:37:50 +02:00
plotly_city.py add computing from osm history 2025-07-27 18:01:24 +02:00
README.md ajout de ville sans labourage par défaut 2025-08-21 11:56:02 +02:00
README_update.md up 2025-07-28 16:37:50 +02:00
up.sh up 2025-07-28 16:37:50 +02:00
update.py up 2025-07-28 16:37:50 +02:00

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).

TODO

faire une extraction json de toutes les zones insee de france et réaliser des mesures pour tous les thèmes.

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:

  1. Demande à l'utilisateur quelle ville il souhaite traiter
  2. Trouve le code INSEE de la ville demandée
  3. Vérifie si le polygone de la ville existe, sinon le récupère
  4. 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:

  1. Filtre les données historiques OSM à différentes dates (mensuelles sur les 10 dernières années)
  2. Compte les objets correspondant à chaque thématique à chaque date
  3. Calcule le pourcentage de complétion des attributs importants pour chaque thème
  4. Sauvegarde les résultats dans des fichiers CSV
  5. 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.

analyze_city_polygons.py

Ce script analyse les polygones de villes et génère des fichiers JSON d'analyse. Il:

  1. Parcourt tous les fichiers de polygones dans le dossier "polygons"
  2. Pour chaque polygone, vérifie si un fichier d'analyse JSON existe déjà
  3. Si non, utilise loop_thematics_history_in_zone_to_counts.py pour extraire les données
  4. Sauvegarde les résultats dans un fichier JSON avec une analyse de complétion
  5. Ajoute une date de création à chaque analyse

Utilisation

python analyze_city_polygons.py [--force] [--single CODE_INSEE]

Options:

  • --force ou -f: Force la recréation des analyses existantes
  • --single ou -s: Traite uniquement le polygone spécifié (code INSEE)

Exemples

Analyser tous les polygones disponibles:

python analyze_city_polygons.py

Analyser uniquement la commune avec le code INSEE 59140:

python analyze_city_polygons.py --single 59140

Forcer la recréation des analyses existantes:

python analyze_city_polygons.py --force

Format de sortie

Les fichiers d'analyse sont au format JSON et sont sauvegardés dans le dossier city_analysis. Chaque fichier contient:

  • Une section themes avec des données pour chaque thématique (nombre d'objets, pourcentage de complétion, etc.)
  • Une section metadata avec des informations sur l'analyse (code INSEE, date de création, statistiques globales)

Exemple de contenu:

{
  "themes": {
    "borne-de-recharge": {
      "date": "2025-08-21",
      "zone": "commune_59140",
      "theme": "borne-de-recharge",
      "nombre_total": 0,
      "nombre_avec_operator": 0,
      "nombre_avec_capacity": 0,
      "pourcentage_completion": 0
    },
    "borne-incendie": {
      "date": "2025-08-21",
      "zone": "commune_59140",
      "theme": "borne-incendie",
      "nombre_total": 0,
      "nombre_avec_ref": 0,
      "nombre_avec_colour": 0,
      "pourcentage_completion": 0
    }
  },
  "metadata": {
    "insee_code": "59140",
    "creation_date": "2025-08-21 11:12:20",
    "polygon_file": "commune_59140.poly",
    "osm_data_file": "france-latest.osm.pbf",
    "total_objects": 679,
    "average_completion": 0.44,
    "theme_count": 7
  }
}

Licence

Ces scripts sont distribués sous la même licence que le projet Osmose-Backend.