The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

BASE CLASS

Quiq::Hash

SYNOPSIS

Instantiiere Objekt, vereinbare Zeitraster und Werte

my $tsy = Quiq::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);

Options

-geoCoordinates => $bool (Default: 0)

Die Messerwerte haben zusätzlich 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.

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.

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,
);

Options

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

Zeichenkette für "Wert nicht vorhanden".

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

Format der Zeitkolumne.

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.

VERSION

1.220

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

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