diff --git a/module3/exo3/exercice_fr_Cholera.html b/module3/exo3/exercice_fr_Cholera.html new file mode 100644 index 0000000000000000000000000000000000000000..f62bcd4034f9bdef975ad4840780b4799472b3f6 --- /dev/null +++ b/module3/exo3/exercice_fr_Cholera.html @@ -0,0 +1,14665 @@ + + +
+ + +import folium
+import pyproj
+import geopandas as gpd
+
Nous lisons les fichiers géographiques (format Shape d'ESRI), et les convertissions en dataframes de la bibliothèque geopandas.
+ +cholera_deaths = gpd.read_file('Cholera_Deaths.shp',encoding='ANSI')
+
cholera_deaths.crs
+
{'proj': 'tmerc', + 'lat_0': 49, + 'lon_0': -2, + 'k': 0.9996012717, + 'x_0': 400000, + 'y_0': -100000, + 'ellps': 'airy', + 'units': 'm', + 'no_defs': True}+
Nous reprojetons ces couches géographiques dans un référentiel géographique (défini par le code EPSG) exploitable sous folium. Attention, la valeur de l'attribut 'crs' écrit sous la forme "EPSG:4326" ne fonctionnera pas sous Windows (version pyproj 3.0.0.post1) :
+Les deux écritures sont cependant possible sous Linux : cf. version pyproj, et ce que dit le fichier __init__.py ?
+ +cholera_deaths = cholera_deaths.to_crs(epsg = 4326)
+
Comme nous avons beaucoup de cas à cartographier, nous convertissons notre geopandas dataframe en un fichier geojson, un format de données géographiques courant, directement lisible par folium.
+ +cholera_deaths.to_file("cholera_deaths.geojson", driver='GeoJSON')
+
Nous initialisons la carte produite par folium, en la centrant sur un point et en définissant un niveau de zoom.
+ +### Initialisation de la carte, et ajout direct des cas de cholera
+
carte_snow_1854 = folium.Map(location = [51.514 , -0.1365], zoom_start=17)
+
folium.GeoJson("cholera_deaths.geojson", name="Incidences").add_to(carte_snow_1854)
+
<folium.features.GeoJson at 0x15dc435ed08>+
pumps = gpd.read_file('Pumps.shp')
+
pumps = pumps.to_crs(epsg = 4326)
+
pumps.to_file("pumps.geojson", driver = 'GeoJSON')
+
[folium.CircleMarker([pumps.geometry.y[i], pumps.geometry.x[i]] , popup = "Pompes", color = 'red', radius = 100).add_to(carte_snow_1854) for i in range(len(pumps.geometry.x))]
+
[<folium.vector_layers.CircleMarker at 0x15dc43b2388>, + <folium.vector_layers.CircleMarker at 0x15dc43b2ac8>, + <folium.vector_layers.CircleMarker at 0x15dc43b3c48>, + <folium.vector_layers.CircleMarker at 0x15dc43b3fc8>, + <folium.vector_layers.CircleMarker at 0x15dc1f42988>, + <folium.vector_layers.CircleMarker at 0x15dc43b7b88>, + <folium.vector_layers.CircleMarker at 0x15dc43b7e08>, + <folium.vector_layers.CircleMarker at 0x15dc43b7ac8>]+
La méthode LayerControl permet de gérer l'affichage de plusieurs couches géographiques
+ +folium.LayerControl().add_to(carte_snow_1854)
+
<folium.map.LayerControl at 0x15dc43b3d48>+
carte_snow_1854
+