Rainette v3, standardisation des données

, par _Eric_

Concept de tableau standard

Rainette compile les données issues des différents service dans un tableau qui possède pour chaque mode une structure standard afin d’utiliser les modèles d’affichage de la même manière quelque soit le service.

Chaque tableau est propre à un mode mais possède un agencement commun sous la forme d’un tableau associatif et arborescent dont le premier niveau possède deux les deux index suivants :

  • [’donnees’] : tableau associatif des données météorologiques pour les modes « conditions », « infos » ou « previsions »..
  • [’extras’] : tableau associatif qui contient les crédits, la configuration statique et dynamique positionnée par l’utilisateur et le code d’erreur éventuel.

Pour les modes conditions et infos, l’ensemble des données météorologiques sont directement incluses sous l’index [’donnees’]. La structure est présentée ci-après dans cet article.

Pour le mode prévisions, la structure est plus complexe. Tout d’abord , le premier niveau sous l’index [’donnees’] correspond au jour de la prévision, soit de 0 pour le jour courant à n pour le dernier jour proposé (varie suivant le service). Pour chaque jour, la structure distingue :

  • les données commune du jour comme la date, les heures de lever et coucher du soleil, les températures minimale et maximale de la journée ;
  • les données heure incluses dans l’index [’heure’]. Ces données sont indexées numériquement de 0 à n suivant la périodicité choisie. Pour une périodicité de 24h il n’existe qu’un index [0], pour une périodicité de 12h il existe deux index [0] et [1] etc. Sous chacun de ces index on retrouve une liste standard de données météorologiques.
    Toutes ces données sont présentées en fin d’article.

Chaque donnée météorologique reçoit une valeur selon son type PHP. Deux états sont cependant particuliers :

  • quand l’information n’est pas fournie par le service la valeur de la donnée concernée est positionnée à « null ».
  • quand l’information est fournie par le service mais n’est pas disponible temporairement la valeur de la donnée concernée est positionnée à « chaine vide ».
    Cela permet de distinguer ces états lors de l’affichage dans les modèles.

Informations communes - index [’extras’]

Quelque soit le mode, Rainette renvoie pour index [’extra’] du tableau standard, un tableau associatif dont la structure est la suivante :

Index Description Format
Configuration utilisateur
“config” tableau associatif contenant toutes les variables de configuration de chaque service avec leur valeur au moment de la création du cache tableau
Configuration des crédits
“credits” tableau associatif fournissant les données de crédits pour chaque service tableau
“lien” URL du site de référence du service (tous les services) chaine
“titre” Attribut title du lien affiché (uniquement pour wwo) chaine
“logo” Logo du service à afficher. Si le logo n’est pas fourni alors un libellé contenant le nom du service est affiché (uniquement wunderground) chaine
Gestion des erreurs
“erreur” code d’erreur permettant de construire l’item de langue du message associé chaine
Contexte d’appel
“lieu” le lieu tel qu’il a été fourni à l’appel du modèle chaine
“mode” le mode demandé soit « infos », « conditions » ou « previsions » chaine
“service” nom du service comme « wwo », « wunderground », « weather » ou « owm » chaine
“periodicite_cache” périodicité des données du cache parmi 24, 12, 6, 3 et 1 entier

Informations sur le lieu - index [’donnees’]

Pour ce mode, Rainette renvoie pour index [’donnees’] du tableau standard, un tableau associatif dont la structure est la suivante :

Index Description Format Disponibilité
Lieu
“ville” nom complet du lieu souvent complété du pays chaine tous
“pays” nom du pays chaine weather, wwo, wunderground
“pays_iso2” code international du pays selon la norme ISO 3166-1 alpha-2 chaine wunderground, owm
“région” nom de la région ou du numéro du département chaine weather, wwo, wunderground
Coordonnées
“latitude” latitude du lieu réel tous
“longitude” longitude du lieu réel tous

Conditions météorologiques - index [’donnees’]

Pour ce mode, Rainette renvoie pour index [’donnees’] du tableau standard, un tableau associatif dont la structure est la suivante :

Le tableau associatif résultant est composé des index :

