Ok, plutot que d'écrire from scratch un programme de génération de données météo, j'ai décidé de me remmettre au travail sur l'ecriture d'extracteurs WEB de données en provenance du site dayer.biz.
Je vois plusieurs avantage à faire cela :
- L'écriture d'un programme de génération de données météo valable est un sujet intéressant mais complexe. L'écriture du programme risque de me prendre plus de temps que je ne souhaite y consacré.
- Je devrais de toute façon récupérer un jour ou l'autre les données existantes de dayer.biz pour populer ma base météo
Cependant il existent des désavantages à faire cela :
- La périodicité des données est de l'ordre de l'heure, donc la fréquence des relevés données sont en dessous de ce que j'avais prévu comme base soit 15 minutes.
- Je garderais 15 minutes comme délai de récolte pour ma station
- Il va falloir prendre en compte le fait que je travail également avec des données sur une heure plutôt que quinze minutes
Le programme de récolte écrit s'appel "getWeekWeatherTable.pl"
Il est écrit en PERL, lequel language se prête plutot bien à ce genre d'exercice. Le programme est capable de récupérer au minimum 1 semaines de données. La sortie se fait dans un fichier CSV et/ou directement sur la base SQL.
Il est à noter que j'ai légérement modifié la base de données pour intégrer un champs signature.
Ce champs est un calcul de MD5 sur la date/heure et le lieu. Ce système me permet de faire des contrôle de doublons avant insertion afin de ne pas charger plusieurs fois les mêmes données.
De plus le nouveau schéma utilisé implémente des index sur la signature, la date et la localisation pour améliorer les perfs par la suite.
Le schéma de weatherData est à présent celui décrit ci dessous :
CREATE TABLE `cirrus_db`.`weatherData` (
`idweatherData` int(11) NOT NULL AUTO_INCREMENT,
`fingerprint` varchar(45) NOT NULL,
`date` datetime DEFAULT NULL,
`idLocation` varchar(64) DEFAULT NULL,
`temperature` decimal(5,2) DEFAULT NULL,
`pressure` decimal(6,2) DEFAULT NULL,
`moisture` decimal(5,2) DEFAULT NULL,
`wind` decimal(5,2) DEFAULT NULL,
`winddir` varchar(20) DEFAULT NULL,
`rain` decimal(5,2) DEFAULT NULL,
`uv` decimal(4,2) DEFAULT NULL,
PRIMARY KEY (`idweatherData`),
KEY `byDate` (`date`) USING BTREE,
KEY `byLocation` (`idLocation`) USING BTREE,
KEY `byFingerprint` (`fingerprint`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=200322 DEFAULT CHARSET=utf8 COMMENT='Raw weather info / updated hourly';
Aucun commentaire:
Enregistrer un commentaire