L3 MIAGE TP 3 (2 séances) I. Mirbel & M. Winter (d'après P. Renevier)
L3 Web Persistance JSON et PHP Année 2017-2018

Ce tp va utiliser plusieurs services sur le web. Ces services sont :

Le scénario est le suivant : L'internaute entre une adresse en France, un script php récupère avec Nominatim des informations encapsulées dans du JSON (via Nominatim). Grâce au résultat en JSON récupéré, le même script (i) génère un cadre (iframe) pour afficher la carte et (ii) fait une requête pour obtenir la météo et ainsi l'afficher. Le résultat final contient donc la carte et la météo.

Voici les étapes du TP :

  1. Interroger Nominatim et extraire les informations nécessaires : longitude, latitude et le cadre englobant (boundingbox). Pour visualiser le résultat au format JSON reçu (cela aide à savoir ce que l'on reçoit), on peut par exemple utiliser un outil en ligne comme http://json.parser.online.fr/ ou un plugin du navigateur ou un éditeur de texte acceptant le format JSON. Il faudra donc mettre en place le formulaire et faire la requête en générant une URL adaptée et en l'utilisant en paramètre de file_get_contents. Exemple d'URL : http://nominatim.openstreetmap.org/search?q=1645,%20route%20des%20Lucioles,%20Biot&format=json Les paramètres dépendent de ce que l'on veut obtenir (c.f. API Nominatim). Attention, il peut y avoir plusieurs réponses comme par exemple pour : http://nominatim.openstreetmap.org/search?q=Nice,%20France&format=json

  2. A partir de là, on peut générer un iframe dont l'URL contient des paramètres dont les valeurs viennent de la réponse de Nominatim. Pour extraire ces valeurs, il faudra naviguer dans le résultat formaté en JSON, en fonction de ce que dit l'API ou de ce qu'on observe dans le résultat formaté en JSON et en extraire la boundingbox (attention à l'ordre des valeurs).

  3. Le code HTML de cet iframe peut être : <iframe style="border: none;box-shadow: 1px 1px 3px black;float: left; margin: 0 2em 2em 0;width:600px; height:480px;" src="http://www.openstreetmap.org/export/embed.html?bbox=7.06387138366699%2C43.6167602539062%2C7.06522798538208%2C43.6174392700195&amp;layer=mapnik"> </iframe> %2C est l'encodage du caractère ,. Le premier point (latitude / longitude) est le coin en bas à gauche de la carte (pour nous, c'est le plus à ouest et le plus au sud) et le second point est le coin en haut à droite de la carte (pour nous, c'est le plus à l'est et le plus au nord). Le niveau de zoom dépend de la taille de l'iframe et aussi de la différence d'angle dans les valeurs passées.

  4. Finalement, il est possible d'aller chercher des informations sur la météo du lieu recherché à partir de ces coordonnées géographiques. Une requête ressemble à : http://www.infoclimat.fr/public-api/gfs/json?_ll=43.70313,7.26608&_auth=AhhTRFQqBCZRfAcwD3kGL1Y%2BATRaLAIlC3dVNg5gUSwDZ1YyBGRcP1I%2BAH1Vegc0BShUNg43U20HZAtkWCoEeAJjUz5UPgRmUToHYQ8%2FBi1WegF8WmQCJQt3VToOYFEsA2FWMwRkXCBSPwBnVWEHLQU%2FVDQOLlN0B2ULaFg9BGcCaVMwV DIEZlE%2BB2UPIAYtVmABaVphAj4LbVVgDjVROgNpVjoEM1xsUjkAYVV7BzQFMVQzDjlTaQdjC25YNgR4An5TTlREBHtRfgcnD2oGdFZ4ATRaOwJu&_c=a4c69e2851123ac57a2cabb4a6ad2608 De la réponse, on peut extraire la météo sur plusieurs jours : risque de pluie, de neige, vitesse du vent, etc.

  5. Si Nominatim donne dans sa réponse plusieurs lieux, il faut alors proposer la carte et la météo pour chaque réponse (la première n'étant pas toujours la plus pertinente...).


Année 2017-2018 TP Web Persistance L3 MIAGE UNS I. Mirbel