Open In Colab

Affichage sur une carte des données de tremblements de Terre

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

In [0]:
 

1. On commence par importer les bibliothéques

  • folium permet de générer les cartes et de placer les marqueurs
  • csv permet de traiter les données obtenues dans un fichier csv
  • request permet de télécharger les données depuis le site de l'USGS
In [0]:
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

In [0]:
# 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')
In [0]:
 

3. Création de la carte vide

La bibiothèque folium permet de générer une carte vide.... pour l'instant

In [0]:
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

In [0]:
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

In [0]:
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 :

  • on peut demander aux élèves d'afficher avec un marker rouge les seismes dont la magnitude est supérieure à 6.
  • on peut leur demander d'afficher la date dans le popup...
    • et plein d'autres trucs...
In [0]:
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)