Les données sont obtenues en temps réel sur :
https://earthquake.usgs.gov/earthquakes/feed/v1.0/csv.php
données fournies par l'US Geological Survey...
1. On commence par importer les bibliothéques
import folium
import csv
import requests
2. On importe les données depuis le site USGS
Le site mets à disposition plusieur type de fichiers -> dernière heure, dernier jour, derniers 7 jours etc .... voir (https://earthquake.usgs.gov/earthquakes/feed/v1.0/csv.php)
Le choix est fait ici de visualiser les séismes d'une magnitude supérieure à 2,5, le mois dernier.
Le fichier CSV est stockée dans la variable tremblement_csv sous forme de liste
# Importation des données au format CSV
url="http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.csv"
csvfile = requests.get(url)
csvfile = csvfile.content.decode('utf-8')
3. Création de la carte vide
La bibiothèque folium permet de générer une carte vide.... pour l'instant
carte_tremblements = folium.Map(location=[0,0], zoom_start=3)
display(carte_tremblements)
4. Lecture du fichier csv et positionnement des marqueurs.
Structure du fichier csv 0 : date , 1: latitude , 2 : Longitude , 3 : profondeur, 4 : Magnitude
carte_tremblements = folium.Map(location=[0,0], zoom_start=3)
tremblements_csv = csv.reader(csvfile.splitlines(), delimiter=',')
# pour éviter la ligne d'en têtes.
header = next(tremblements_csv)
# On lit maintenant chaque ligne du fichier csv téléchargé
for ligne in tremblements_csv :
latitude = float(ligne[1])
longitude = float(ligne[2])
folium.Marker([latitude,longitude]).add_to(carte_tremblements)
display(carte_tremblements)
5. On affine en affichant la magnitude du seismes
On ajoute donc un pop-up qui affiche la magnitude, tout simplement
carte_tremblements = folium.Map(location=[0,0], zoom_start=3)
tremblements_csv = csv.reader(csvfile.splitlines(), delimiter=',')
# pour éviter la ligne d'en têtes.
header = next(tremblements_csv)
# On lit maintenant chaque ligne du fichier csv téléchargé
for ligne in tremblements_csv :
latitude = float(ligne[1])
longitude = float(ligne[2])
magnitude = "Magnitude : "+ str(ligne[4])
folium.Marker([latitude,longitude],popup = magnitude).add_to(carte_tremblements)
display(carte_tremblements)
Prolongement possibles :
carte_tremblements = folium.Map(location=[0,0], zoom_start=3)
tremblements_csv = csv.reader(csvfile.splitlines(), delimiter=',')
# pour éviter la ligne d'en têtes.
header = next(tremblements_csv)
# On lit maintenant chaque ligne du fichier csv téléchargé
for ligne in tremblements_csv :
latitude = float(ligne[1])
longitude = float(ligne[2])
magnitude = "Magnitude : "+ str(ligne[4])
if float(ligne[4]) > 5 :
folium.Marker([latitude,longitude],popup = magnitude,icon = folium.Icon(color='red')).add_to(carte_tremblements)
elif float(ligne[4]) > 4.7 :
folium.Marker([latitude,longitude],popup = magnitude,icon = folium.Icon(color='blue')).add_to(carte_tremblements)
else :
folium.Marker([latitude,longitude],popup = magnitude,icon = folium.Icon(color='green')).add_to(carte_tremblements)
display(carte_tremblements)