Skip to content
Snippets Groups Projects
rrd_fill.py 1.39 KiB
#!/usr/bin/env python
import os
import glob
import logging
from datetime import datetime

from metobs.data import wind_vector_components
from aosstower.record import RecordV1, LineParseError
from aosstower.model import RrdModel, ModelError

LOG = logging

if __name__ == '__main__':

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('db')
    parser.add_argument('path')

    args = parser.parse_args()

    logging.basicConfig(level=logging.INFO)

    rrd = RrdModel(args.db)
    if not os.path.exists(args.db):
        LOG.info("initilizing %s", rrd)
        rrd.initialize(datetime(2013, 1, 1))

    for filepath in glob.glob(args.path):
        LOG.info("adding %s", filepath)
        for line in open(filepath).readlines():
            if not line.strip():
                continue
            try:
                record = RecordV1(line)
            except LineParseError as err:
                LOG.error(str(err))
                continue

            windspd = float(record['wind_speed'])
            winddir = float(record['wind_dir'])
            u_e, u_n, spd = wind_vector_components(windspd, winddir)
            record['winddir_east'] = u_e
            record['winddir_north'] = u_n
            record['wind_speed'] = spd

            try:
                rrd.add_record(record)
            except ModelError:
                LOG.exception("Error with record %s" % record)