Partons tout de suite sur un exemple : comment représenter 5,1875 en binaire ?
Il nous faut déjà représenter 5, ça, pas de problème : 101
Comment représenter le \",1875\" ?
- on multiplie 0,1875 par 2 : 0,1875 x 2 = 0,375. On obtient 0,375 que l'on écrira 0 + 0,375
- on multiplie 0,375 par 2 : 0,375 x 2 = 0,75. On obtient 0,75 que l'on écrira 0 + 0,75
- on multiplie 0,75 par 2 : 0,75 x 2 = 1,5. On obtient 1,5 que l'on écrira 1 + 0,5 (quand le résultat de la multiplication par 2 est supérieur à 1, on garde uniquement la partie décimale)
- on multiplie 0,5 par 2 : 0,5 x 2 = 1,0. On obtient 1,0 que l'on écrira 1 + 0,0 (la partie décimale est à 0, on arrête le processus)
On obtient une succession de \"a + 0,b\" (\"0 + 0,375\", \"0 + 0,75\", \"1 + 0,5\" et \"1 + 0,0\"). Il suffit maintenant de \"prendre\" tous les \"a\" (dans l'ordre de leur obtention) afin d'obtenir la partie décimale de notre nombre : 0011
Nous avons (101,0011)2 qui est la représentation binaire de (5,1875)10
Il est possible de retrouver une représentation décimale en base 10 à partir d'une représentation en binaire.
Partons de (100,0101)2
Pas de problème pour la partie entière, nous obtenons \"4\". Pour la partie décimale nous devons écrire : 0 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4 = 0,3125. Nous avons donc (4,3125)10
À faire vous-même 2
Trouvez la représentation décimale de (100,001)2
À faire vous-même 3
Trouvez la représentation binaire de (0,1)10
Que remarquez-vous ?
Dans l'exemple précédent, nous remarquons que le processus de \"conversion\" ne s'arrête pas, nous obtenons : \"0,0001100110011...\", le schéma \"0011\" se répète à \"l'infini\". Cette caractéristique est très importante, nous aurons l'occasion de revenir là-dessus plus tard.
En base dix, il est possible d'écrire les très grands nombres et les très petits nombres grâce aux \"puissances de dix\" (exemples \"6,02.1023\" ou \"6,67.10-11\"). Il est possible de faire exactement la même chose avec une représentation binaire, puisque nous sommes en base 2, nous utiliserons des \"puissances de deux\" à la place des \"puissances dix\" (exemple \"101,1101.210\").
Pour passer d'une écriture sans \"puissance de deux\" à une écriture avec \"puissance de deux\", il suffit décaler la virgule : \"1101,1001 = 1,1011001.211\" pour passer de \"1101,1001\" à \"1,1011001\" nous avons décalé la virgule de 3 rangs vers la gauche d'où le \"211\" (attention de ne pas oublier que nous travaillons en base 2 le \"11\" correspond bien à un décalage de 3 rangs de la virgule).
Si l'on désire décaler la virgule vers la gauche, il va être nécessaire d'utiliser des \"puissances de deux négatives\" \"0,0110 = 1,10.2-10\", nous décalons la virgule de 2 rangs vers la droite, d'où le \"-10\"
"}],[{"text":"La norme IEEE 754 est la norme la plus employée pour la représentation des nombres à virgule flottante dans le domaine informatique. La première version de cette norme date de 1985.
Nous allons étudier deux formats associés à cette norme : le format dit \"simple précision\" et le format dit \"double précision\". Le format \"simple précision\" utilise 32 bits pour écrire un nombre flottant alors que le format \"double précision\" utilise 64 bits. Dans la suite nous travaillerons principalement sur le format 32 bits.
Que cela soit en simple précision ou en double précision, la norme IEEE754 utilise :
- 1 bit de signe (1 si le nombre est négatif et 0 si le nombre est positif)
- des bits consacrés à l'exposant (8 bits pour la simple précision et 11 bits pour la double précision)
- des bits consacrés à la mantisse (23 bits pour la simple précision et 52 bits pour la double précision)
Nous pouvons vérifier que l'on a bien 1 + 8 + 23 = 32 bits pour la simple précision et 1 + 11 + 52 = 64 bits pour la double précision.
Pour écrire un nombre flottant en respectant la norme IEEE754, il est nécessaire de commencer par écrire le nombre sous la forme 1,XXXXX.2e(avec e l'exposant), il faut obligatoirement qu'il y ait un seul chiffre à gauche de la virgule et il faut que ce chiffre soit un \"1\". Par exemple le nombre \"1010,11001\" devra être écrit \"1,01011001.211\". Autre exemple, \"0,00001001\" devra être écrit \"1,001.2-101\".
La partie \"XXXXXX\" de \"1,XXXXX.2e\" constitue la mantisse (dans notre exemple \"1010,11001\" la mantisse est \"01011001\"). Comme la mantisse comporte 23 bits en simple précision, il faudra compléter avec le nombre de zéro nécessaire afin d'atteindre les 23 bits (si nous avons \"01011001\", il faudra ajouter 23 - 8 = 15 zéros à droite, ce qui donnera en fin de compte \"01011001000000000000000\" )
Notre première intuition serait de dire que la partie \"exposant\" correspond simplement au \"e\" de \"1,XXXXX.2e\" (dans notre exemple \"1010,11001\", nous aurions \"11\"). En faite, c'est un peu plus compliqué que cela. En effet, comment représenter les exposants négatifs ? Aucun bit pour le signe de l'exposant n'a été prévu dans le norme IEEE754, une autre solution a été choisie :
Pour le format simple précision, 8 bits sont consacrés à l'exposant, il est donc possible de représenter 256 valeurs, nous allons pouvoir représenter des exposants compris entre (-126)10 et (+127)10 (les valeurs -127 et +128 sont des valeurs réservées, nous n'aborderons pas ce sujet ici). Pour avoir des valeurs uniquement positives, il va falloir procéder à un décalage : ajouter systématiquement 127 à la valeur de l'exposant. Prenons tout de suite un exemple (dans la suite, afin de simplifier les choses nous commencerons par écrire les exposants en base 10 avant de les passer en base 2 une fois le décalage effectué) :
Repartons de \"1010,11001\" qui nous donne 1,01011001.23, effectuons le décalage en ajoutant 127 à 3 : \"1,01011001.2130\", soit en passant l'exposant en base 2 : \"1,01011001.210000010\". Ce qui nous donne donc pour \"1010,11001\" une mantisse \"01011001000000000000000\" (en ajoutant les zéros nécessaires à droite pour avoir 23 bits) et un exposant \"10000010\" (même si ce n'est pas le cas ici, il peut être nécessaire d'ajouter des zéros pour arriver à 8 bits, ATTENTION, ces zéros devront être rajoutés à gauche).
"}],[{"text":"À noter que pour le format double précision le décalage est de 1023 (il faut systématiquement ajouter 1023 à l'exposant afin d'obtenir uniquement des valeurs positives)
Nous sommes maintenant prêts à écrire notre premier nombre au format simple précision :
Soit le nombre \"-10,125\" en base 10 représentons-le au format simple précision :
- nous avons (10)10 = (1010)2 et (0,125)10 = (0,001)2 soit (10,125)10 = (1010,001)2
- Décalons la virgule : 1010,001 = 1,010001.23, soit avec le décalage de l'exposant 1,010001.2130, en écrivant l'exposant en base 2, nous obtenons 1,010001.210000010
- Nous avons donc : notre bit de signe = 1 (nombre négatif), nos 8 bits d'exposant = 10000010 et nos 23 bits de mantisse = 01000100000000000000000
- Soit en \"collant\" tous les \"morceaux\" : 11000001001000100000000000000000
Cette écriture étant un peu pénible, il est possible d'écrire ce nombre en hexadécimal : C1220000
"}],[{"text":"À faire vous-même 4
Déterminez la représentation au format simple précision de (0,25)10 en binaire et en hexadécimal.
"},{"edit":"Il est aussi possible de passer d'une représentation au format IEEE 754 à une représentation \"classique\" en base 10
Soit le nombre flottant au format simple précision : 00111110100000000000000000000000, nous pouvons déjà dire que ce nombre est positif (bit de signe à 0). Les 8 bits suivants (01111101) nous donnent l'exposant décalé : (01111101)2 = (125)10, soit une fois le décalage supprimé, 125 - 127 = -2. Les 23 bits suivants (la mantisse) sont uniquement des zéros, ce qui nous donne en fin de compte : 1,000.2-2. Ce qui donne, en base 10 également (1,000.2-2)10 soit (0,25)10.
À faire vous-même 5
Déterminez la représentation au format simple précision de (0,1)10 en binaire.
"},{"edit":"Nous avons ici un problème : comme déjà évoqué plus haut, nous nous retrouvons avec une \"conversion\" qui ne s'arrête jamais (le schéma \"0011\" se répète à \"l'infini\"), problème, en simple précision, la mantisse est limitée à 23 bits.
Vous devriez donc obtenir : 00111101110011001100110011001100
À faire vous-même 6
Soit le nombre flottant au format simple précision : 00111101110011001100110011001100. Trouvez la représentation en base 10 de ce nombre.
"},{"edit":"La réponse à la question posée ci-dessus est (0,099999994)10, or, en toute logique, nous devrions trouver (0,1)10. Cette \"légère\" erreur est logique quand on y réfléchit un peu. N'oubliez qu'à cause de la limitation de la mantisse à 23 bits, nous avons dû \"tronquer\" notre résultat (de toutes les façons, même avec une mantisse beaucoup plus grande, on aurait aussi eu le problème, car le schéma \"0011\" se répète à l'infini). Cette représentation avec un nombre limité de bits des nombres flottants est un problème classique en informatique. Cela peut entrainer des erreurs d'arrondi dans les calculs qui peuvent être très gênants si on n'y prend pas garde :
À faire vous-même 7
Tester le script ci-contre : 0.1+0.2
"},{"code":"print(0.1+0.2)"},{"text":"En toute logique, nous devrions trouver 0.3 et pourtant la console affiche 0.30000000000000004. Ce problème est directement lié à la limitation du nombre de bits utilisé pour représenter les nombres flottants évoquée ci-dessus. Il existe des \"astuces\" pour éviter ce genre d'inconvénient, mais ce sujet ne sera pas abordé ici."}],[{"text":"À faire vous-même 8
Déterminez la représentation au format simple précision d'un tiers (1/3) en binaire et en hexadécimal.
"},{"edit":"- Détails
- Écrit par : Richard GAUTHIER
- Clics : 1476
Nous avons comment représenter les entiers positifs, nous allons maintenant nous intéresser aux entiers relatifs.
La première idée qui pourrait nous venir à l'esprit est, sur un nombre comportant n bits, d'utiliser 1 bit pour représenter le signe et n-1 bit pour représenter la valeur absolue du nombre à représenter. Le bit de signe étant le bit dit \"de poids fort\" (c'est à dire le bit le plus à gauche), ce bit de poids fort serait à 0 dans le cas d'un nombre positif et à 1 dans le cas d'un nombre négatif.
un exemple : on représente l'entier 5 sur 8 bits par 00000101, -5 serait donc représenté par 10000101
À faire vous-même 1
En utilisant la méthode décrite ci-dessus, représentez -15 (représentation sur 8 bits)
","title":"Séquence n°7 ; Représentation binaire d'un entier relatif"},{"edit":"Il existe un énorme inconvénient à cette méthode : l'existence de deux zéros, un zéro positif (00000000) et un zéro négatif (10000000) !
Ce problème est, pour plusieurs raisons qui ne seront pas développées ici, rédhibitoire. Nous allons donc devoir utiliser une autre méthode : le complément à deux
Avant de représenter un entier relatif, il est nécessaire de définir le nombre de bits qui seront utilisés pour cette représentation (souvent 8, 16 , 32 ou 64 bits)
Prenons tout de suite un exemple : déterminons la représentation de -12 sur 8 bits
- Commençons par représenter 12 sur 8 bits (sachant que pour représenter 12 en binaire seuls 4 bits sont nécessaire, les 4 bits les plus à gauche seront à 0) : 00001100
- Inversons tous les bits (les bits à 1 passent à 0 et vice versa) : 11110011
- Ajoutons 1 au nombre obtenu à l'étape précédente : les retenues sont notées en rouge
- La représentation de -12 sur 8 bits est donc : 11110100
Comment peut-on être sûr que 11110100 est bien la représentation de -12 ?
Nous pouvons affirmer sans trop de risque de nous tromper que 12 + (-12) = 0, vérifions que cela est vrai pour notre représentation sur 8 bits.
Dans l'opération ci-dessus, nous avons un 1 pour le 9e bit, mais comme notre représentation se limite à 8 bits, il nous reste bien 00000000.
À faire vous-même 2
En utilisant le complément à 2, représentez -15 (représentation sur 8 bits)
Il faut noter qu'il est facile de déterminer si une représentation correspond à un entier positif ou un entier négatif : si le bit de poids fort est à 1, nous avons affaire à un entier négatif, si le bit de poids fort est à 0, nous avons affaire à un entier positif.
À faire vous-même 3
Représentez sur 8 bits l'entier 4 puis représentez, toujours sur 8 bits, l'entier -5. Additionnez ces 2 nombres (en utilisant les représentations binaires bien évidemment), vérifiez que vous obtenez bien -1.
"},{"edit":"Ecrire ici."}],[{"text":"À faire vous-même 4
Quel est le plus petit entier négatif que l'on peut représenter sur 8 bits ?
"},{"edit":"Ecrire ici."}],[{"text":"À faire vous-même 5
Quel est le plus grand entier positif que l'on peut représenter sur 8 bits ?
"},{"edit":"Ecrire ici."}],[{"text":"Dans le \"À faire vous-même 4\" vous avez dû normalement trouver 10000000 (soit -128) et 01111111 (soit 127) dans le \"À faire vous-même 5\". Plus généralement, nous pouvons dire que pour une représentation sur n bits, il sera possible de coder des valeurs comprises entre -2n-1 et +2n-1 - 1"}],[{"text":"À faire vous-même 6
Quelles sont les bornes inférieure et supérieure d'un entier relatif codé sur 16 bits ?
"},{"edit":"Ecrire ici."}],[{"text":"Coder sur 8 bits ou 16 bits les nombres suivants :- Détails
- Écrit par : Richard GAUTHIER
- Clics : 1615
- Détails
- Écrit par : Richard GAUTHIER
- Clics : 1401
- Détails
- Écrit par : Richard GAUTHIER
- Clics : 1478
Travail à faire 1
Travail à faire 2
Explorez pendant quelques minutes le site data.gouv.fr. Recherchez les données \"Opérations coordonnées par les CROSS\" à l'aide du moteur de recherche proposé par le site
"}],[{"text":"Nous pouvons constater que ces données sont au format csv.
Le format csv est très courant sur internet, nous allons l'étudier en premier.
Voici ce que nous dit Wikipédia sur le format CSV :
Comma-separated values, connu sous le sigle CSV, est un format informatique ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules.
Un fichier CSV est un fichier texte, par opposition aux formats dits « binaires ». Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes. Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau.
Voici un exemple du contenu d'un fichier CSV :
"}],[{"edit":"\nnom,prenom,date_naissance\nDurand,Jean-Pierre,23/05/1985\nDupont,Christophe,15/12/1967\nTerta,Henry,12/06/1978\n\t\t
\nnom,prenom,date_naissance\nDurand,Jean-Pierre,23/05/1985\nDupont,Christophe,15/12/1967\nTerta,Henry,12/06/1978\n\t\t
Nous voyons que nous avons 3 personnes :
- Jean-Pierre Durand qui est né le 23/05/1985
- Christophe Dupont qui est né le 15/12/1967
- Henry Terta qui est né le 12/06/1978
\"nom\", \"prenom\" et \"date_naissance\" sont appelés des descripteurs alors que, par exemple, \"Durand\", \"Dupont\" et \"Terta\" sont les valeurs du descripteur \"nom\".
Travail à faire 3
Donnez les différentes valeurs du descripteur \"date_naissance\"
Mettre ici les valeurs.
ATTENTION :
La virgule est un standard pour les données anglo-saxonnes, mais pas pour les données aux normes françaises. En effet, en français, la virgule est le séparateur des chiffres décimaux. Il serait impossible de différencier les virgules des décimaux et les virgules de séparation des informations. C’est pourquoi on utilise un autre séparateur : le point-virgule (;). Dans certains cas cela peut engendrer quelques problèmes, vous devrez donc rester vigilants sur le type de séparateur utilisé.
Les tableurs, tels que \"Calc\" (Libre Office), sont normalement capables de lire les fichiers au format CSV. J'ai précisé \"normalement\" car certains tableurs gèrent mal le séparateur CSV \"point-virgule\" et le séparateur des chiffres décimaux \"virgule\".
"}],[{"text":"Les tableurs, tels que \"Google sheet\" (Dans Google drive), sont normalement capables de lire les fichiers au format CSV. J'ai précisé \"normalement\" car certains tableurs gèrent mal le séparateur CSV \"point-virgule\" et le séparateur des chiffres décimaux \"virgule\".
Travail à faire 4
Après avoir téléchargé le fichier ident_pointVirgule.csv, ouvrez ce dernier à l'aide d'un tableur.
Si par hasard votre tableur ne gère pas correctement le fichier avec le séparateur \"point-virgule\", voici une version \"séparateur virgule\" du fichier : ident_virgule.csv
Dans la suite, gardez toujours cet éventuel problème à l'esprit (surtout avec des données \"made in France\")
Vous devriez obtenir ceci :
Vous pouvez constater que les données sont bien \"rangées\" dans un tableau avec des lignes et des colonnes (voilà pourquoi on parle de données tabulaires.
"}],[{"text":"Il est possible de trouver sur le web des données beaucoup plus intéressantes à traiter que celles contenues dans le fichier \"ident_pointVirgule.csv\" (ou \"ident_virgule.csv\"). Par exemple, le site sql.sh, propose un fichier csv contenant des informations sur l'ensemble des communes françaises.
Travail à faire 5
Ouvrez le fichier ville_point_virgule.csv à l'aide d'un tableur (c’est une version légèrement modifiée de celle disponible sur le site sql.sh, j’y ai notamment ajouté des entêtes). En cas de problème avec votre tableur, voici une version \"séparateur virgule\" : ville_virgule.csv (attention le séparateur \"décimal\" est ici le point)
Comme vous pouvez le constater, nous avons 12 colonnes (et 36700 lignes si on ne compte pas l'entête !), voici la signification de ces colonnes :
- dep : numéro de département
- nom : nom de la commune
- cp : code postal
- nb_hab_2010 : nombre d'habitants en 2010
- nb_hab_1999 : nombre d'habitants en 1999
- nb_hab_2012 : nombre d'habitants en 2012 (approximatif)
- dens : densité de la population (habitants par kilomètre carré)
- surf : superficie de la commune en kilomètre carré
- long : longitude
- lat : latitude
- alt_min : altitude minimale de la commune (il manque des données pour certains territoires d'outre-mer)
- alt_max : altitude maximale de la commune (il manque des données pour certains territoires d'outre-mer)
Travail à faire 6
En vous aidant du fichier ouvert dans le \"À faire vous-même 4\", déterminez l'altitude maximale et l'altitude minimale de votre commune.
Mettre les résultats ici.
"}],[{"text":"Autre format de données très courant sur le \"web\", le JSON (JavaScript Object Notation). Le JSON fonctionne avec un système de paire clé/valeur.
Un \"objet\" est encadré par des accolades :
\n{cle_1 : val_1, cle_2 : val_2, cle_3 : val_3}\n\t\t
souvent, pour une question de lisibilité, on écrira :
\n{\ncle_1 : val_1,\ncle_2 : val_2,\ncle_3 : val_3\n}\n\t\t
Un fichier au format JSON peut regrouper un grand nombre d'objets :
\n[{\n\"nom\" : \"Durand\",\n\"prenom\" : \"Jean-Pierre\",\n\"date_naissance\" : \"23/05/1985\"\n},\n{\n\"nom\" : \"Dupont\",\n\"prenom\" : \"Christophe\",\n\"date_naissance\" : \"15/12/1967\"\n},\n{\n\"nom\" : \"Terta\",\n\"prenom\" : \"Henry\",\n\"date_naissance\" : \"12/06/1978\"\n}]\n\t\t
Ci-dessus, nous avons une liste (délimité par [ ]) contenant des objets.
La \"valeur\" d'une paire \"clé/valeur\" peut être une liste :
\n{\n\"nom\" : \"Durand\",\n\"prenom\" : \"Jean-Pierre\",\n\"date_naissance\" : \"23/05/1985\"\n\"sport\" : [\"tennis\", \"football\", \"pétanque\"]\n}\n\t\t
ou même un autre objet :
\n{\n\"nom\" : \"Durand\",\n\"prenom\" : \"Jean-Pierre\",\n\"date_naissance\" : \"23/05/1985\"\n\"adresse\" : {\"num\":6, \"rue\":\"impasse du rossignol\", \"ville\":\"Nogent-le-Rotrou\", \"cp\":\"28400\"}\n}\n\t\t
Comme vous pouvez le constater, il est possible d'obtenir des structures de données très complexes avec le format JSON.
","title":"Format Json"}],[{"text":"Travail à faire 7
Téléchargez le fichier ident.json et ouvrez-le à l'aide d'un éditeur de texte.
De nombreux sites web proposent des services basés sur des API (Application Programming Interface). Ces sites sont capables de fournir des données aux formats JSON sur \"simple demande\". Souvent, ces \"demandes\" sont effectuées par l'intermédiaire d'une url (si vous avez besoin de vous rafraichir la mémoire à propos de la notion d'url, n'hésitez pas à reconsulter ce document).
Nous allons illustrer ce propos en utilisant l'API d'un site qui fournit des informations météo au format JSON. 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é vous sera fournie par votre enseignant.
Travail à faire 8
Ouvrez votre navigateur préféré et copiez-collez l'url suivante dans la barre d'adresse du navigateur :
\nhttp://api.openweathermap.org/data/2.5/weather?q=bonneville,fr&lang=fr&units=metric&APPID=XXXXXXXXXXXXX\n\t\t
ATTENTION : il faut remplacer les \"X\" par la clé (API key) qui vous aura été fournie
"}],[{"text":"Au lieu d'obtenir, comme d'habitude, une page web, vous devriez obtenir uniquement quelque chose qui ressemblera à ceci :
\n{\"coord\":{\"lon\":6.41,\"lat\":46.08},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"ciel dégagé\",\"icon\":\"01d\"}],\"base\":\"stations\",\"main\":{\"temp\":12.31,\"pressure\":1026,\"humidity\":58,\"temp_min\":11,\"temp_max\":14},\"visibility\":10000,\"wind\":{\"speed\":2.6,\"deg\":200},\"clouds\":{\"all\":0},\"dt\":1540373400,\"sys\":{\"type\":1,\"id\":5570,\"message\":0.0046,\"country\":\"FR\",\"sunrise\":1540361039,\"sunset\":1540398737},\"id\":3031679,\"name\":\"Bonneville\",\"cod\":200}\n\t\t
Comme les données sont réactualisées relativement souvent, vous n'obtiendrez pas la même chose que moi !
Avec une simple url, le site open weather renvoie des informations météo sous forme de données JSON.
Détaillons l'url :
\nhttp://api.openweathermap.org/data/2.5/weather\n\t\t
Cette partie de l'url ne changera pas (sauf si vous désirez autre chose que les conditions météo actuelles, à ce moment-là, il faudra remplacer \"weather\" par autre chose (consulter le site open weather pour plus d'informations)).
\n?q=bonneville,fr&lang=fr&units=metric&APPID=XXXXXXXXXXXXX\n\t\t
À partir du point d'interrogation, vous devez renseigner les différents paramètres qui permettront à open weather de vous renvoyer les bonnes informations. Ces paramètres sont séparés par le caractère \"&\".
- \"q=bonneville,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\" correspond à l'API key
Il est possible de construire des requêtes beaucoup plus complexes, encore une fois, veuillez consulter le site open weather pour plus d'informations.
"}],[{"text":"Intéressons-nous maintenant aux données JSON renvoyées (nous n'allons pas tout détailler) :
- \"coord\":{\"lon\":6.41,\"lat\":46.08} latitude et longitude du lieu
- \"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"ensoleillé\",\"icon\":\"01d\"}] \"weather\" correspond à un tableau qui contient un seul objet.
- \"main\":{\"temp\":17.35,\"pressure\":1016,\"humidity\":59,\"temp_min\":16,\"temp_max\":19} \"main\" correspond à un objet qui contient différents types d'informations
- \"dt\":1443975257 \"dt\" nous donne l'heure et la date de diffusion du bulletin au format \"timestamp\" (voir en bas de cette page pour plus d'informations sur le format \"timestamp\")
- \"sunrise\":1443937018,\"sunset\":144397849 : respectivement heure de lever et de coucher du soleil au format timestamp
Dernier format de données que nous verrons aujourd'hui le geoJSON. Le geoJSON est un format (http://geojson.org/) qui permet d'encoder des données à \"caractère géographique\". Voici ce que dit Wikipédia à propos de ce format :
GeoJSON (de l'anglais Geographic JSON, signifiant littéralement JSON géographique) est un format ouvert d'encodage d'ensemble de données géospatiales simples utilisant la norme JSON (JavaScript Object Notation). Il permet de décrire des données de type point, ligne, chaîne de caractères, polygone, ainsi que des ensembles et sous-ensembles de ces types de données et d'y ajouter des attributs d'information qui ne sont pas spatiale. Le format GeoJSON, contrairement à la majorité des standards de systèmes d'informations géographiques, n'est pas écrit par l'Open Geospatial Consortium, mais par un groupe de travail de développeurs au travers d'internet.
Comme indiqué dans Wikipédia, le geoJSON est avant tout du JSON, nous retrouverons donc les mêmes caractéristiques que le JSON (système de clé/valeur).
","title":"Format GeoJson"}],[{"text":"Travail à faire 9
Dans la barre d'adresse de votre navigateur, tapez l'adresse suivante :
"}],[{"text":"\nhttps://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2019-07-31&endtime=2019-08-01\n\t\t
Vous devriez obtenir quelque chose ressemblant à ceci :
\n\t\t\t{\"type\":\"FeatureCollection\",\"metadata\":{\"generated\":1564685404000,\"url\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2019-07-31&endtime=2019-08-01\",\"title\":\"USGS Earthquakes\",\"status\":200,\"api\":\"1.8.1\",\"count\":547},\"features\":[{\"type\":\"Feature\",\"properties\":{\"mag\":0.33000000000000002,\"place\":\"6km NW of The Geysers, CA\",\"time\":1564617341320,\"updated\":1564619343353,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nc73239641\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nc73239641&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":2,\"net\":\"nc\",\"code\":\"73239641\",\"ids\":\",nc73239641,\",\"sources\":\",nc,\",\"types\":\",geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":7,\"dmin\":0.012579999999999999,\"rms\":0.029999999999999999,\"gap\":78,\"magType\":\"md\",\"type\":\"earthquake\",\"title\":\"M 0.3 - 6km NW of The Geysers, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.80266570000001,38.819168099999999,3.29]},\"id\":\"nc73239641\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.28,\"place\":\"22km ESE of Little Lake, CA\",\"time\":1564617244070,\"updated\":1564617457582,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ci38678103\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ci38678103&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":25,\"net\":\"ci\",\"code\":\"38678103\",\"ids\":\",ci38678103,\",\"sources\":\",ci,\",\"types\":\",geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":18,\"dmin\":0.085260000000000002,\"rms\":0.11,\"gap\":94,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.3 - 22km ESE of Little Lake, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-117.684166,35.867000599999997,3.4300000000000002]},\"id\":\"ci38678103\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.3,\"place\":\"19km NW of Sutton-Alpine, Alaska\",\"time\":1564617217896,\"updated\":1564617408500,\"tz\":-540,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ak0199qzxzh9\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ak0199qzxzh9&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":26,\"net\":\"ak\",\"code\":\"0199qzxzh9\",\"ids\":\",ak0199qzxzh9,\",\"sources\":\",ak,\",\"types\":\",geoserve,origin,\",\"nst\":null,\"dmin\":null,\"rms\":0.35999999999999999,\"gap\":null,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.3 - 19km NW of Sutton-Alpine, Alaska\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-149.07429999999999,61.939900000000002,21.5]},\"id\":\"ak0199qzxzh9\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.72,\"place\":\"9km ENE of Coso Junction, CA\",\"time\":1564617174330,\"updated\":1564617402129,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ci38678087\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ci38678087&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":46,\"net\":\"ci\",\"code\":\"38678087\",\"ids\":\",ci38678087,\",\"sources\":\",ci,\",\"types\":\",geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":14,\"dmin\":0.050310000000000001,\"rms\":0.13,\"gap\":132,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.7 - 9km ENE of Coso Junction, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-117.85550000000001,36.067166700000001,2.04]},\"id\":\"ci38678087\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.2,\"place\":\"27km SSW of Hawthorne, Nevada\",\"time\":1564616847761,\"updated\":1564625189016,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nn00698301\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nn00698301&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":22,\"net\":\"nn\",\"code\":\"00698301\",\"ids\":\",nn00698301,\",\"sources\":\",nn,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":10,\"dmin\":0.16700000000000001,\"rms\":0.1709,\"gap\":129.69,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.2 - 27km SSW of Hawthorne, Nevada\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-118.7396,38.291699999999999,7.2000000000000002]},\"id\":\"nn00698301\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":2.6000000000000001,\"place\":\"58km N of Hatillo, Puerto Rico\",\"time\":1564616626170,\"updated\":1564638696895,\"tz\":-240,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/pr2019212018\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=pr2019212018&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":104,\"net\":\"pr\",\"code\":\"2019212018\",\"ids\":\",pr2019212018,\",\"sources\":\",pr,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":11,\"dmin\":0.60919999999999996,\"rms\":0.53000000000000003,\"gap\":268,\"magType\":\"md\",\"type\":\"earthquake\",\"title\":\"M 2.6 - 58km N of Hatillo, Puerto Rico\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-66.820800000000006,19.0121,50]},\"id\":\"pr2019212018\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.3700000000000001,\"place\":\"19km NW of Fillmore, CA\",\"time\":1564616617590,\"updated\":1564616843518,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ci38678055\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ci38678055&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":29,\"net\":\"ci\",\"code\":\"38678055\",\"ids\":\",ci38678055,\",\"sources\":\",ci,\",\"types\":\",geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":6,\"dmin\":0.2787,\"rms\":0.29999999999999999,\"gap\":153,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.4 - 19km NW of Fillmore, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-119.05549999999999,34.530833299999998,2.98]},\"id\":\"ci38678055\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.3400000000000001,\"place\":\"8km NNE of Coso Junction, CA\",\"time\":1564616476700,\"updated\":1564616704978,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ci38678039\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ci38678039&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":28,\"net\":\"ci\",\"code\":\"38678039\",\"ids\":\",ci38678039,\",\"sources\":\",ci,\",\"types\":\",geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":12,\"dmin\":0.036769999999999997,\"rms\":0.14999999999999999,\"gap\":167,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 1.3 - 8km NNE of Coso Junction, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-117.89916669999999,36.109499999999997,1.8500000000000001]},\"id\":\"ci38678039\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":0.40000000000000002,\"place\":\"27km SSW of Hawthorne, Nevada\",\"time\":1564616385958,\"updated\":1564625185644,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nn00698300\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nn00698300&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":2,\"net\":\"nn\",\"code\":\"00698300\",\"ids\":\",nn00698300,\",\"sources\":\",nn,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":4,\"dmin\":0.17599999999999999,\"rms\":0.086400000000000005,\"gap\":282.31999999999999,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 0.4 - 27km SSW of Hawthorne, Nevada\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-118.72329999999999,38.289700000000003,9]},\"id\":\"nn00698300\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":0.20000000000000001,\"place\":\"27km SSW of Hawthorne, Nevada\",\"time\":1564616363045,\"updated\":1564625185553,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nn00698299\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nn00698299&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":1,\"net\":\"nn\",\"code\":\"00698299\",\"ids\":\",nn00698299,\",\"sources\":\",nn,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":4,\"dmin\":0.17199999999999999,\"rms\":0.054300000000000001,\"gap\":281.20999999999998,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 0.2 - 27km SSW of Hawthorne, Nevada\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-118.7176,38.290300000000002,9.8000000000000007]},\"id\":\"nn00698299\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":0.20000000000000001,\"place\":\"27km SSW of Hawthorne, Nevada\",\"time\":1564616227368,\"updated\":1564618837595,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nn00698298\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nn00698298&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":1,\"net\":\"nn\",\"code\":\"00698298\",\"ids\":\",nn00698298,\",\"sources\":\",nn,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":4,\"dmin\":0.17599999999999999,\"rms\":0.0717,\"gap\":282.49000000000001,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 0.2 - 27km SSW of Hawthorne, Nevada\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-118.72329999999999,38.289099999999998,9.0999999999999996]},\"id\":\"nn00698298\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":2.79,\"place\":\"14km ENE of Ridgecrest, CA\",\"time\":1564615822760,\"updated\":1564644771698,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ci38678031\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ci38678031&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":120,\"net\":\"ci\",\"code\":\"38678031\",\"ids\":\",ci38678031,\",\"sources\":\",ci,\",\"types\":\",focal-mechanism,geoserve,nearby-cities,origin,phase-data,scitech-link,\",\"nst\":38,\"dmin\":0.047059999999999998,\"rms\":0.13,\"gap\":36,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 2.8 - 14km ENE of Ridgecrest, CA\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-117.53400000000001,35.659500000000001,9.6500000000000004]},\"id\":\"ci38678031\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":0.20000000000000001,\"place\":\"27km SSW of Hawthorne, Nevada\",\"time\":1564615732560,\"updated\":1564618468033,\"tz\":-480,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/nn00698297\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=nn00698297&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"reviewed\",\"tsunami\":0,\"sig\":1,\"net\":\"nn\",\"code\":\"00698297\",\"ids\":\",nn00698297,\",\"sources\":\",nn,\",\"types\":\",geoserve,origin,phase-data,\",\"nst\":4,\"dmin\":0.17799999999999999,\"rms\":0.066900000000000001,\"gap\":282.25,\"magType\":\"ml\",\"type\":\"earthquake\",\"title\":\"M 0.2 - 27km SSW of Hawthorne, Nevada\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-118.7256,38.291499999999999,7.2999999999999998]},\"id\":\"nn00698297\"},\n{\"type\":\"Feature\",\"properties\":{\"mag\":1.2,\"place\":\"15km NE of Badger, Alaska\",\"time\":1564615237144,\"updated\":1564616344126,\"tz\":-540,\"url\":\"https://earthquake.usgs.gov/earthquakes/eventpage/ak0199qzqwsi\",\"detail\":\"https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=ak0199qzqwsi&format=geojson\",\"felt\":null,\"cdi\":null,\"mmi\":null,\"alert\":null,\"status\":\"automatic\",\"tsunami\":0,\"sig\":22,\"net\":\"ak\",\"code\":\"0199qzqwsi\",\"ids\":\",ak0199qzqwsi,\",\"sources\":\",ak,\",\"types\":\",geoserve,origin,\",\"nst\":null,\"dmin\":null,\"rms\":0.23000000000000001,\"gap\":null,\"magType\":\"ml\",\"type\":\"explosion\",\"title\":\"M 1.2 Explosion - 15km NE of Badger, Alaska\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-147.32239999999999,64.905799999999999,12.9]},\"id\":\"ak0199qzqwsi\"},\n\t\t\t...\n\t\t
Vous avez obtenu des informations au format geoJSON, sur les tremblements de Terre ayant eu lieu entre le 31 juillet 2019 et le 01 août 2019, partout dans le monde.
"}],[{"text":"Le site \"earthquake.usgs.gov\", comme le site \"http://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
À faire vous-même 10
En vous aidant de la documentation présente sur le site http://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.
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.
ATTENTION : 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 à 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 ce site. 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).
- Détails
- Écrit par : Richard GAUTHIER
- Clics : 2124