PHP: comment afficher la météo sur votre site web
Par Blog marocain, vendredi 9 septembre 2005 à 22:21 :: Développement :: #74 :: rss
Mode d'emploi pour insérer une partie météo sur votre site basée sur des informations récupérées sur des sites spécialisés.
Vous avez toujours voulu que les couleurs de votre site changent en fonction du temps ? Vous envisagez d’ajouter des données météo à votre portail d’informations locales ? Nous allons vous apprendre comment récupérer et utiliser des données météorologiques, afin d'indiquer aux internautes à l’autre bout de la planète s'il fait beau ou s'il pleut derrière votre fenêtre.
Pour cela, nous utiliserons la classe Services_Weather de PHP, très appréciable, que vous pouvez télécharger gratuitement sur le site de PEAR. Conçu pour simplifier la récupération de données météorologiques sur internet, ce module facilite l’intégration de systèmes de suivi météo détaillés dans vos applications. Il vous permet de récupérer les tout derniers bulletins météorologiques sur internet, de les faire analyser par PHP pour qu’il génère un tableau de données météo et d’analyser ces données pour les utiliser sur votre site.
Comment ça marche
Pour savoir le temps qu’il fait dans une ville spécifique, vous devez d’abord obtenir le bulletin météo de cette ville. Les aéroports du monde entier émettent régulièrement des METAR, qui sont des bulletins météorologiques précisant les conditions climatiques actuelles. Aux États-Unis, ils soumettent ces rapports à l’American National Weather Service (NWS). Vous pouvez consulter ces bulletins gratuitement sur le site de la NOAA, via HTTP ou FTP.
Un bulletin METAR type (METeorological Airport Report, traduisible par "message d’observation météorologique régulière des aérodromes") contient des informations détaillées sur la couverture nuageuse, la vitesse et la direction des vents, la température, la visibilité et la pression atmosphérique ; autrement dit, tout ce dont vous avez besoin pour afficher la météo. Seul problème : ils ne sont pas vraiment faciles à lire. Examinez le METAR suivant de l’aéroport d’Heathrow de Londres :
2004/07/20 15:20
EGLL 201520Z 17012KT 130V210 9999 FEW025TCU SCT028 24/15 Q1011 NOSIG
Si vous étiez un expert des codes météorologiques, vous sauriez que lorsque ce bulletin a été émis, l’aéroport d’Heathrow était exposé à des vents de 12 nœuds pour une température de 24 degrés Celsius. Dans un tel bulletin, toutes ces informations sont codées à l’aide de symboles sibyllins. Cliquez ici pour obtenir une liste complète des symboles et de leur signification.
Le premier bloc de quatre lettres du METAR correspond au code qui identifie le lieu d’émission du METAR (l’aéroport d’Heathrow est identifié par les lettres EGLL). Les METAR sont organisés d’après ce code ; si vous prévoyez d’utiliser ces bulletins météo sur votre site, l’une des premières informations dont vous aurez besoin sera le code à quatre lettres de toutes les villes dont vous voulez indiquer la météo. Heureusement, il est également facile de les obtenir ; pour récupérer une liste complète des codes de villes, triée par pays, il vous suffit de vous rendre sur ce site ou de retourner sur celui de la NOAA.
Comme il est maintenant évident que la plupart des informations dont vous avez besoin pour générer un bulletin météo automatique se trouvent dans le METAR, il ne vous reste qu'à trouver un moyen de l’analyser et de transformer ces codes sibyllins en français éloquent. Par chance, PHP propose des API pour cela. Nous avons déjà mentionné la classe à utiliser, Services_Weather ; elle décode les informations d’un METAR et les rend intelligibles pour des utilisateurs non spécialistes.
Remarque importante avant de poursuivre : les données récupérées par la classe Services_Weather sont régies par les conditions d’utilisation de la source d’où elles proviennent. Par conséquent, avant d’aller vendre votre code au plus offrant, examinez en détail les conditions de licence et les restrictions d’utilisation des données qui s’appliquent à leurs sources et à la classe Services_Weather pour vous assurer d’être en conformité. Les exemples de ce didacticiel sont fournis à titre purement illustratif.
Détail de la procédure
Après avoir téléchargé et installé Services_Weather, tapez le script simple du listing A. Lorsque vous exécutez ce script, le résultat doit ressembler à l’exemple du listing B. Toutes ces informations météo proviennent du METAR sur une ligne que vous avez vu précédemment. Impressionnant, vous ne trouvez pas ?
Le script du listing A crée une instance de la classe Service_Weather, puis utilise la méthode _parseWeatherData() pour récupérer le tout dernier bulletin météo du lieu EGLL, à savoir l’aéroport d’Heathrow. Ce bulletin est extrait via un FTP anonyme sur le site de la NOAA. Comme il utilise l’identifiant de lieu comme clé, il est facile de créer une URL pointant dessus. La méthode _parseWeatherData() utilise cette URL, établit une connexion au site FTP, lit le bulletin, puis le divise en fonction des parties qui le composent en utilisant divers systèmes de correspondance de modèles. Chaque élément du bulletin est alors traduit dans une langue compréhensible par l’utilisateur, puis présenté comme élément d'un tableau associatif. En examinant les clés du tableau du listing B, vous pouvez constater que le bulletin est assez complet et inclut toutes les informations dont vous avez besoin.
À présent, il est possible d’utiliser ce tableau pour créer un bulletin convivial, comme l’illustre la réécriture du listing C. Le listing D montre à quoi ressemble le résultat.
Application à plusieurs villes
Vous pouvez désormais utiliser ce script basique pour obtenir les informations météorologiques d’autant de villes que vous le souhaitez. Il suffit de créer un tableau des identifiants des villes et de placer le code d’analyse et d’affichage dans une boucle effectuant une itération sur le tableau, comme le montre le listing E. Vous pouvez même apporter une touche d’esthétisme supplémentaire en utilisant des icônes pour représenter les différents états météorologiques. Vous pouvez en télécharger gratuitement sur le web ou créer vos propres icônes pour l’échelle des températures, la couverture nuageuse, la vitesse et la direction du vent et les conditions atmosphériques. L’exemple de code du listing F en présente la logique.
Dans cet exemple, les tableaux $tempImages et $condImages stockent les noms des fichiers images correspondant aux différentes conditions. En fonction des valeurs du bulletin météorologique, l’image appropriée s’affiche.
J’espère vous avoir éclairé sur la manière d’intégrer des bulletins météorologiques en temps réel à votre site. Amusez-vous un peu avec la classe Services_Weather, et si vous réalisez quelque chose de vraiment créatif, envoyez-nous un message pour nous en faire part !
Un film américain de Joss Whedon avec Robert Downey Jr, Chris Evans, et Mark Ruffalo... - Genre : Action - Durée : 2H20mn
Un film américain de Jon Hurwitz et Hayden Schlossberg avec Jason Biggs, Alyson Hannigan, Shannon... - Genre : Comédie - Durée : 1H54mn
Un film français de Alexandre de La Patellière et Matthieu Delaporte avec Patrick Bruel, Valérie... - Genre : Comédie - Durée : 1H49mn
Un film français de Alain Chabat avec Jamel Debbouze, Alain Chabat, Fred Testot, Lambert Wilson,... - Genre : Comédie - Durée : 1H45mn
Un film français de Philippe Chauveron avec Elie Semoun, Joséphine de Meaux, Hélèna Noguerra, et... - Genre : Comédie - Durée : 1H34mn
Commentaires
1. Le samedi 10 septembre 2005 à 00:13, par ntic