The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.210

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2023 Frank Seitz

LICENSE

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