Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2010

Vous avez créé un tutoriel, postez-le ici

Modérateurs : jturlier, Météo Villarzel

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par JP54 » 20 déc. 2014, 13:36

Je l'ai installé, mais je n'ai pas trouvé ou ça plante, de plus je ne sais pas trop comment ça fonctionne web developper
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par PascalWMR » 21 déc. 2014, 11:07

Salut JP et tous le monde
JP54 a écrit : J'ai bien les donnés, la normale et les écarts, mais j'ai une page blanche. :x
Donc j'ai un problème je ne sais pas trop à quel endroit, partie php sans doute, une virgule, une parenthèse, j'ai vérifié à priori c'est bon.
Je mets le code de mon graphique si quelqu'un peut jeter un oeil.

Bien sûr je continue à chercher, on ne s'est jamais...
Bon j'ai regardé ton code.
1. Il y a plusieurs fautes dans les parenthèses et les accolades et c'est une des causes de la page blanche.

2. Il faut que tu fasse bien attention au librairies que tu appelle. Un nouvelle fois, tu fait un graphique Highcharts mais tu appelle une librairie Hichstock
. C'est une autre cause de la page blanche.

3. Il ne faut pas mélanger les types de graphiques. Et pour cause, l'encodage des données n'est pas le même.
Tu a pris la solution que je t'ai donnée dans ce sujet et tu le mélange avec le code de mon tuto.
Tu mélange donc des données encodées pour le type area avec des données encodées pour les types column et spline.
Ca ne peut pas marcher car les données de type area sont encodées selon ce format [datetime ou catégorie , données1 , données2], alors que les autres sont encodées avec une seule et unique donnée comme ceci [datetime ou catégorie] , [données].
Dans les données encodées pour un graphique de type area, la première données sert à xAxis et les suivantes à yAxis alors que dans les autres types de graphiques, une donnée spécifique sert a xAxis et les autres pour yAxis.
D’ailleurs, dans nos graphiques, et je précise bien dans nos graphiques, car dans d'autres, on peut faire appel à des échelles autres que celle du temps, les données pour xAxis qui font appel au type datetime sont traitées, par cette fonction en début de de code

Code : Tout sélectionner

    function comArr(unitsArray) { 
        var outarr = [];
        for (var i = 0; i < time.length; i++) {
         outarr[i] = [time[i], unitsArray[i]];
        }
      return outarr;
    } 
Pour afficher les données dans un graphique classique, si je puis dire, tu appelle les données à afficher comme ceci:

Code : Tout sélectionner

data: comArr(t_out_moy)
La fonction comArr combinée avec la donnée à afficher, convertis la série en area.
Alors que que dans les graphiques de type area, tu appelle la série de cette façon.

Code : Tout sélectionner

data: NBJGJanvier,
Normal, on ne fait pas appel à la fonction comArr() puisque la série à déja été encodée en area.

Pour ton graphique donc, il faut choisir:
Soit tu encode chaque séries en area, soit tu encode chaque séries séparément et tu passe par la fonction comArr(), mais le souci, c'est que si tu opte pour la 2ème solution, tu sera à nouveau confronté à ton problème de décalage sur xAxis.

Bon voila quand même le résultat de ton code corrigé.
http://www.monsite-meteo.eu/Page/TestNb ... UnMois.php

Autre chose, je ne comprend pas pourquoi tu encode la normale du mois en cours et que après, sur yAxis, tu mette une plotline qui reprend la même valeur :?: :?: :?:

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par JP54 » 21 déc. 2014, 18:59

Bonsoir,
Je n'ai pas fais attention pour la librairie.
J'ai pris exemple sur ton tuo et c'est vrai le graphiques est fait avec highstock et le mien avec highcharts.
Je vais reprendre mon graphique de puis le début et tenté de le corrigé.
Le plotLines va disparaitre, je l'avais mis pour faire un essaie et je ne l'ai enlevé.
Par contre, est ce que ma partir PHP correct
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par PascalWMR » 21 déc. 2014, 20:43

