vendredi 16 septembre 2011

Mieux et plus simple

Mieux et plus simple... C'est un peu la conclusion de ce message aujourd'hui.
Après quelques inquisitions du coté de wetter3, je me suis rendu compte que les archives sont accessibles online. Ok, sentiment mitigé! C'était tellement mal mis en valeur dans le site que je suis bien passé à coté! Il existe en fait sur www2.wetter3.de/Archiv/GFS un repertoire d'archivage des images générées tous les jours par le modèle. La convention d'organisation consiste à nommer le fichier image de la façon suivante :

YYYMMDDHH_IDX.gif


  • YYYY Année cherchée
  • MM Mois cherché
  • DDJour cherché
  • HH Heure cherchée

Conclusion : je vais réécrire mon joli script de download. J'ai d'abord ressenti une certaine frustration à cette idée. Ais je perdu mon temps pendant une semaine ? Je pense que non pour deux raisons :
Intérêt technique du développement. Celui ci ma permit de me familiariser avec les appels SQL en Perl et les manipulations de date.
Intérêt fonctionnel : Le nouveau script permettra de contourner l'écueil de date de calcul que je rencontrai jusqu'à maintenant. Je vais effet à la pêche sur le répertoire courant de simulation pour le moment. Wetter3 garde en actif 4 relevés (24h00) dispo en ligne sur la page de visualisation courante . J'ai du mal à estimé quand le switch se fait d'un relevé à l'autre.

Pour l'occasion je vais backupé la version actuelle de mon script getMeteoMaps.pl et faire une réécriture de la logique. En effet pas mal de fonction écrite avant vont me permettre d'avancer plus vite dans le développement je l'espère.

Et hop... Un petit tour du code.
En fait les modifications sont très limité. J'ai changé le lien de référence hardcodé par défaut. J'ai adapté ensuite le pattern de découpage porté par le nom de la ressource à downloader. Le script marche du premier coup...

Ok, une petite modification à prendre en compte cependant. Pour le moment les download se font sur la date du jour. Il faut mettre en place une nouvelle boucle pour parser des intervalles de dates donnés via la ligne de commande.
Pas compliqué ;)

jeudi 15 septembre 2011

getMeteoMaps.pl : Synchro des downloads wetter3

J'écris en ce moment un programme (getMeteoMaps.pl) pour procéder aux downloads d'images depuis le site wetter3. 

En faisant des tests de mon script, je me rends compte que les images sont mise à jour en temps réel avec l'unité de simulation. Cela s'observe par le fait que je tombe régulièrement sur des pages "vides" et qui du moins sont en cours de download. 
J'en conclu pour le moment que le temps de calcul doit s'étaler à partir de l'image de référence t + 00. 

Afin de cadrer l’exécution de mes jobs, je dois connaitre les heures de démarrage de calcul du modèle et la durée des traitements. Cela me permettrai de prendre un peu de marge de manœuvre et de "croner" le démarrage du script au bon moment (quand toutes les images sont la).

Pour l'instant je fais une approximation de l'heure de calcule entre 00, 06, 12 et 18. Pour cela je fais des comparaisons avec ces références. Si ma ref estimée est plus grande que la valeur alors je prend celle ci comme référence. Si ma ref est plus petite, je prends l'estimation 6 heure avant. Le problème c'est que je tombe dans le répertoire en pleine simulation et qu'il manque pas mal d'image selon le moment ou je lance le traitement.

Pour le moment il est 20h00, je remarque que je pèche toujours les prévisions de 12 h 00 en utilisant un browser web. Cela signifie que le run en cours d’exécution est celui de 06h00... Et il n'est pas encore fini. L'idée est donc de déterminer le deta temps de calcul pour le prendre en compte dans ma planification ou directement dans le script.

5 minutes plus tard : Argh... Je regarde mon code... C'est pire que cela... J'ai harcodé la carte de référence sur le repertoire à 00 h.
Donc il faut que j'inclu une logique de calcul pour réaliser le mécanisme décrit ci dessus.

lundi 5 septembre 2011

Extracteur images wetter3.de

Ok, j'ai donc un extracteur de données locales de météo en allant me connecter sur Dayer.biz.

Je souhaite à présent pouvoir corréler ces relevés avec des cartes et analyses disponibles sur le net. Pour cela j'envisage l'utilisation du site wetter3.de. L'avantage du site est la mise à disposition régulière de cartes calculées par un modele de prévisions. Les données sont très complétes et seraient intéressantes à conserver. Plusieurs points cependant :
  • Les cartes seront à conserver sur FS pour ne pas charger la DB
  • Les références de la cartes seront stockées dans la DB cirrus. L'idée est de créer un lien physique sur le fichier image qui correspond sur FS
  • Il existe 34 cartes différentes. Je pense qu'il est nécessaires de gérer une table pour la nomenclature de ces cartes. Cela permettra des sélections précises par la suite. 
  • Les cartes sont accessibles par simple lien HTML, il me faut donc un extracteur pour récupérer ces fichiers
  • Les formats de cartes sont essentiellement du GIF
  • Les cartes sont calculées tous les jours. Les prévisions étant sur trois jours, on risque d'avoir de la redondance dans les cartes stockées. La régle consiste à garder les cartes les plus à jour quitte à écraser d'anciennes version
  • Les cartes seront conservées dans une structure de répertoire faisant ressortir le formalisme "yyyy-mm-dd". On organise les cartes par rapport à la date qu'elle couvre, et non pas en fonction de la date de simulation.
Les accès aux cartes se font sur le lien suivant :
http://www2.wetter3.de/Animation_06_UTC


J'en conclu qu'il existe un batch journalier de simulation pour fournir les cartes UTC 06. Le download devra tenir compte de cette heure (minuit?)
La construction des noms des cartes se fait de la façon suivante :
<time>_<family>.gif
  • <time> représente l'heure de simulation par rapport à la date de référence à l'heure UTC 06. Les prévisions sont faites à 180 heures.
  • <family> est un index qui permet de déterminer à quel type de carte on a affaire.
  • La génération des noms de cartes respecte toujours cette règle et peut de ce fait être automatiser (cela nous évite de coder un crawler / extracteur HTML pour le traitement)
Il faut tenir compte de l'heure de simulation et la date de référence pour pouvoir transmettre les fichiers récupérés dans les bons répertoires de destinations. Cela nécessite de changer le formalisme du nom sur FS pour obtenir une forme du type :
<time>_<family>.gif
Mais ici <time> sera une valeur comprise dans l'interval des valeurs [0,6,12,18], ce qui permet de régler en partie les problémes de doublons lors du download.
L'extracteur sera écrit en Perl. Il doit permettre de :
- Spécifier le lien du site de download
- Spécifier la racine de la structure de stockage
- Gérer la gestion de doublons
- Tenir des journaux à jours pour le suivi des actions et des erreurs
- Le traitement devra impérativement être démarré une fois par jour car wetter3.de ne gère par d'archives!