
pywws.WindRose
**************


Introduction
============

Cette routine trace une ou plusieurs "rose des vents" (voir *Wikipedia
<http://en.wikipedia.org/wiki/Wind_rose>* _ pour une description).
Comme Plot.py presque tout est contrôlé par un fichier
"recette"/gabarit XML.

Avant d'écrire vos propres fichiers gabarits, il pourrait être utile
de jeter un coup d'oeil sur quelques exemples dans le répertoire
example_graph_templates. Si (comme moi) vous n'êtes pas familier avec
le langage XML, je vous suggère de lire *Le point sur le XML <
http://www.siteduzero.com/tutoriel-3-33440-le-point-sur-xml.html/>* _.


Syntaxe XML du fichier graphe
=============================

Voici le plus simple  gabarit de rose des vents utile. Il trace le
vent au cours des dernières 24 heures.

   <?xml version="1.0" encoding="ISO-8859-1"?>
   <graph>
     <windrose>
       <ycalc>data['wind_ave']</ycalc>
     </windrose>
   </graph>

Dans cet exemple, l'élément racine du graphe est un élément de rose
des vents qui ne contient rien de plus qu'un élément ycalc.

La hiérarchie complète de l'élément est illustré ci-dessous.

   graph
       windrose
           xcalc
           ycalc
           threshold
           colour
           yrange
           points
           source
           title
       start
       stop
       duration
       layout
       size
       fileformat
       lmargin, rmargin, tmargin, bmargin
       title


graph
-----

C'est l'élément racine du fichier XML de graphe. Il n'a pas à être
appelé "graph ", mais il doit y avoir exactement un élément racine.


windrose
--------

Un tracé séparé est établi pour chaque élément de rose des vents, mais
tous partagent le même période.


start
-----

Cet élément règle la date et l'heure des roses des vents. Il est
utilisé dans la construction d'un objet datetime Python. Par exemple,
pour commencer, à midi (heure locale) le jour de Noël 2008:
"<start>year=2008, month=12, day=25, hour=12</ start>". La valeur par
défaut est (stop - durée).


stop
----

Cet élément règle la date et l'heure de la fin des roses des vents. Il
est utilisé dans la construction d'un objet datetime Python. Par
exemple, pour se terminer à 10 h (heure locale) le jour de l'an 2009:
"<stop>year=2009, month=1, day=1, hour=10</stop>". La valeur par
défaut est (départ + durée), à ​​moins que départ ne soit pas défini.
Dans ce cas, l'horodatage de la dernière lecture horaire de la station
est utilisée.


duration
--------

Cet élément définit la durée de la rose des vents, à moins que
démarrage et arrêt soient définies. Il est utilisé dans la
construction d'un objet Python timedelta. Par exemple, pour tracer une
semaine: "<duration> weeks=1</duration>". La valeur par défaut est
hours=24.


layout
------

Contrôle la disposition des graphes. Le défaut est une grille qui est
plus large que haute. L'élément de mise en page définit les lignes et
les colonnes. Par exemple: "<layout> 4, 2 </ layout>" utilisera une
grille de 4 lignes et 2 colonnes.


size
----

Définit les dimensions globales du fichier image contenant le graphe.
Par défaut elle est d'une hauteur de 600 pixels et une largeur qui
dépend de la disposition. Tout élément de taille doit inclure à la
fois la largeur et la hauteur. Par exemple: "<size>800, 600</size>"
produira une image 800 pixels de large et 600 pixels de haut.


fileformat
----------

Définit le format d'image du fichier contenant les graphes. Par défaut
png. Toute chaîne reconnue par votre installation de gnuplot peut
convenir. Par exemple: "<fileformat>gif</fileformat>" va produire une
image GIF.


lmargin, rmargin, tmargin, bmargin
----------------------------------

Remplace automatiquement la marge calculée pour la gauche, la droite,
la marge supérieure ou inférieure. Fournir tout nombre réel positif,
par exemple >>``<<<lmargin>1.3</lmargin> >>``<<. Quelques essais
peuvent être nécessaires pour trouver les meilleures valeurs.


title
-----

Définit le titre principal des graphes. Une seule ligne de texte, par
exemple: "<title>La météo du jour</title>". Ce titre apparaît tout en
haut, en dehors de toute zone de graphe.


xcalc
-----

Sélectionne si les données sont incluses dans la rose des vents. La
valeur doit être une expression logique Python valide. Par exemple,
pour tracer une rose des vents pour l'après-midi seulement:
"<xcalc>data ['idx'].hour&gt;= 12</xcalc>". Cela permet l'agrégation
des données de vent l'après-midi pendant plusieurs jours. Rappelez-
vous que les données sont indexées en UTC, vous devez donc utiliser
une expression qui tient compte de votre fuseau horaire. La valeur par
défaut est "True".


ycalc
-----

Sélectionne les données à tracer. Toute expression Python sur une
ligne qui retourne une valeur flottante simple peut être utilisée.
Dans sa plus simple utilisation cela sélectionne une seule valeur du
dictionnaire de "données", par exemple:
"<ycalc>data['wind_ave']</ycalc>". Pour convertir en mph, utiliser:
"<ycalc>data['wind_ave'] * 3.6 / 1.609344</ycalc>". Il est très peu
probable de vouloir utiliser pour autre chose que 'wind_ave' ici.


threshold
---------

Définit les seuils pour chaque couleur sur les pétales de rose. Par
défaut sont basées sur l'exemple Wikipedia. Les valeurs doivent être
une liste correctement ordonnée de nombres réels, par exemple:
"<threshold>0.5, 3.5, 7.5, 12.5, 18.5, 24.5, 31.5</threshold>" se
rapproche de l'échelle de Beaufort, si ycalc a été défini pour
convertir les vitesses de vent en mph.


colour
------

Définit les couleurs des segments de seuil des pétales. Toute séquence
de valeurs entières est acceptée. La correspondance de couleurs-
nombres est définie par gnuplot. Les valeurs par défaut sont 0, 1, 2,
3, etc


yrange
------

Définit les limites supérieures des axes. La rose indique le
pourcentage du temps où le vent est venu d'une direction particulière.
Par exemple, si vous vivez dans un endroit avec un vent très régulier
vous voudrez peut-être permettre à des pourcentages plus élevés que la
normale: "<yrange> 91</ yrange>" . Auto-mise à l'échelle est également
possible, à l'aide d'un astérisque:"<yrange> *</ yrange>"


points
------

Définit le texte des points cardinaux. Les valeurs par défaut sont
'N', 'S', 'E' et 'W'. Pour les graphiques dans une autre langue, vous
pouvez les remplacer, par exemple par ceci: "<points>'No', 'Zu', 'Oo',
'We'</points>". (La meilleure façon de le faire est de créer un
fichier de langue, voir Localisation.py.)