Bonsoir JP

Non, ta partie PHP n'est pas bonne car c'est là qu'en premier lieu tu mélange les types de données area et les autres.

Voici ton code

Code : Tout sélectionner

 $sql = "SELECT substr(recdateTZ,1,4) AS Annee, sum(t_out_mini <= 0) AS NBJG FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='01' GROUP BY 1";  
    $query = mysql_query($sql);                   
    $i=0;
    $NBJG02 = array();
    while ($list = mysql_fetch_assoc($query)) {     

    $Annee[$i]=$list['Annee']*1;
    $NBJG[$i]=$list['NBJG']*1;

   if (date("m",$time[$i]/1000)==1) {$NormaleMensuelle[$i]=17.3;}
   
    $NBJG02[] = array($Annee[$i],(float)$NBJG[$i]);
    $Ecart[$i]=$NBJG[$i]-$NormaleMensuelle[$i];

    $i++;
    }   
Tu traite une variable $time qui n'existe pas.

et ici

$NBJG02[] = array($Annee[$i],(float)$NBJG[$i]);
$Ecart[$i]=$NBJG[$i]-$NormaleMensuelle[$i];

La variable $NBJG02[] est de type area et la variable $Ecart[$i] est de type unique si je puis dire.

Donc comme je te l'ai expliqué précédemment, il est impossible d'afficher ces données dans un même graphique.
Il faut donc que les données soient toutes du même type.

Voici donc le bon code

Code : Tout sélectionner

$sql = "SELECT substr(recdateTZ,1,4) AS Annee, sum(t_out_mini <= 0) AS NBJG FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='01' GROUP BY 1";  
$query = mysqli_query($conn,$sql);                   
$i=0;
$NBJGJanvier = array();
$NormaleMensuelleJanvier= array();
$EcartJanvier = array();
while ($list = mysqli_fetch_assoc($query)) {      

$Annee[$i]=$list['Annee']*1;
$NBJG[$i]=$list['NBJG']*1;
$Normale1981_2010Janvier[$i]=17.3;
$Ecart[$i]=$NBJG[$i]-$Normale1981_2010Janvier[$i];

$NBJGJanvier[] = array($Annee[$i],(float)$NBJG[$i]);
$EcartJanvier[] = array($Annee[$i],(float)$Ecart[$i]);
$NormaleMensuelleJanvier[] = array($Annee[$i],(float)$Normale1981_2010Janvier[$i]);

$i++;
} 	
Tu vois donc qu'en premier lieu, je déclare les variables qui seront encodées comme étant des tableaux (array) pour des données encodées en area
$NBJGJanvier = array();
$NormaleMensuelleJanvier= array();
$EcartJanvier = array();


Dans ce graphique, une fois encodées, ces données se présentent comme ceci
eval('var NBJGJanvier = [[2012,11],[2013,18],[2014,12]]');
eval('var EcartJanvier = [[2012,-6.3],[2013,0.7],[2014,-5.3]]');
eval('var NormaleMensuelleJanvier = [[2012,17.3],[2013,17.3],[2014,17.3]]');

