NAME
Quiq::Timeseries::Synchronizer - Rasterung/Synchronisation von Zeitreihen
BASE CLASS
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.222
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.