Frank Seitz
and 1 contributors

NAME

Prty::Timeseries::Synchronizer - Rasterung/Synchronisation von Zeitreihen

BASE CLASS

Prty::Hash

SYNOPSIS

Instantiiere Objekt, vereinbare Zeitraster und Werte

    my $tsy = Prty::Timeseries::Synchronizer->new(600,
        qw/Temperature Windspeed/,
        -geoCoordinates=>1, # $latitude,$longitude bei add()
        -offset=>300,
    );

Füge Temperatur-Daten hinzu

    for my $row (Temperature->select($db,@where)) {
        $tsy->add($row->time,$row->latitude,$row->longitude,
            Temperature=>$row->value,
        );
    }

Füge Windgeschwindigkeits-Daten hinzu

    for my $row (WindSpeed->select($db,@where)) {
        $tsy->add($row->time,$row->latitude,$row->longitude,
            Windspeed=>$row->value,
        );
    }

Generiere Tabelle mit Daten

    my ($titleA,$rowA) = $tsy->rows(
        Temperature=>[roundTo=>2,meanValue=>1,count=>1,stdDeviation=>1],
        WindSpeed=>[roundTo=>2,meanValue=>1,count=>1,stdDeviation=>1],
        -noValue=>'NULL',
    );

Die resultierende Tabelle besitzt folgende Kolumnen:

    0 Time               (Rasterpunkt)
    1 Latitude           (Breite des Geo-Mittelpunkts)
    2 Longitude          (Länge des Geo-Mittelpunkts)
    3 Temperature        (Mittelwert)
    4 Temperature_Count  (Anzahl Werte)
    5 Temperature_StdDev (Standardabweichung)
    6 WindSpeed          (Mittelwert)
    7 WindSpeed_Count    (Anzahl Werte)
    8 WindSpeed_StdDev   (Standardabweichung)

DESCRIPTION

Die Klasse richtet eine oder mehrere Zeitreihen auf ein gemeinsames Zeitraster mit der Intervallbreite $interval aus. Die Intervallbreite wird in Sekunden angegeben.

    $interval = 600;

legt das Zeitraster auf 0, 10, 20, 30, 40, 50 Minuten.

    $interval = 600, -offset=>300

legt das Zeitraster auf 5, 15, 25, 35, 45, 55 Minuten.

METHODS

Konstruktor

new() - Konstruktor/Destruktor

Synopsis

    $tsy = $class->new($interval,@param,@opt);

Description

Instantiiere Synchronizer-Objekt für die Parameter @param mit einem Zeitraster von $interval Sekunden und liefere eine Referenz auf dieses Objekt zurück.

Die Liste @param vereinbart die Parameternamen, die auch bei add() und rows() angegeben werden.

Options

-geoCoordinates => $bool (Default: 0)

Die Messerwerte haben zustzlich zur Zeit eine Ortskoordinate. Wenn gesetzt, erwartet die Methode "add"() zusätzlich die Ortsangaben $latitude und $longitude.

-minTime => $t (Default: undef)

Ignoriere alle Daten, die vor Zeitpunkt $t (Unixzeit) liegen.

-maxTime => $t (Default: undef)

Ignoriere alle Daten, die nach Zeitpunkt $t (Unixzeit) liegen.

-offset => $s (Default: 0)

Versetze das Zeitraster um einem Offset von $s Sekunden. Beispiel: Ein Offset von 300 bei einer Intervallbreite von 600 Sekunden legt die Rasterpunkte auf 5, 15, 25, 35, 45, 55 Minuten.

-window => $s (Default: undef)

Betrachte nur Daten, die innerhalb von $s Sekunden um einen Rasterpunkt liegen. Ignoriere Daten, die außerhalb liegen.

Methoden

add() - Füge Parameterwerte hinzu

Synopsis

    $tsy->add($time,$param=>$value,...);
    $tsy->add($time,$latitude,$longitude,$param=>$value,...);

Description

Füge Wert $value des Parameters $param zur Zeit $time (Unixtime) und (optional) dem Ort ($latitude, $longitude) hinzu. Die Methode liefert keinen Wert zurück. Es können mehrere Parameter/Wert-Paare für dieselbe Zeit und demselben Ort hinzugefügt werden.

addParameter() - Füge Parameter hinzu

Synopsis

    $tsy->addParameter($param);

Description

Füge den zusätzlichen Parameter $param zum Objekt hinzu. Die Methode liefert keinen Wert zurück.

parameters() - Liefere Liste der Parameterbezeichner

Synopsis

    @arr | $arr = $tsy->parameters;

Description

Liefere die Liste der Parameterbezeichner. Im Skalarkontext liefere eine Referenz auf die Liste.

rows() - Liefere Tabelle mit Zeitraster-Daten

Synopsis

    [$titleA,$rowA] = $tsy->rows(
        $param=>[$paramOpt=>$val,...],
        ...,
        @opt,
    );

Description

Die erste Kolumne enthält die Zeit. Wenn bei Konstruktor die Option -geoCoordinates gesetzt wurde, folgen geografische Breite und Lnge. Danach folgen die angegebenen Parameter mit ihren Kolumnen.

Parameter-Optionen

meanValue => $bool

Generiere Kolumne mit Mittelwert über den Werten im Intervall.

stdDeviation => $bool

Generiere Kolumne mit Standardabweichung über den Werten im Intervall.

min => $bool

Generiere Kolumne mit kleinstem Wert im Intervall.

max => $bool

Generiere Kolumne mit größtem Wert im Intervall.

roundTo => $n

Runde die folgenden Kolumnenwerte auf $n Nachkommastellen. Undef bedeutet keine Rundung, alle Stellen werden wiedergegeben.

count => $bool

Generiere Kolumne mit Anzahl der Werte im Intervall.

closestValue => $bool

Generiere Kolumne mit dem zeitlich am dichtesten am Rasterpunkt gelegenen Wert.

closestTime => $bool

Generiere Kolumne mit dem Abstand in Sekunden, den der zeitlich am dichtesten am Rasterpunkt gelegenen Wert hat.

Options

-noValue => $str (Default: '')

Zeichenkette für "Wert nicht vorhanden".

-timeFormat => $fmt (Default: 'yyyymmddhhmmss')

Format der Zeitkolumne.

VERSION

1.108

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2017 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.