alors que dans un graphique avec des données uniques, elles se présente comme ceci
eval('var time = [1419020700000,1419021000000,... ] :arrow: données pour le xAxis
eval('var outdoorhumidity = [91,91,91,91,92,92,92,92,92,...] :arrow: donnée pour le yAxis à afficher sur le graphique.

Vois tu bien la différence :?:
Comme je te l'ai expliqué précédemment, tu peux voir que pour chaque donnée, tu retrouve la 1ère valeur qui servira au xAxis (2012,2013,2014) puis après la virgules, la valeur pour le yAxis à afficher sur le graphique (11,-6.3,17.3)

Voila, j’espère avoir été clair.

A+
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par JP54 » 22 déc. 2014, 06:37

Oui, tes explications sont très clairs Pascal, je vais mettre tout ça en pratique pour mes prochains graphiques, mais déjà essayé de bien les comprendre pour ne pas refaire de tels erreurs
La différence est flagrante, ça n'a rien à voir avec ce que j'ai fais.
Merci beaucoup pour ces explications.
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

muchistic
Messages : 142
Enregistré le : 17 févr. 2014, 20:20
Localisation : Canejan (33)
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par muchistic » 23 déc. 2014, 12:14

PascalWMR a écrit :Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2010

Le but de ce tuto, est d'afficher un graphique Highstock qui compare la pluviométrie mensuelle aux Normales 1981-2010.
A la fin de ce tuto, vous devriez obtenir un graphique ressemblant à celui-ci.
http://www.monsite-meteo.eu/meteo/PageG ... rmales.php
Ce graphique est inspiré de celui que Pierre-André avait fait il y a un moment. Cependant, il présentait quelques inconvénients.
Pour afficher les "Normales, il fallait les saisir manuellement tous les ans. C'était fastidieux et on loupait le réveillon de nouvel an pour mettre à jour les données en temps réel :roll: .
Le code PHP de la page s’allongeait tous les ans et la courbe des Normales était affichée jusqu'à la fin de l'année sans qu'il y ait de données pluie correspondantes.
Avec la méthode employée pour extraire les données de la BDD on utilisait la fonction DataGrouping de Highstock pour les afficher.
Le problème avec cette méthode, est que le nombre de données "Rain_jour" (des centaines voire plus), extraites de la BDD et le nombre de données "Normales" (12 par an) n'est pas le même.
Ceci a pour conséquence, si l'on fait un zoom sur le graphique, d'avoir des courbes qui ne veulent plus dire grand-chose car elles ne sont pas synchronisées.
J'ai donc trouvé la solution que je vous donne ici :idea: .


Et voilà. J'ai commencé par le plus simple, car le code pour afficher les même données annuellement ou pour un seul mois, comme sur cette page de mon site,contrairement à ce que l'on pourrait penser, est plus compliqué.

Mais cela vous sera expliqué dans d'autres tutos.

Bon un rayon de soleil est de retour, je vais en profiter pour aller tondre la pelouse.
Bonjour

merci Pascal pour le tuto trés bien expliqué, merci aussi a JP54 pour son aide :)
voici ce que ça donne chez moi : http://www.meteo-canejan.fr/graphique/p ... -annee.php

Dominique
https://www.meteo-canejan.fr/

ma config : VP2sql , Weaterlink 6.03 , NOAAtable, minimaxibis (sonde agricole), Windows 10 .

phil974
Messages : 43
Enregistré le : 23 juin 2014, 20:01
Localisation : Saint Denis (La Réunion)
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par phil974 » 05 janv. 2016, 06:40

Bonjour à tous et bonne année.

Je suis en traiun de réaliser ce graphique mais pour la pluvio annuelle.
Je récupère facilement mes cumuls annuels
Par contre, pouvez vous m'aiguiller sur la partie php pour les normales.
En gros je souhaite : si l'année est échue alors normale = normale annuelle
si l'année est en cours, en fonction du mois, normale = somme des normales mensuelles jusqu'au mois en cours
Simple à expliquer mais rien je sais pas comment m'y prendre :(

Merci à tous
Philippe
Davis Vantage Pro 2 Plus
Weatherlink 6.0.3 - Graphweather 3.0.15
VP2SQL
Base de données hébergée chez o2switch

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par Météo Villarzel » 05 janv. 2016, 10:03

Salut Philippe,

c'est bien de ça que tu parles ?
http://www.boock.ch/meteo/graphiques_ph ... _annee.php

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

phil974
Messages : 43
Enregistré le : 23 juin 2014, 20:01
Localisation : Saint Denis (La Réunion)
Contact :

Re: Tuto Pluviométrie Mensuelle Comparée aux Normales 1981-2

Message par phil974 » 05 janv. 2016, 13:16

exactement :)
Davis Vantage Pro 2 Plus
Weatherlink 6.0.3 - Graphweather 3.0.15
VP2SQL
Base de données hébergée chez o2switch

Répondre