TP API guidé / openweathermap

TP API Guidé : openweathermap #

Le travail suivant est réalisé par 2 personnes. L’une s’occupe de récupérer les informations sur openweathermap : on l’appelle A. L’autre crée un service Web pour servir ces informations : on l’appelle B Dans toute la suite, mettez-vous d’accord très précisément sur ce que renvoient les fonctions écrites par A, de manière à ce que A et B puissent avancer en même temps.

B commencera donc directement la réalisation du serveur Web (dernière question). A réalisera les fonctions suivantes et fournira au fur et à mesure des modification son fichier à B qui réalise le serveur Web. En commentaire de chaque fonction, donnez l’URL de la page de doc de l’API que vous avez consultée. Ajoutez vos autres sources de documentation s’il y a lieu.

Si vous n’avez pas la possibilité d’obtenir des copies d’écran de l’application finale, faites des copies d’écran des tests que vous avez réalisé pour vérifier le bon fonctionnement de votre partie.

Programmeur A #

Écrivez une fonction qui renvoie la pression (en millibars), la vitesse du vent (en km/h), la température (en °C) actuelles (sous forme d’un tuple)
Il est possible de consulter un historique des relevés météo (un par heure). Écrivez une fonction qui renvoie un relevé des k derniers jours (vous pourrez choisir la valeur de k). Le relevé pourra être celui de température, de pression, ou d’humidité. Factorisez le code au maximum.

Openweathermap sert aussi des tuiles (morceaux de cartes) permettant de construire des cartes de température, de précipitations etc… On obtient ces tuiles de la même manière que les tuiles OpenStreetMap. Au niveau de zoom 5, la France est couverte par 5 tuiles de 256x256:

  • SERVER/5/15/10.png
  • SERVER/6/10.png
  • SERVER/5/15/11.png
  • SERVER/5/16/11.png

Si SERVER = http://a.tile.openstreetmap.org, on obtient les cartes géographiques openstreetmap, et si SERVER = http://a.tile.openweathermap.org/map/temp, on obtient la cartes des températures.

En utilisant requests (r = requests.get(...)), on obtient dans r.content les données binaires récupérées (image). Ces données peuvent être utilisées pour obtenir ensuite l’image sous une forme ou une autre (c’est par exemple possible avec le module imageio). Les moyens à disposition pour gérer les images sont disponibles ici : Travailler avec des images en Python

Attention à l’usage que vous faites du serveur de tuiles OpenStreetmap : http://wiki.openstreetmap.org/wiki/Tile_usage_policy. Vous pouvez éventuellement utiliser un serveur alternatif.

Programmeur B #

Intégrez le tout dans une page Web servie par bottle. L’utilisateur pourra entrer le nom d’une ville et on lui affichera l’intégralité des informations récupérées ci-dessus.

Statistiques météo #

À partir d’une latitude et d’une longitude, vous pouvez réaliser des statistiques indiquant, par mois, la pluviométrie moyenne de chaque mois (sur les 5 dernières années par exemple). Réalisez un service Web qui automatise cette tâche.