After the temperature data is interpolated to the elevation zones of each catchment it is hard to present the temperature series for each basin. Because of the large total number of elevation zones the location list is very large and difficult to analyse. To get an overview of the temperature time series the 0-degree altitude line within a catchment is computed. This zero-degree altitude line will be computed for all catchments individually for the update period.

The procedure of computation is as follows:

  • select all temperature series for a catchment
  • search from the lowest altitude level to the highest altitude level where the temperature changes from positive to negative.
  • store the altitude level where the temperature changes from positive to negative
  • repeat this procedure for all time steps.

When all temperature series in a basin are below 0-degree the lowest elevation zone (200 metre for all catchments) will be entered. Similarly if all temperature time series are above 0-degree the highest elevation zone (4300 metre for all catchments) will be entered.

The transformation checks the temperature starting with the lowest altitude. If any of the input temperature values are missing before we reach an altitude with 0 or lower temperature, the output will be a missing value. Once an elevation with 0 or lower temperature is found, that value is returned as output without checking the rest of the input.


Input: A set of timeSeries with temperature data.

Output: A single time series with elevation values.

minAltitude and maxAltitude are optional. If they aren’t configured, the input locations will be sorted by their Z value, and the lowest will be used as minAltitude and the highest as maxAltitude.  

Config example:

<?xml version="1.0" encoding="UTF-8"?>
<transformationModule version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.wldelft.nl/fews"
xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/transformationModule.xsd">
<variable>
<variableId>input</variableId>
<timeSeriesSet>
<moduleInstanceId>ZeroDegreeLevel</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>T.historical</parameterId>
<locationSetId>ZeroAltitudeLocationList</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="day"></timeStep>
<relativeViewPeriod unit="day" start="0" end="10"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</variable>
<variable>
<variableId>output</variableId>
<timeSeriesSet>
<moduleInstanceId>ZeroDegreeLevel</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>altitude</parameterId>
<locationId>outputLocation</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="day"></timeStep>
<relativeViewPeriod unit="day" start="0" end="10"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</variable>
<variable>
<transformation id="zeroDegreeAltitude">
<altitude>
<zeroDegreeAltitude>
<temperature>
<variableId>input</variableId>
</temperature>
<coefficientSet>
<minAltitude>10</minAltitude>
<maxAltitude>10000</maxAltitude>
</coefficientSet>
<altitude>
<variableId>output</variableId>
</altitude>
</zeroDegreeAltitude>
</altitude>
</transformation>
</transformationModule>
  • No labels