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.
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 |
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.