Index Description Format Disponibilité
Données d’observation
“derniere_maj” date de l’observation chaine tous
“station” station météo origine de l’observation chaine weather, wunderground
Températures
“temperature_reelle” température mesurée réel tous
“temperature_ressentie” température ressentie en tenant compte du refroidissement éolien. Si la donnée n’est pas fournie par le service elle est calculée réel tous
Données anémométriques
“vitesse_vent” vitesse du vent réel tous
“angle_vent” direction angulaire du vent entier tous
“direction_vent” direction textuelle abrégée selon une rose des vents à 16 points en anglais (E,ESE, WNW...). Si la donnée n’est pas fournie par le service elle est calculée chaine tous
Données atmosphériques
“precipitation” quantité de précipitation réel wwo, wunderground
“humidite” pourcentage d’humidité entier tous
“point_rosee” température du point de rosée entier weather, wunderground
“pression” pression barométrique réel tous
“tendance_pression” tendance barométrique (stable, à la hausse ou à la baisse). Pour les services autres que weather, si elle existe sous une forme quelconque elle est transcodée dans le référentiel weather (steady, rising, falling) chaine weather, wunderground
“visibilite” distance de visibilité des objets réel tous
“indice UV” valeur de l’indice UV entier weather, wunderground
“risque UV” description du risque lié à l’indice UV chaine weather, wunderground
Etats météorologiques natifs (non utilisés dans les modèles)
“code_meteo” code désignant l’état météorologique. Suivant le service ce code est un entier ou une chaine (wunderground) entier / chaine tous
“icon_meteo” url de l’icône représentant l’état météorologique ou code pour owm chaine wwo, wunderground, owm
“desc_meteo” description littérale de l’état météorologique. Seul Wunderground, wwo et owm fournissent une description traduite chaine tous
Etats météorologiques calculés
“resume” résumé de l’état météorologique. Voir ci-après pour en savoir plus divers tous
“icone” icône illustrant l’état météorologique. Voir ci-après pour en savoir plus entier / tableau tous
“periode” 0 pour le jour, 1 pour la nuit entier wwo, wunderground, owm

Prévisions météorologiques du jour j - index [’donnees’][j]

Pour ce mode, Rainette renvoie pour les index [1] à [n] du tableau standard, un tableau associatif dont la structure est plus compliquée que celle des deux autres modes.

En effet, les services peuvent renvoyer par jour de 1 à 24 ensemble de données météorologiques. Les périodicités horaires disponibles sont :

  • 24h (1 ensemble),
  • 12h (2 ensembles, un pour le jour l’autre pour la nuit),
  • 6h (4 ensembles),
  • 3h (8 ensembles)
  • et 1h (24 ensembles).
    En outre, certaines données comme la date et les heures de lever et coucher du soleil ou de la lune sont elles uniques pour la journée considérée.

Ceci étant les index [1] à [n] du tableau standard sont composés d’index associatifs lié à des données journalières (date, lever de soleil, coucher du soleil...) et des ensembles de données horaires inclus dans un sous-index de [0] à [p] suivant la périodicité horaire demandée.

Données uniques pour une journée - index [n° du jour]
Index Description Format Disponibilité
Données d’observation
“date” date de l’observation aaaa-mm-jj hh:mm:ss tous
Données astronomiques
“lever_soleil” heure de lever du soleil chaine weather, wunderground
“coucher_soleil” heure de coucher du soleil chaine weather, wunderground
Températures
“temperature_max” température maximale pour la période réel tous
“temperature_min” température minimale pour la période réel tous
Données horaires - sous-index [’heure’][n° d’heure]
Index Description Format Disponibilité
Données d’observation
“heure” heure de l’observation (utile pour des périodicités inférieures à 24h) hh:mm wwo
Températures
“temperature” température moyenne sur la période horaire réel wwo
Données anémométriques
“vitesse_vent” vitesse du vent réel tous
“angle_vent” direction angulaire du vent entier tous
“direction_vent” direction textuelle abrégée selon une rose des vents à 16 points en anglais (E,ESE, WNW...). Si la donnée n’est pas fournie par le service elle est calculée chaine tous
Données atmosphériques
“risque_precipitation” risque de précipitation en pourcentage entier weather, wwo
“precipitation” quantité de précipitation réel tous sauf weather
“humidite” pourcentage d’humidité entier tous
“point_rosee” température du point de rosée entier wwo
“pression” pression barométrique réel owm, wwo
“visibilite” distance de visibilité des objets réel wwo
“indice UV” valeur de l’indice UV entier wwo
“risque UV” description du risque lié à l’indice UV chaine wwo
Etats météorologiques natifs (non utilisés dans les modèles)
“code_meteo” code désignant l’état météorologique. Suivant le service ce code est un entier ou une chaine (wunderground) entier / chaine tous
“icon_meteo” url de l’icône représentant l’état météorologique ou code pour owm chaine wwo, wunderground, owm
“desc_meteo” description littérale de l’état météorologique. Seul Wunderground et owm fournissent une description traduite chaine tous
Etats météorologiques calculés
“resume” résumé de l’état météorologique. Voir ci-après pour en savoir plus divers tous
“icone” icône illustrant l’état météorologique. Voir ci-après pour en savoir plus entier / tableau tous
“periode” 0 pour le jour, 1 pour la nuit entier tous

Par exemple, le service Weather ne renvoie qu’un seul type de prévisions dont la périodicité est jour/nuit soit 12h. On aura donc le sous-index [’heure’][0] pour le jour et le sous-index [’heure’][1] pour la nuit.

Cela demande donc d’adapter les modèles d’affichage des prévisions aux différentes périodicités sachant que certains modèles seront incompatibles avec des périodicités donc avec certains services. Par exemple, un service qui ne renvoie que des prévisions sur 24h ne pourra jamais être utiliser avec le modèle d’affichage jour/nuit (12h). Une gestion de ces erreurs doit être mise en œuvre.