From 4ef168c12d8a06cbffd0cb598e2f5fe7c0446474 Mon Sep 17 00:00:00 2001 From: 0c07d516632c138624818b1d249c5f44 <0c07d516632c138624818b1d249c5f44@app-learninglab.inria.fr> Date: Tue, 29 Apr 2025 09:26:24 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20dossier=20data=20pour=20les=20do?= =?UTF-8?q?nn=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module3/exo3/{ => data}/Cholera_Deaths.dbf | Bin module3/exo3/{ => data}/Cholera_Deaths.prj | 0 module3/exo3/{ => data}/Cholera_Deaths.sbn | Bin module3/exo3/{ => data}/Cholera_Deaths.sbx | Bin module3/exo3/{ => data}/Cholera_Deaths.shp | Bin module3/exo3/{ => data}/Cholera_Deaths.shx | Bin module3/exo3/{ => data}/OSMap.tfw | 0 module3/exo3/{ => data}/OSMap.tif | Bin module3/exo3/{ => data}/OSMap_Grayscale.tfw | 0 module3/exo3/{ => data}/OSMap_Grayscale.tif | Bin .../{ => data}/OSMap_Grayscale.tif.aux.xml | 0 .../exo3/{ => data}/OSMap_Grayscale.tif.ovr | Bin module3/exo3/{ => data}/Pumps.dbf | Bin module3/exo3/{ => data}/Pumps.prj | 0 module3/exo3/{ => data}/Pumps.sbx | Bin module3/exo3/{ => data}/Pumps.shp | Bin module3/exo3/{ => data}/Pumps.shx | Bin module3/exo3/{ => data}/SnowMap.tfw | 0 module3/exo3/{ => data}/SnowMap.tif | Bin module3/exo3/{ => data}/SnowMap.tif.aux.xml | 0 module3/exo3/{ => data}/SnowMap.tif.ovr | Bin module3/exo3/exercice_fr.html | 13601 ++++++++++++++++ module3/exo3/exercice_fr.ipynb | 26 +- 23 files changed, 13614 insertions(+), 13 deletions(-) rename module3/exo3/{ => data}/Cholera_Deaths.dbf (100%) rename module3/exo3/{ => data}/Cholera_Deaths.prj (100%) rename module3/exo3/{ => data}/Cholera_Deaths.sbn (100%) rename module3/exo3/{ => data}/Cholera_Deaths.sbx (100%) rename module3/exo3/{ => data}/Cholera_Deaths.shp (100%) rename module3/exo3/{ => data}/Cholera_Deaths.shx (100%) rename module3/exo3/{ => data}/OSMap.tfw (100%) rename module3/exo3/{ => data}/OSMap.tif (100%) rename module3/exo3/{ => data}/OSMap_Grayscale.tfw (100%) rename module3/exo3/{ => data}/OSMap_Grayscale.tif (100%) rename module3/exo3/{ => data}/OSMap_Grayscale.tif.aux.xml (100%) rename module3/exo3/{ => data}/OSMap_Grayscale.tif.ovr (100%) rename module3/exo3/{ => data}/Pumps.dbf (100%) rename module3/exo3/{ => data}/Pumps.prj (100%) rename module3/exo3/{ => data}/Pumps.sbx (100%) rename module3/exo3/{ => data}/Pumps.shp (100%) rename module3/exo3/{ => data}/Pumps.shx (100%) rename module3/exo3/{ => data}/SnowMap.tfw (100%) rename module3/exo3/{ => data}/SnowMap.tif (100%) rename module3/exo3/{ => data}/SnowMap.tif.aux.xml (100%) rename module3/exo3/{ => data}/SnowMap.tif.ovr (100%) create mode 100644 module3/exo3/exercice_fr.html diff --git a/module3/exo3/Cholera_Deaths.dbf b/module3/exo3/data/Cholera_Deaths.dbf similarity index 100% rename from module3/exo3/Cholera_Deaths.dbf rename to module3/exo3/data/Cholera_Deaths.dbf diff --git a/module3/exo3/Cholera_Deaths.prj b/module3/exo3/data/Cholera_Deaths.prj similarity index 100% rename from module3/exo3/Cholera_Deaths.prj rename to module3/exo3/data/Cholera_Deaths.prj diff --git a/module3/exo3/Cholera_Deaths.sbn b/module3/exo3/data/Cholera_Deaths.sbn similarity index 100% rename from module3/exo3/Cholera_Deaths.sbn rename to module3/exo3/data/Cholera_Deaths.sbn diff --git a/module3/exo3/Cholera_Deaths.sbx b/module3/exo3/data/Cholera_Deaths.sbx similarity index 100% rename from module3/exo3/Cholera_Deaths.sbx rename to module3/exo3/data/Cholera_Deaths.sbx diff --git a/module3/exo3/Cholera_Deaths.shp b/module3/exo3/data/Cholera_Deaths.shp similarity index 100% rename from module3/exo3/Cholera_Deaths.shp rename to module3/exo3/data/Cholera_Deaths.shp diff --git a/module3/exo3/Cholera_Deaths.shx b/module3/exo3/data/Cholera_Deaths.shx similarity index 100% rename from module3/exo3/Cholera_Deaths.shx rename to module3/exo3/data/Cholera_Deaths.shx diff --git a/module3/exo3/OSMap.tfw b/module3/exo3/data/OSMap.tfw similarity index 100% rename from module3/exo3/OSMap.tfw rename to module3/exo3/data/OSMap.tfw diff --git a/module3/exo3/OSMap.tif b/module3/exo3/data/OSMap.tif similarity index 100% rename from module3/exo3/OSMap.tif rename to module3/exo3/data/OSMap.tif diff --git a/module3/exo3/OSMap_Grayscale.tfw b/module3/exo3/data/OSMap_Grayscale.tfw similarity index 100% rename from module3/exo3/OSMap_Grayscale.tfw rename to module3/exo3/data/OSMap_Grayscale.tfw diff --git a/module3/exo3/OSMap_Grayscale.tif b/module3/exo3/data/OSMap_Grayscale.tif similarity index 100% rename from module3/exo3/OSMap_Grayscale.tif rename to module3/exo3/data/OSMap_Grayscale.tif diff --git a/module3/exo3/OSMap_Grayscale.tif.aux.xml b/module3/exo3/data/OSMap_Grayscale.tif.aux.xml similarity index 100% rename from module3/exo3/OSMap_Grayscale.tif.aux.xml rename to module3/exo3/data/OSMap_Grayscale.tif.aux.xml diff --git a/module3/exo3/OSMap_Grayscale.tif.ovr b/module3/exo3/data/OSMap_Grayscale.tif.ovr similarity index 100% rename from module3/exo3/OSMap_Grayscale.tif.ovr rename to module3/exo3/data/OSMap_Grayscale.tif.ovr diff --git a/module3/exo3/Pumps.dbf b/module3/exo3/data/Pumps.dbf similarity index 100% rename from module3/exo3/Pumps.dbf rename to module3/exo3/data/Pumps.dbf diff --git a/module3/exo3/Pumps.prj b/module3/exo3/data/Pumps.prj similarity index 100% rename from module3/exo3/Pumps.prj rename to module3/exo3/data/Pumps.prj diff --git a/module3/exo3/Pumps.sbx b/module3/exo3/data/Pumps.sbx similarity index 100% rename from module3/exo3/Pumps.sbx rename to module3/exo3/data/Pumps.sbx diff --git a/module3/exo3/Pumps.shp b/module3/exo3/data/Pumps.shp similarity index 100% rename from module3/exo3/Pumps.shp rename to module3/exo3/data/Pumps.shp diff --git a/module3/exo3/Pumps.shx b/module3/exo3/data/Pumps.shx similarity index 100% rename from module3/exo3/Pumps.shx rename to module3/exo3/data/Pumps.shx diff --git a/module3/exo3/SnowMap.tfw b/module3/exo3/data/SnowMap.tfw similarity index 100% rename from module3/exo3/SnowMap.tfw rename to module3/exo3/data/SnowMap.tfw diff --git a/module3/exo3/SnowMap.tif b/module3/exo3/data/SnowMap.tif similarity index 100% rename from module3/exo3/SnowMap.tif rename to module3/exo3/data/SnowMap.tif diff --git a/module3/exo3/SnowMap.tif.aux.xml b/module3/exo3/data/SnowMap.tif.aux.xml similarity index 100% rename from module3/exo3/SnowMap.tif.aux.xml rename to module3/exo3/data/SnowMap.tif.aux.xml diff --git a/module3/exo3/SnowMap.tif.ovr b/module3/exo3/data/SnowMap.tif.ovr similarity index 100% rename from module3/exo3/SnowMap.tif.ovr rename to module3/exo3/data/SnowMap.tif.ovr diff --git a/module3/exo3/exercice_fr.html b/module3/exo3/exercice_fr.html new file mode 100644 index 0000000..fc0a5a9 --- /dev/null +++ b/module3/exo3/exercice_fr.html @@ -0,0 +1,13601 @@ + + +
+ +Ce notebook a pour objectif de reproduire la célèbre carte de John Snow montrant la répartition des décès dus au choléra à Soho en 1854. À l'aide de données géographiques historiques et d'outils modernes de visualisation, nous allons :
+L'ensembles des biliothèques et leur version respective se trouvent dans le fichier 'requirements.txt'
+ +!pip install -r requirements.txt
+
+print(("----------------------------------------"))
+print("Toutes les bibliothèques sont installées !")
+
# Importation des bibliothèques nécessaires à notre analyse
+import geopandas as gpd
+import folium
+import matplotlib.pyplot as plt
+from shapely.geometry import Point
+
+print("Toutes les bibliothèques sont importées !")
+
Nous utilisons ici les fichiers Shapefile fournis dans l’archive SnowGIS_SHP
provenant de ce site :
https://blog.rtwilson.com/john-snows-cholera-data-in-more-formats/
+Ces fichiers contiennent les données géographiques suivantes :
+Cholera_Deaths.shp
: emplacements des décès dus au choléra, avec le nombre de morts par adresse.Pumps.shp
: emplacements des pompes à eau publiques dans le quartier de Soho.Nous utilisons la bibliothèque GeoPandas
pour lire ces fichiers et vérifier que les données sont bien chargées avec le bon système de coordonnées.
# Chargement des shapefiles avec GeoPandas
+deaths = gpd.read_file("data/Cholera_Deaths.shp")
+pumps = gpd.read_file("data/Pumps.shp")
+
+# Aperçu des données
+display(deaths.head())
+display(pumps.head())
+
+# Vérification du système de coordonnées (CRS)
+print("CRS des décès :", deaths.crs)
+print("CRS des pompes :", pumps.crs)
+
Folium utilise sur le système de coordonnées WGS 84 (latitude/longitude), qui est utilisé par défaut dans les cartes web comme OpenStreetMap.
+Cependant, nos fichiers shapefile utilisent actuellement le système British National Grid (EPSG:27700), qui fonctionne avec des coordonnées en mètres, propres au Royaume-Uni.
Afin de pouvoir afficher correctement nos données sur une carte interactive avec Folium, il est nécessaire de les convertir vers le système de projection WGS 84 (EPSG:4326).
+Cette opération est appelée une reprojection. Elle permet à nos points d'apparaître au bon endroit sur la carte.
Nous réalisons cette conversion avec la méthode .to_crs(epsg=4326) de GeoPandas, qui transforme les coordonnées de chaque géométrie.
+ +# Reprojection en EPSG:4326 (latitude/longitude)
+deaths_wgs84 = deaths.to_crs(epsg=4326)
+pumps_wgs84 = pumps.to_crs(epsg=4326)
+
+# Aperçu pour vérification
+deaths_wgs84.head()
+
Nous utilisons la bibliothèque folium
pour créer une carte interactive centrée sur le quartier de Soho.
Count
).Cette visualisation permet de retrouver la logique de la carte originale de John Snow, en montrant la concentration des décès autour de certaines pompes.
+ +# Obtenir le centre de la carte en prenant le centre des décès
+map_center = [deaths_wgs84.geometry.y.mean(), deaths_wgs84.geometry.x.mean()]
+
+# Créer la carte Folium centrée sur Soho
+m = folium.Map(location=map_center, zoom_start=17, tiles='cartodbpositron')
+
+# Ajouter les décès avec des cercles proportionnels à Count
+for _, row in deaths_wgs84.iterrows():
+ folium.CircleMarker(
+ location=[row.geometry.y, row.geometry.x],
+ radius=row['Count'] * 1.5, # multiplier pour avoir une taille visible
+ color='red',
+ fill=True,
+ fill_color='red',
+ fill_opacity=0.6,
+ popup=f"{row['Count']} décès"
+ ).add_to(m)
+
+# Ajouter les pompes avec une icône bleue
+for _, row in pumps_wgs84.iterrows():
+ folium.Marker(
+ location=[row.geometry.y, row.geometry.x],
+ icon=folium.Icon(color='blue', icon='tint', prefix='fa'),
+ popup="Pompe à eau"
+ ).add_to(m)
+
+# Afficher la carte
+m
+
Pour identifier visuellement les zones les plus touchées par l’épidémie, nous utilisons une carte de chaleur (heatmap).
+Chaque point de décès est pondéré par le nombre de morts (Count
). On observe ainsi une zone de concentration très nette autour d'une certaine pompe.
+On voyait déjà cela avec les cercles mais je trouve la heat map plus parlante.
from folium.plugins import HeatMap
+
+# Extraire les points avec leur pondération
+heat_data = [[row.geometry.y, row.geometry.x, row['Count']] for _, row in deaths_wgs84.iterrows()]
+
+# Nouvelle carte centrée sur Soho
+m_heat = folium.Map(location=map_center, zoom_start=17, tiles='cartodbpositron')
+
+# Ajouter la heatmap des décès
+HeatMap(heat_data, radius=15, blur=10, max_zoom=18).add_to(m_heat)
+
+# Ajouter les pompes pour référence
+for _, row in pumps_wgs84.iterrows():
+ folium.Marker(
+ location=[row.geometry.y, row.geometry.x],
+ icon=folium.Icon(color='blue', icon='tint', prefix='fa'),
+ popup="Pompe à eau"
+ ).add_to(m_heat)
+
+# Afficher la heatmap
+m_heat
+
Grâce à nos outils de visualisation de données géospatiales, nous avons pu reproduire et enrichir l’analyse historique de John Snow sur l’épidémie de choléra de 1854 à Soho.
+