Create and update flood periods based on threshold crossings and imported flood warnings

schema location


The Flood Periods module can be used in a workflow to create flood period from imported warning forecasts and threshold crossings of observed time series for forecast locations.  This Flood Periods module has functionality that is also partly included in the Threshold Crossing module, the difference is that the Flood Periods module will generate flood periods for catchments/basins and not for forecast locations. The Flood Periods module has its own XML configuration schema and can be scheduled in a Delft-FEWS system, similar to standard workflows. The module will generate automatically new Flood Periods for basins that are based on observed and/or warning forecasts for locations in the basin. The Flood Period information on basin level is stored in a new database table ‘Floodperiods’. This new Flood Periods database table is created in the Delft-FEWS operational database and will be included in the Delft-FEWS MC-MC synchronization process, database clean-up processes and export to the Delft-FEWS Open Archive. The purpose of the Flood Periods module is that it can create a flood period for a catchment or basin, based on threshold crossings of observed time series or forecast time series for locations within a catchment. The Flood Periods module will check all time series in a timeseriesSet and group the timeseriesSet locations in larger units, these will be called areas. If a direct link with the FEWS Open archive is required, the areas must be identical to the configured Archive Areas.


The configuration of the Flood Periods module is split into several elements, information is provided below. The Floodperiods module can check two types of time series when creating a new 'provisional' flood period:

  • Compare observed and forecast time series with thresholds and start a new 'provisional' flood period when a threshold is crossed.
  • Check in the database if there are new warnings imported and start a new 'provisional' flood period when a new forecast value is found.

 The configuration of the function to check observed time series for threshold crossings is shown below; this is the observed element.

  • newFloodPeriodLogEventCode: This is the event code that will be logged when a new flood period is created.
  • areaLocationAttributeId: This is the location attribute used to group the forecast locations in areas.
  • skipLocationsWithoutAreaId: When true then FEWS will not generate an Error message when a location has no location attribute.
  • expiryTime: Set the expiry time of the flood period records in the database. This period must be larger than the expected length of a flood period, otherwise it cannot be closed.
  • periodInitialLength: When a new flood period is created, this is the minimum initial length of the flood period. The end date of a flood period will be set using this configured period length.
  • maximumPeriodExtensionLength: This is the maximum length an existing flood period can be extended, in the past or in the future, when a new threshold event is found. When a threshold event is found outside this period length then a new flood period will be created.
  • thresholdGroupId: This is the thresholdgroupID, from the Thresholds.xml file, used to check the time series for threshold crossings.
  • timeSeriesSet: This is a standard Delft-FEWS time series, in this example a Processed Observed Water Level series.

With the above configuration, the Floodperiods module will check all time series included in the timeSeriesSet and group the thresholds for the areas in the REPORT_FOLDER location attribute.

The configuration of the function to check if new warnings are imported is shown below; this is the importedThresholdCrossings element, normally in a forecast element.

Additional elements for forecasts are:

  • forecastSearchPeriod: This is the period before To that will be used to find forecast series. The period -2 days to 0 means that only forecasts will be checked that have a forecast time in the database of -2 days to 0 days before T0.
  • timeSeriesProperty - key: This is the property of the imported warning series that contains a threshold level.
  • timeSeriesProperty – map: This is a mapping table to map the threshold elements in the warning files with the ThresholdID’s of the Delft-FEWS Application (configured in the Thresholds.xml file).

 With the above configuration, the Floodperiods module will check all time series included in the timeSeriesSet and group the thresholds for the areas in the REPORT_FOLDER location attribute.

 Some additional remarks on Flood Periods:

  • The Delft-FEWS module will create new flood periods and set a start date
  • The Delft-FEWS module will set an end date for a flood period with a length, periodInitialLength, after the last recorded threshold crossing or imported warning.
  • Flood Periods can only be automatically created when new warnings are imported in the operational database and/or observed time series are up-crossing level thresholds.
  • The module will compare the two start times (new warning imported and observed time series up-crossing level thresholds) and choose the earlier one as the flood period start time.
  • When a long historic period must be checked for forecast threshold crossings, a FEWS batch task must be used with the start and end date of the batch task covering the analysis period and the batch interval set to a period smaller than the forecastSearchPeriod. 

Example configuration file

An example Flood Periods module configuration file is provided below.

Example threshold Export file
<?xml version="1.0" encoding="UTF-8"?>
<floodPeriodsModule xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews https://fewsdocs.deltares.nl/schemas/version1.0/floodPeriodsModule.xsd">
	<expiryTime unit="day" multiplier="365"/>
	<periodInitialLength unit="day" multiplier="1"/>
	<maximumPeriodExtensionLength unit="day" multiplier="5"/>
	<forecastSearchPeriod unit="day" start="-2" end="0"/>
				<timeSeriesType>external historical</timeSeriesType>
				<timeStep unit="minute" multiplier="15"/>
				<relativeViewPeriod unit="day" start="-4" end="0" startOverrulable="true"/>
				<readWriteMode>add originals</readWriteMode>
			<timeSeriesProperty key="Prediction_Level">
				<map value="BelowMinor" thresholdId="Minor Flooding"/>
				<map value="Minor" thresholdId="Minor Flooding"/>
				<map value="Moderate" thresholdId="Moderate Flooding"/>
				<map value="Major" thresholdId="Major Flooding"/>
				<timeSeriesType>external forecasting</timeSeriesType>
				<timeStep unit="nonequidistant"/>
				<relativeViewPeriod unit="day" start="-4" end="10"/>
				<readWriteMode>add originals</readWriteMode>

  • No labels