...
This transformation is used to convert a non equidistant time series to an equidistant time series. The value at this time step will derived from sampling the equidistant time series. It is possible to configure how the equidistant time series should be sampled.
The available options are:
Table of Contents | ||||
---|---|---|---|---|
|
options
- maxGapLength (Only implemented for linear and block interpolation.)
- ignoreMissing / validationRule
maxGaplength: Gaps equal to or smaller than maxGapLength will be filled with sampled values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with sampled values.
ignoreMissing: if true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing or unreliable. Default is true.
Examples
Below examples are shown. Each example uses the same non-equidistant input timeserietimeseries, but a different sampling method is applied. The output timeserie timeseries has timesteps of 1 day.
Accumulate
Accumulates the values, weighted to the timestep, to the wanted output timestep.
TimeWeightedAverage
Calculates the average value while taking the time between different values into account.
This is implemented as follows:
- The target time step is split over the source time steps.
- All the values of the parts of the source time steps are mutliplied by the amount of milliseconds and added together.
- The result of that addition is then divided by the amount of milliseconds of the target time step.
An example can be seen in the table below where a time series with non equidistant time step is resampled to a 15 minute time step.
Row | Time | B | Formula | Result |
---|---|---|---|---|
7 | 13-6-2021 08:45:00 | 0,015 | B7 | 0,015 |
8 | 13-6-2021 08:56:47 | 0,016 | ||
9 | 13-6-2021 09:00:00 | 0,017 | (B8 * 707000 + B9 * 193000) / 900000 | 0,016214444 |
10 | 13-6-2021 09:11:47 | 0,021 | ||
11 | 13-6-2021 09:11:53 | 0,017 | ||
12 | 13-6-2021 09:13:53 | 0,014 | ||
13 | 13-6-2021 09:13:58 | 0,016 | ||
14 | 13-6-2021 09:15:00 | 0,018 | (B10 * 707000 + B11 * 6000 + B12 * 120000 + B13 * 5000 + B14 * 62000) / 900000 | 0,019805556 |
15 | 13-6-2021 09:26:47 | 0,017 | ||
16 | 13-6-2021 09:26:48 | 0,018 | ||
17 | 13-6-2021 09:30:00 | 0,016 | (B15 * 707000 + B16 * 1000 + B17 * 192000) / 900000 | 0,0167877778 |
18 | 13-6-2021 09:41:47 | 0,015 | ||
19 | 13-6-2021 09:45:00 | 0,015 | (B18 * 707000 + B19 * 193000) / 900000 | 0,015 |
20 | 13-6-2021 10:00:00 | 0,016 | B20 | 0,016 |
21 | 13-6-2021 10:11:47 | 0,018 | ||
22 | 13-6-2021 10:11:50 | 0,017 | ||
23 | 13-6-2021 10:15:00 | 0,015 | (B21 * 707000 + B22 * 3000 + B23 * 190000) / 900000 | 0,017363333 |
Zero
Every input value that fits an output timestep is stored in the output timeserietimeseries. In this case that is only the last value, at 06-01-2014. All other values in the output timeserie timeseries are set to zero.
Missing
Every input value that fits an output timestep is stored in the output timeserietimeseries. In this case that is only the last value, at 06-01-2014. All other values in the output timeserie timeseries are set to missing.
PreviousTimeStep
The first input value to be found after each (output) timestep is stored in the output timeserietimeseries.
NextTimeStep
The first input value to be found before each (output) timestep is stored in the output timeserietimeseries.
Block
The first input value to be found before each (output) timestep is stored in the output timeserie, and repeated until a new value is found.
Linear
LinearOrClosest
In the image below the results from both methods are depicted.
Configuration
A basic configuration of the function is described below.
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <transformationModule version="1.0" xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/transformationModule.xsd"> <!--Input time series--> <variable> <variableId>Q_in</variableId> <timeSeriesSet> <moduleInstanceId>ImportDatabase</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Q.obs</parameterId> <locationSetId>HydroGauges_HuangChuan</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> <relativeViewPeriod unit="day" start="-16" end="0" startOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <!--Output time series--> <variable> <variableId>Q_out</variableId> <timeSeriesSet> <moduleInstanceId>HuangChuan_Update_Pre</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Q.obs</parameterId> <locationSetId>HydroGauges_HuangChuan</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="hour" multiplier="6"/> <relativeViewPeriod unit="day" start="-16" end="0" startOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <!--Transformations--> <transformation id="nonequidistant to equidistant"> <sample> <nonEquidistant> <nonEquidistantInputVariable> <variableId>Q_in</variableId> </nonEquidistantInputVariable> <interpolationType>linear</interpolationType> <outputVariable> <variableId>Q_out</variableId> </outputVariable> </nonEquidistant> </sample> </transformation> </transformationModule> |
Save