source
------

Sélectionne les données météorologiques à tracer. Les valeurs
autorisées sont "<source>raw</source>", "<source> hourly</ source>",
"<source>daily</source>" et "<source>monthly</source>". LA valeur par
défaut est raw. Notez que les sources différentes ont des
dictionnaires de données différents, donc ce choix affecte ycalc.


title
-----

Définit le titre du graphe. Une seule ligne de texte, par exemple:
"<title>Vents du matin</title>". Ce titre apparaît dans la zone de
traçage, au-dessus de la légende des couleurs.


API détaillé
============

Plot a "wind rose"

   usage: python RunModule.py WindRose [options] data_dir temp_dir xml_file output_file
   options are:
    -h or --help    display this help
   data_dir is the root directory of the weather data
   temp_dir is a workspace for temporary files e.g. /tmp
   xml_file is the name of the source file that describes the plot
   output_file is the name of the image file to be created e.g. 24hrs.png

-[ Fonctions ]-

+------------+--------------------------------------------------------------------------------------------+
+------------+--------------------------------------------------------------------------------------------+

-[ Classes ]-

+------------+--------------------------------------------------------------------------------------------+
+------------+--------------------------------------------------------------------------------------------+

class class pywws.WindRose.RosePlotter(params, raw_data, hourly_data, daily_data, monthly_data, work_dir)

   GetPlotList()

   GetDefaultRows()

   GetDefaultPlotSize()

   GetPreamble()

   PlotData(plot_no, plot, source)

pywws.WindRose.main(argv=None)
