pywws.WindRose

Tracer une “rose des vents”.

usage: python -m pywws.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

Introduction

Cette routine trace une ou plusieurs “rose des vents” (voir Wikipedia <http://en.wikipedia.org/wiki/Wind_rose> _ pour une description). Comme pywws.Plot 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é

Fonctions

apparent_temp(temp, hr, vent)

Calcule la température apparente (sensation réelle), en utilisant la formule de

cadhumidex(temp, humidité)

Calcule l’Indice d’Humidité selon les Normes Météo Canadiennes

dew_point(temp, hum)

Calcule le point de rosée, en utilisant la formule provenant de http://en.wikipedia.org/wiki/Dew_point.

illuminance_wm2(lux)

Conversion approximative de la luminosité en lux, au rayonnement solaire en W/m2

main([argv])
pressure_inhg(hPa)

Converti la pression de hectopascals/millibars, à pouces de mercure

pressure_trend_text(trend)

Converti la tendance de la pression en une chaîne, telle qu’utilisée par le UK Met Office.

rain_inch(mm)

Converti les précipitations de millimètres, à pouces

temp_f(c)

Converti la température de Celsius, à Fahrenheit

usaheatindex(temp, humidité, point de rosée)

Calcule l’Indice de Chaleur selon les normes du Service Météorologique National USA

wind_bft(ms)

Converti la vitesse du vent de mètres par seconde, vers l’échelle Beaufort

wind_chill(temp, vent)

Calcule le refroidissement éolien, en utilisant la formule de

wind_kmph(ms)

Converti la vitesse du vent de mètres par seconde, à kilomètres par heure

wind_kn(ms)

Converti la vitesse du vent de mètres par seconde, à noeuds

wind_mph(ms)

Converti la vitesse du vent de mètres par seconde, en miles par heure

winddir_degrees(pts)

Converti la direction du vent de 0..15 en degrés

winddir_text(pts)

Converti la direction du vent de 0..15, en points cardinaux

Classes

BasePlotter(params, status, raw_data, ...)
RosePlotter(params, status, raw_data, ...)
datetime(year, month, day[, hour[, minute[, ...) The year, month and day arguments are required.
timedelta

Différence entre deux valeurs de datetime.

class pywws.WindRose.RosePlotter(params, status, raw_data, hourly_data, daily_data, monthly_data, work_dir)[source]
GetPlotList()[source]
GetDefaultRows()[source]
GetDefaultPlotSize()[source]
GetPreamble()[source]
PlotData(plot_no, plot, source)[source]
pywws.WindRose.main(argv=None)[source]