Zeitliche Aggregation räumlicher Daten
Folgende Komponenten stehen für die zeitliche Aggregation räumlicher Daten (z.B. HRU-Attribute) und deren Ausgabe zur Verfügung:
org.unijena.jamscomponents.aggregate.TemporalSumAggregator
Diese Komponente ermittelt für beliebiege räumliche Attribute Durchschnittswerte über einen gegebenen Zeitraum (z.B. ein Jahr).
<component class="org.unijena.jamscomponents.aggregate.TemporalSumAggregator" name="TemporalSumAggregator1"> <var name="time" attribute="time"/> <var name="start" value="1997-01-01 7:30"/> <var name="end" value="1997-12-31 7:30"/> <var name="timeInterval" globvar="timeInterval"/> <var name="value" context="HRUContext" attribute="precip;tmean"/> <var name="weight" value="1"/> <var name="sum" context="HRUContext" attribute="precip_1997;tmean_1997"/> </component>
Hierbei ist time die aktuelle Zeit, start und end beschreiben das Aggregations-Zeitintervall und timeIntervall das Gesamt-Zeitintervall (wird wegen der Schrittweite benötigt). value und sum sind zwei Listen von Attributen, die jeweils die zu aggregierenden Daten und das zugehörige Ergebnis beinhalten. weight ist dann nochmal ein Gewichtswert, falls die Aggregierung irgendwie gewichtet werden soll (z.B. mit Fläche o.ä.). In der aktuellen gehlberg.xml würde diese Komponente z.B. vor dem SpatialWeightedSumAggregator1 eingefügt werden.
org.unijena.jamscomponents.io.EntityObserver
Diese Komponente dient zur Ausgabe aller Attribute einer bestimmten räumlichen Einheit.
<component class="org.unijena.jamscomponents.io.EntityObserver" name="HRUObserver"> <var name="entities" attribute="hrus"/> <var name="idAttribute" value="ID"/> <var name="idValue" value="2"/> </component>
Dabei ist entities die Menge aller Einheiten, idAttribute der Name des Identifikators und idValue der Wert des Identifikators. Diese Komponente dient nur zum Debuggen, wenn mal schnell alle Attribute einer Entity angezeigt werden sollen. Ihr Aufruf ist prinzipiell an jeder belibiegen Stelle möglich, wobei ein Aufruf innerhalb eines zeitlichen oder räumlichen Kontextes wohl weniger Sinn macht, da u.U. recht viel ausgeschrieben wird.
org.unijena.jamscomponents.io.EntityWriter
Diese Komponente dient zur Ausgabe beliebiger Attribute aller Entities in eine Datei, wobei jeweils eine Zeile pro Entity geschrieben wird. Die Iteration über alle Attribute wird dabei mit einem räumlichen Kontext realisiert:
<contextcomponent class="org.unijena.jams.model.JAMSSpatialContext" name="EntityOutputContext"> <var name="entities" attribute="hrus"/> <component class="org.unijena.jamscomponents.io.EntityWriter" name="EntityWriter"> <var name="dirName" globvar="workspaceDir"/> <var name="fileName" value="output\entitiy_1997.dat"/> <var name="headers" value="ID;precip_1997;tmean_1997"/> <var name="value" context="EntityOutputContext" attribute="ID;precip_1997;tmean_1997"/> </component> </contextcomponent>
dirName und fileName definieren eine Ausgabedatei, headers die Einträge einer Kopfzeile und value eine Liste der auszugebenden Attribute. Der Aufruf muss auf jeden Fall ausserhalb irgendwelcher Kontexte passieren, z.B. ganz am Ende der Modellausführung vor </model>. Hierbei können dann insbesondere die während der zeitlichen Aggregierung erzeugten Attribute ausgegeben werden.
Mit der ersten und letzten Komponente lassen sich nun leicht Durchschnittswerte von zeitlichen Teilintervallen (z.B. Jahreswerte) für HRU-Daten erzeugen und ausgeben.