NSI- Traitement de données TD
TD05 – Les fichiers JSON
Sources : Grand Merci à David Roche – pixees.fr
Logiciels : vous aurez besoin
D'un éditeur de texte (Notepad ou Notepad++)
I- Le format JSON {
Le JSON (JavaScript Object Notation) est un autre format de données courante. cle_1 : val_1,
Le JSON fonctionne sur un système de paire clé/valeur avec chaque "objet" séparée par cle_2 : val_2,
une virgule "," et encadré par des accolades { }: {cle_1 : val_1, cle_2 : val_2, cle_3 : val_3
}
cle_3 : val_3} mais souvent, pour une question de lisibilité, on écrira comme ci-contre
La "valeur" d'une paire "clé/valeur" peut être une liste :
{
{ "nom" : "Durand",
"nom" : "Durand", "prenom" : "Jean-Pierre",
"prenom" : "Jean-Pierre", "date_naissance" : "23/05/1985"
"date_naissance" : "23/05/1985" "adresse" : {
"sport" : ["tennis", "football", "golf"] "num":6,
} "rue":"impasse du rossignol",
ou même un autre objet comme ci-contre "ville":"Nogent-le-Rotrou",
"cp":"28400"
Comme vous pouvez le constater, il est possible
}
d'obtenir des structures de données très complexes }
avec le format JSON.
Téléchargez le fichier personnes.json et ouvrez-le avec un navigateur (Firefox de préférence) et avec Notepad++.
Ajoutez une personne et tous les renseignements nécessaires dans le fichier avec Notepad++ et vérifiez
vos modifications avec votre navigateur.
II- Open Data
De nombreux sites web permettent de trouver des bases de données sous format JSON ou le format CSV
(exemple : data.gouv.fr) mais il est possible de trouver sites proposant des services basés sur des API
(Application Programming Interface). Ils vous fournissent alors des données "présélectionnées" (pour ne pas
avoir à télécharger toute la base de données) aux formats voulus sur "simple demande" par l'intermédiaire d'une url (une
adresse) dans laquelle les paramètres de sélection sont intégrés.
1) Site de données météorologiques
Nous allons illustrer ce propos en utilisant l'API d'un site qui fournit des informations météo au format
JSON (données météo actuelles). Vous trouverez ce site à l'adresse suivante : openweathermap.org/api
Pour profiter de ce service, il est nécessaire d'obtenir une clé (API key).
Cette clé est : bfa7cfbe9b2db74b26386ed04b448787
Ouvrez un navigateur (Firefox de préférence) et saisir l'url suivante dans la barre d'adresse (sur une seule ligne) :
http://api.openweathermap.org/data/2.5/weather?q=saint-gaudens,fr&lang=fr&units=metric&
APPID=bfa7cfbe9b2db74b26386ed04b448787
L'url est composée de 2 parties :
http://api.openweathermap.org/data/2.5/weather
cela correspond au dossier du serveur openweathermap.com contenant les données
?q=saint-gaudens,fr&lang=fr&units=metric&APPID=bfa7cfbe9b2db74b26386ed04b448787
Après un "?", on trouve les différents paramètres permettent au site de sélectionner les données
avec les paramètres suivants (paramètres séparés par "&") :
q=saint-gaudens,fr :le paramètre "q" correspond au nom de la ville suivi du pays (fr dans notre cas)
lang=fr la langue utilisée sera le français
units=metric on désire avoir les longueurs en mètres (et les vitesses en mètre par seconde).
APPID = XXXXXXXXXXXXX correspond à la clé (API key), nécessaire pour ce site
Il est possible de construire des requêtes beaucoup plus complexes (cf. le site openweathermap.org).
NSI- Traitement de données TD
Détaillons quelques données JSON renvoyées :
"coord":{"lon":0.67,"lat":43.08} coordonnées de du lieu (latitude et longitude)
"weather":[{"id":803,"main":"Clouds","description":"nuageux","icon":"04n"}]
correspond à un tableau qui contient un seul objet (une liste [ …]).
"main":{"temp":11.46,"pressure":1013,"humidity":81,"temp_min":10,"temp_max":12.78}
correspond à un objet qui contient différents types d'informations
"dt":1586904289 correspond à l'heure et la date de diffusion du bulletin au format timestamp
"sunrise":1586927680 heure de lever du soleil au format timestamp
"sunset":1586975965 heure de coucher du soleil au format timestamp
Format timestamp : les dates et les heures sont fournies au format "timestamp".
Le "timestamp" désigne le nombre de secondes écoulé depuis le 1er janvier 1970 à minuit UTC précise. Au
lieu de donner une date et une heure pour un événement donné, il est possible de donner son "timestamp".
Par exemple, au lieu de dire l'événement A a eu lieu le 24 octobre 2018 à 13h 11 minutes et 10 secondes, on
pourra dire que l'événement A à pour "timestamp" 1540379470 (durée qui s'est écoulé en seconde entre le 1er
janvier 1970 à minuit UTC et le 24 octobre 2018 à 13h 11 minutes et 10 secondes) .
Vous trouverez un convertisseur de timestamp sur le site : www.timestamp.fr
Les noms des différentes villes disponibles sont visibles sur openweathermap.org/weathermap
Exo01 :
1) Quel est le type de requête HTTP faite ?
2) Déterminer la date et l'heure de diffusion du bulletin donné en exemple.
3) Saisir l'adresse pour obtenir les données de la ville que vous désirez.
2) Site de données sur les tremblements de terre (format geoJSON)
Le format geoJSON est inspiré du format JSON mais adapté aux données géospatiales.
Dans la barre d'adresse de votre navigateur (Firefox de préférence), tapez l'adresse suivante :
https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2020-01-01&
endtime=2020-04-15
Exo02 :
1) Analysez l'adresse et en vous inspirant de la décomposition du II-1), trouvez ce que votre requête renvoie.
Le site earthquake.usgs.gov, comme le site openweathermap.org, propose une API qui renvoie des
données à partir d'une simple url. Le site vous propose différentes options pour la requête, vous
trouverez une description complète de ces options ici
Attention, vous aurez un message d'erreur si votre requête renvoie plus de 20000 événements
Exo03 :
1) En vous aidant de la documentation présente sur le site earthquake.usgs.gov, écrivez une requête sous forme
d'url qui permettra d'obtenir des données (au format geoJSON) sur les tremblements de terre, d'une magnitude
supérieure à 5, ayant eu lieu ces 30 derniers jours partout dans le monde.
2) Testez votre requête en la copiant dans la barre d'adresse de votre navigateur. Une fois les données obtenues,
étudiez-les afin de comprendre la structure de ces données.
3) Écrivez une requête sous forme d'url qui permettra d'obtenir des données (au format geoJSON) sur les
tremblements de terre, d'une magnitude supérieure à 4, ayant eu lieu dans un rayon de 50 km autour de Saint-
Gaudens depuis 1980.
ATTENTION : dans le JSON renvoyé par le site " earthquake.usgs.gov" le timestamp est donné en
milliseconde, il est donc nécessaire de diviser par 1000 la valeur que vous allez trouver dans le JSON (et
garder uniquement la partie entière du résultat de votre division).
NSI- Traitement de données TD
Correction TD05 – Les fichiers JSON
Exercice 1
1) C'est une requête http de type GET car les paramètres transmis sont visibles dans la requête.
2) 14/4/2020 à 22:44:49
Exercice 2
https://earthquake.usgs.gov/fdsnws/event/1/query
Serveur où sont stockées les données
?format=geojson&starttime=2020-01-01& endtime=2020-04-15
Paramètres :
Format=geoson : format des données geojson
Starttime : début de la recherche
Endtime : fin de la recherche
Vous pouvez récupérer ces mêmes données au format csv
Votre requête demande les données au format geoJSON des tremblements de Terre ayant eu
lieu entre le 01 janvier 2020 et le 15 avril 2020, partout dans le monde.
Exercice 3
1) https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2020-03-
15&endtime=2020-04-15&minmagnitude=5
3) Coordonnées de Saint-Gaudens : 43,11 N et 0,74 E environ
https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=1980-01-
01&endtime=2020-04-10&minmagnitude=4&latitude=43.11&longitude=0.74&maxradiuskm=50
Il y en a 9 ….