Changeset 97944 in spip-zone


Ignore:
Timestamp:
May 21, 2016, 11:12:42 AM (3 years ago)
Author:
eric@…
Message:

On revient en arrière sur la normalisation du tableau de données wwo sachant que tout cela est abouti dans la version 3 en cours de développement.
On corrige en outre les prévisions en json qui n'avaient pas été mis au point comme celles en xml.
De fait on passe 2.3.0 et en stable.

Location:
_plugins_/rainette/branches/v2
Files:
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/branches/v2/paquet.xml

    r97847 r97944  
    22        prefix="rainette"
    33        categorie="divers"
    4         version="2.2.8"
    5         etat="test"
     4        version="2.3.0"
     5        etat="stable"
    66        compatibilite="[3.0.11;3.1.*]"
    77        logo="rainette-64.png"
  • _plugins_/rainette/branches/v2/services/wwo.php

    r91455 r97944  
    1919        define('_RAINETTE_WWO_SUFFIXE_STANDARD', 'f:in:miles');
    2020
    21 // Configuration des données fournies par le service wwo pour le mode 'conditions'.
    22 // -- Seules les données non calculées sont configurées.
    23 $GLOBALS['rainette_wwo_config']['conditions'] = array(
    24     'xml' => array(
    25         'base'  => array('children', 'current_condition', 0, 'children'),
    26         'donnees'       => array(
    27                         // Données d'observation
    28                         'derniere_maj'                  => array('cle' => array('localobsdatetime', 0, 'text'), 'suffixe_unite' => ''),
    29                         'station'                               => array('cle' => array(), 'suffixe_unite' => ''),
    30                         // Températures
    31                         'temperature_reelle'    => array('cle' => array('temp_', 0, 'text'), 'suffixe_unite' => array('m' => 'c', 's' => 'f')),
    32                         'temperature_ressentie' => array('cle' => array('feelslike', 0, 'text'), 'suffixe_unite' => array('m' => 'c', 's' => 'f')),
    33                         // Données anémométriques
    34                         'vitesse_vent'                  => array('cle' => array('windspeed', 0, 'text'), 'suffixe_unite' => array('m' => 'kmph', 's' => 'miles')),
    35                         'angle_vent'                    => array('cle' => array('winddirdegree', 0, 'text'), 'suffixe_unite' => ''),
    36                         'direction_vent'                => array('cle' => array('winddir16point', 0, 'text'), 'suffixe_unite' => ''),
    37                         // Données atmosphériques : risque_uv est calculé
    38                         'precipitation'                 => array('cle' => array('precipmm', 0, 'text'), 'suffixe_unite' => ''),
    39                         'humidite'                              => array('cle' => array('humidity', 0, 'text'), 'suffixe_unite' => ''),
    40                         'point_rosee'                   => array('cle' => array(), 'suffixe_unite' => ''),
    41                         'pression'                              => array('cle' => array('pressure', 0, 'text'), 'suffixe_unite' => ''),
    42                         'tendance_pression'             => array('cle' => array(), 'suffixe_unite' => ''),
    43                         'visibilite'                    => array('cle' => array('visibility', 0, 'text'), 'suffixe_unite' => ''),
    44                         'indice_uv'                             => array('cle' => array(), 'suffixe_unite' => ''),
    45                         // Etats météorologiques natifs
    46                         'code_meteo'                    => array('cle' => array('weathercode', 0, 'text'), 'suffixe_unite' => ''),
    47                         'icon_meteo'                    => array('cle' => array('weathericonurl', 0, 'text'), 'suffixe_unite' => ''),
    48                         'desc_meteo'                    => array('cle' => array('weatherdesc', 0, 'text'), 'suffixe_unite' => ''),
    49                         // Etats météorologiques calculés : icone, resume, periode sont calculés
    50         ),
    51     ),
    52     'json' => array(
    53         'base'  => array('data', 'current_condition', 0),
    54         'donnees'       => array(
    55                         // Données d'observation
    56                         'derniere_maj'                  => array('cle' => array('localObsDateTime'), 'suffixe_unite' => ''),
    57                         'station'                               => array('cle' => array(), 'suffixe_unite' => ''),
    58                         // Températures
    59                         'temperature_reelle'    => array('cle' => array('temp_'), 'suffixe_unite' => array('m' => 'C', 's' => 'F')),
    60                         'temperature_ressentie' => array('cle' => array('FeelsLike'), 'suffixe_unite' => array('m' => 'C', 's' => 'F')),
    61                         // Données anémométriques
    62                         'vitesse_vent'                  => array('cle' => array('windspeed'), 'suffixe_unite' => array('m' => 'kmph', 's' => 'miles')),
    63                         'angle_vent'                    => array('cle' => array('winddirDegree'), 'suffixe_unite' => ''),
    64                         'direction_vent'                => array('cle' => array('winddir16Point'), 'suffixe_unite' => ''),
    65                         // Données atmosphériques : risque_uv est calculé
    66                         'precipitation'                 => array('cle' => array('precipMM'), 'suffixe_unite' => ''),
    67                         'humidite'                              => array('cle' => array('humidity'), 'suffixe_unite' => ''),
    68                         'point_rosee'                   => array('cle' => array(), 'suffixe_unite' => ''),
    69                         'pression'                              => array('cle' => array('pressure'), 'suffixe_unite' => ''),
    70                         'tendance_pression'             => array('cle' => array(), 'suffixe_unite' => ''),
    71                         'visibilite'                    => array('cle' => array('visibility'), 'suffixe_unite' => ''),
    72                         'indice_uv'                             => array('cle' => array(), 'suffixe_unite' => ''),
    73                         // Etats météorologiques natifs
    74                         'code_meteo'                    => array('cle' => array('weatherCode'), 'suffixe_unite' => ''),
    75                         'icon_meteo'                    => array('cle' => array('weatherIconUrl', 0, 'value'), 'suffixe_unite' => ''),
    76                         'desc_meteo'                    => array('cle' => array('weatherDesc', 0, 'value'), 'suffixe_unite' => ''),
    77                         // Etats météorologiques calculés : icone, resume, periode sont calculés
    78         ),
    79     ),
    80 );
    81 
    82 
    83 // Configuration des données fournies par le service wwo pour le mode 'conditions'.
    84 // -- Seules les données non calculées sont configurées.
    85 $GLOBALS['rainette_wwo_config']['previsions'] = array(
    86     'xml' => array(
    87         'base'  => array('children', 'weather'),
    88         'donnees'       => array(
    89                         // Données d'observation : l'index est calculé
    90                         'date'                                  => array('cle' => array('date', 0, 'text'), 'suffixe_unite' => ''),
    91                         // Données astronomiques
    92                         'lever_soleil'                  => array('cle' => array(), 'suffixe_unite' => ''),
    93                         'coucher_soleil'                => array('cle' => array(), 'suffixe_unite' => ''),
    94                         // Températures
    95                         'temperature_max'               => array('cle' => array('tempmax', 0, 'text'), 'suffixe_unite' => array('m' => 'c', 's' => 'f')),
    96                         'temperature_min'               => array('cle' => array('tempmin', 0, 'text'), 'suffixe_unite' => array('m' => 'c', 's' => 'f')),
    97                         // Données anémométriques
    98                         'vitesse_vent'                  => array('cle' => array('windspeed', 0, 'text'), 'suffixe_unite' => array('m' => 'kmph', 's' => 'miles')),
    99                         'angle_vent'                    => array('cle' => array('winddirdegree', 0, 'text'), 'suffixe_unite' => ''),
    100                         'direction_vent'                => array('cle' => array('winddir16point', 0, 'text'), 'suffixe_unite' => ''),
    101                         // Données atmosphériques : risque_uv est calculé
    102                         'risque_precipitation'  => array('cle' => array(), 'suffixe_unite' => ''),
    103                         'precipitation'                 => array('cle' => array('precipmm', 0, 'text'), 'suffixe_unite' => ''),
    104                         'humidite'                              => array('cle' => array(), 'suffixe_unite' => ''),
    105                         'pression'                              => array('cle' => array('pressure', 0, 'text'), 'suffixe_unite' => ''),
    106                         'indice_uv'                             => array('cle' => array(), 'suffixe_unite' => ''),
    107                         // Etats météorologiques natifs
    108                         'code_meteo'                    => array('cle' => array('weathercode', 0, 'text'), 'suffixe_unite' => ''),
    109                         'icon_meteo'                    => array('cle' => array('weathericonurl', 0, 'text'), 'suffixe_unite' => ''),
    110                         'desc_meteo'                    => array('cle' => array('weatherdesc', 0, 'text'), 'suffixe_unite' => ''),
    111                         // Etats météorologiques calculés : icone, resume, periode sont calculés
    112         ),
    113     ),
    114     'json' => array(
    115         'base'  => array('data', 'current_condition', 0),
    116         'donnees'       => array(
    117                         // Données d'observation
    118                         'derniere_maj'                  => array('cle' => array('localObsDateTime'), 'suffixe_unite' => ''),
    119                         'station'                               => array('cle' => array(), 'suffixe_unite' => ''),
    120                         // Températures
    121                         'temperature_reelle'    => array('cle' => array('temp_'), 'suffixe_unite' => array('m' => 'C', 's' => 'F')),
    122                         'temperature_ressentie' => array('cle' => array('FeelsLike'), 'suffixe_unite' => array('m' => 'C', 's' => 'F')),
    123                         // Données anémométriques
    124                         'vitesse_vent'                  => array('cle' => array('windspeed'), 'suffixe_unite' => array('m' => 'kmph', 's' => 'miles')),
    125                         'angle_vent'                    => array('cle' => array('winddirDegree'), 'suffixe_unite' => ''),
    126                         'direction_vent'                => array('cle' => array('winddir16Point'), 'suffixe_unite' => ''),
    127                         // Données atmosphériques : risque_uv est calculé
    128                         'precipitation'                 => array('cle' => array('precipMM'), 'suffixe_unite' => ''),
    129                         'humidite'                              => array('cle' => array('humidity'), 'suffixe_unite' => ''),
    130                         'point_rosee'                   => array('cle' => array(), 'suffixe_unite' => ''),
    131                         'pression'                              => array('cle' => array('pressure'), 'suffixe_unite' => ''),
    132                         'tendance_pression'             => array('cle' => array(), 'suffixe_unite' => ''),
    133                         'visibilite'                    => array('cle' => array('visibility'), 'suffixe_unite' => ''),
    134                         'indice_uv'                             => array('cle' => array(), 'suffixe_unite' => ''),
    135                         // Etats météorologiques natifs
    136                         'code_meteo'                    => array('cle' => array('weatherCode'), 'suffixe_unite' => ''),
    137                         'icon_meteo'                    => array('cle' => array('weatherIconUrl', 0, 'value'), 'suffixe_unite' => ''),
    138                         'desc_meteo'                    => array('cle' => array('weatherDesc', 0, 'value'), 'suffixe_unite' => ''),
    139                         // Etats météorologiques calculés : icone, resume, periode sont calculés
    140         ),
    141     ),
    142 );
    143 
    144 // Configuration des données fournies par le service wwo pour le mode 'infos'.
    145 // -- Seules les données non calculées sont configurées.
    146 $GLOBALS['rainette_wwo_config']['infos'] = array(
    147     'xml' => array(
    148         'base'  => array('children', 'nearest_area', 0, 'children'),
    149         'donnees'       => array(
    150                 // Lieu
    151                 'ville'                         => array('cle' => array('areaname+country', 0, 'text'), 'suffixe_unite' => ''),
    152                 'region'                        => array('cle' => array('region', 0, 'text'), 'suffixe_unite' => ''),
    153                 // Coordonnées
    154                 'longitude'                     => array('cle' => array('longitude', 0, 'text'), 'suffixe_unite' => ''),
    155                 'latitude'                      => array('cle' => array('latitude', 0, 'text'), 'suffixe_unite' => ''),
    156                 // Données démographiques
    157                 'population'            => array('cle' => array('population', 0, 'text'), 'suffixe_unite' => ''),
    158                 // Informations complémentaires : aucune configuration car ce sont des données calculées
    159         ),
    160     ),
    161     'json' => array(
    162         'base'  => array('data', 'nearest_area', 0),
    163         'donnees'       => array(
    164                 // Lieu
    165             'ville'                             => array('cle' => array('areaName+country', 0, 'value'), 'suffixe_unite' => ''),
    166             'region'                    => array('cle' => array('region', 0, 'value'), 'suffixe_unite' => ''),
    167             // Coordonnées
    168             'longitude'                 => array('cle' => array('longitude'), 'suffixe_unite' => ''),
    169             'latitude'                  => array('cle' => array('latitude'), 'suffixe_unite' => ''),
    170             // Données démographiques
    171             'population'                => array('cle' => array('population', 0, 'value'), 'suffixe_unite' => ''),
    172                 // Informations complémentaires : aucune configuration car ce sont des données calculées
    173         ),
    174     ),
    175 );
    176 
    17721
    17822/**
     
    21256                .  '&format=' . $format
    21357                .  '&extra=localObsTime'
    214                 .  '&q=' . str_replace(' ', '', trim($lieu)); //todo : ne faut-il pas remplacer par + ?
     58                .  '&q=' . str_replace(' ', '+', trim($lieu));
    21559        if ($mode == 'infos') {
    21660                $url .= '&includeLocation=yes&cc=no&fx=no';
     
    321165 */
    322166function wwo_flux2conditions($flux, $lieu) {
    323         global $rainette_wwo_config;
    324167
    325168        // Identifier le format d'échange des données
     
    329172        // Identification des suffixes d'unite pour choisir le bon champ
    330173        // -> wwo fournit des valeurs dans les deux systemes d'unites mais pas toutes
     174        include_spip('inc/config');
     175        $unite = lire_config('rainette/wwo/unite', 'm');
     176        if ($unite == 'm')
     177                $suffixes = explode(':', _RAINETTE_WWO_SUFFIXE_METRIQUE);
     178        else
     179                $suffixes = explode(':', _RAINETTE_WWO_SUFFIXE_STANDARD);
     180
     181        // Construire le tableau standard des conditions météorologiques propres au service
     182        $tableau = ($format == 'xml') ? xml2conditions_wwo($flux, $suffixes) : json2conditions_wwo($flux, $suffixes);
     183
     184        // Identification des suffixes d'unite pour choisir le bon champ
     185        // -> wwo fournit des valeurs dans les deux systemes d'unites mais pas toutes
    331186        $systeme_unite = lire_config('rainette/wwo/unite', 'm');
    332 
    333         // Initialiser le tableau des données météo directement fournies par le service
    334         include_spip('inc/normaliser');
    335         $tableau = get_donnees_service($rainette_wwo_config, 'conditions', $format, $systeme_unite, $flux);
    336187
    337188        if ($tableau) {
     
    395246 */
    396247function wwo_flux2infos($flux, $lieu) {
    397         global $rainette_wwo_config;
    398248
    399249        // Identifier le format d'échange des données
    400250        include_spip('inc/config');
    401251        $format = lire_config('rainette/wwo/format', 'xml');
    402         $systeme_unite = lire_config('rainette/wwo/unite', 'm');
    403 
    404         // Initialiser le tableau normalisé des informations à partir des données du service
    405         include_spip('inc/normaliser');
    406         $tableau = get_donnees_service($rainette_wwo_config, 'infos', $format, $systeme_unite, $flux);
     252
     253        // Construire le tableau standard des informations sur le lieu et ajouter le nombre de jours de prévisions
     254        $tableau = ($format == 'xml') ? xml2infos_wwo($flux) : json2infos_wwo($flux);
    407255
    408256        if ($tableau) {
     
    588436                                        $tableau[$_index][0]['temperature_max'] = (isset($_prevision["maxtemp$ut"])) ? floatval($_prevision["maxtemp$ut"]) : '';
    589437                                        $tableau[$_index][0]['temperature_min'] = (isset($_prevision["mintemp$ut"])) ? floatval($_prevision["mintemp$ut"]) : '';
    590                                         $tableau[$_index][0]['vitesse_vent'] = (isset($_prevision["windspeed$uv"])) ? floatval($_prevision["windspeed$uv"]) : '';
    591                                         $tableau[$_index][0]['angle_vent'] = (isset($_prevision['winddirDegree'])) ? intval($_prevision['winddirDegree']) : '';
    592                                         $tableau[$_index][0]['direction_vent'] = (isset($_prevision['winddir16Point'])) ? $_prevision['winddir16Point'] : '';
     438                                        $tableau[$_index][0]['vitesse_vent'] = (isset($_prevision['hourly'][0]["windspeed$uv"])) ? floatval($_prevision['hourly'][0]["windspeed$uv"]) : '';
     439                                        $tableau[$_index][0]['angle_vent'] = (isset($_prevision['hourly'][0]['winddirDegree'])) ? intval($_prevision['hourly'][0]['winddirDegree']) : '';
     440                                        $tableau[$_index][0]['direction_vent'] = (isset($_prevision['hourly'][0]['winddir16Point'])) ? $_prevision['hourly'][0]['winddir16Point'] : '';
    593441
    594442                                        $tableau[$_index][0]['risque_precipitation'] = NULL;
    595443                                        include_spip('inc/convertir');
    596                                         $tableau[$_index][0]['precipitation'] = (isset($_prevision['precipMM'])) ? floatval($_prevision['precipMM']) : '';
     444                                        $tableau[$_index][0]['precipitation'] = (isset($_prevision['hourly'][0]['precipMM'])) ? floatval($_prevision['hourly'][0]['precipMM']) : '';
    597445                                        if (($ur == 'in') AND $tableau[$_index][0]['precipitation'])
    598446                                                $tableau[$_index][0]['precipitation'] = millimetre2inch($tableau[$_index][0]['precipitation']);
    599447                                        $tableau[$_index][0]['humidite'] = NULL;
    600448
    601                                         $tableau[$_index][0]['code_meteo'] = (isset($_prevision['weatherCode'])) ? intval($_prevision['weatherCode']) : '';
    602                                         $tableau[$_index][0]['icon_meteo'] = (isset($_prevision['weatherIconUrl'])) ? $_prevision['weatherIconUrl'][0]['value'] : '';
    603                                         $tableau[$_index][0]['desc_meteo'] = (isset($_prevision['weatherDesc'])) ? $_prevision['weatherDesc'][0]['value'] : '';
     449                                        $tableau[$_index][0]['code_meteo'] = (isset($_prevision['hourly'][0]['weatherCode'])) ? intval($_prevision['hourly'][0]['weatherCode']) : '';
     450                                        $tableau[$_index][0]['icon_meteo'] = (isset($_prevision['hourly'][0]['weatherIconUrl'])) ? $_prevision['hourly'][0]['weatherIconUrl'][0]['value'] : '';
     451                                        $tableau[$_index][0]['desc_meteo'] = (isset($_prevision['hourly'][0]['weatherDesc'])) ? $_prevision['hourly'][0]['weatherDesc'][0]['value'] : '';
    604452
    605453                                        // Previsions de la nuit si elle existe
Note: See TracChangeset for help on using the changeset viewer.