Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


What

nameofinstance.xml

Description

Configuration for the Report module

schema location

https://fewsdocs.deltares.nl/schemas/version1.0/reports.xsd

...


Related pages

Children Display

...

Report_Coastal_Forecast 1.00 default.xml

Report_Coastal_Forecast

File name for the Report_Coastal_Forecast configuration.

1.00

Version number

default

Flag to indicate the version is the default configuration (otherwise omitted).


Figure 89 Elements of the Reports configuration

...

Related TAG: $FILERESOURCE(resourceId)$

In the Report configuration file a <fileResource id="Plot1">Plot1.svg</fileResource> need t be added with an id. The fileresource file "Plot1.svg" is a file that need to be included in the \Config\ReportImageFiles\ folder.

In the report template file a TAG need to be included with the fileResource ID: <img src="$FILERESOURCE(Plot1)$">

Chart

In the Chart element the variableId's to be used for one or more charts are defined. The Chart ID that is defined is referenced in the TAG.

...

It is possible to have two y-axis visible in the same plot. This can be done by having multiple timeseries where some are assigned to the left y axis and some to the right y axis, or by having a timeseries on the left y axis with an assigned rating curve on the right y axis. So every timeseries plot (also in reports) will have a mandatory left y axis to which a timeseries is assigned and an optional right y axis to which a timeseries or rating curve is assigned.

Both left y axis and right y axis can be customized using <leftAxis> and <rightAxis> configuration elements. Note that  <leftAxis> configuration is  used  only if at least one time series is attached to the left axis. The same goes for the  <rightAxis>.

The display of threshold lines are supported for one y axis. But there can be threshold lines for either the left or the right y axis, but not both. The display of threshold lines are supported for one y axis. But there can be threshold lines for either the left or the right y axis, but not both. Note that further constraints on what thresholds are displayed is possible in the reports schema.

Plot background and foreground  images

The images configured  in <plotBackgroundReportImage> and <plotForegroundReportImage> should be included in the config folder ReportImageFiles.  The images are  resized to fill the whole plot. The foreground image should be transparent. Below an example of the plot with the  background image.

Image Added

 

Multiple TimeSeries plots

...

Below are two examples of a config and the resulting plot.


Code Block
xml
xml
		<chart id="Example7" formatId="chartFormat2" width="500" height="306">
			<timeSeries preferredColor="green" lineStyle="solid;thick" axis="right" visibleInLegend="true" label="Gemessen">series1</timeSeries>
			<timeSeries preferredColor="red" lineStyle="solid;thick" axis="right" visibleInLegend="true" label="COSMO2">series2</timeSeries>
			<timeSeries preferredColor="orange" lineStyle="solid;thick" axis="left" visibleInLegend="true" label="COSMO7">series3</timeSeries>
			<timeSeries preferredColor="violet" lineStyle="solid;thick" axis="left" visibleInLegend="true" label="ECMWF">series4</timeSeries>
			<fileName>Example7</fileName>
		</chart>


Image Modified
Threshold line only for timeseries on the left y axis

Stage/discharge plots

When a discharge is displayed, it is possible to show the stage on the right axis. It is not possible to configure this rating on the left axis (and the timeseries on the right axis), since a plot has to have at least one timeseries on the left axis.

...

Below an configuration and resulting plot. The option reverse is applicable only to deprecated rating curves.


Code Block
xml
xml
		<chart id="Example4" formatId="chartFormat1" width="900" height="300">
			<rightAxis>
				<ratingCurve>
					<ratingCurveId>location1</ratingCurveId>
					<reverse>true</reverse>
				</ratingCurve>
			</rightAxis>
			<timeSeries axis="left" preferredColor="blue" markerStyle="none" lineStyle="solid;thick" label="geen verwachting" visibleInLegend="true">series1</timeSeries>
			<fileName>Example4</fileName>
		</chart>


Image Modified
Threshold line only for timeseries on the left y axis


Code Block
xml
xml
		<chart id="Example8" formatId="chartFormat1" width="900" height="300">
			<rightAxis>
				<ratingCurve>
					<ratingCurveId>location1</ratingCurveId>
					<reverse>true</reverse>
				</ratingCurve>
			</rightAxis>
			<timeSeries axis="both" preferredColor="blue" markerStyle="none" lineStyle="solid;thick" label="geen verwachting" visibleInLegend="true">series1</timeSeries>
			<timeSeries axis="left" preferredColor="black" markerStyle="circle" lineStyle="solid;thick" label="meetwaarde" markerSize="3">series2</timeSeries>
			<fileName>Example8</fileName>
		</chart>


Image Modified
Threshold line only for timeseries on the left y axis

For adding a chart to a report the following aspects are important to configure:

...

Since 2017.02 FEWS supports the possibility to plot arrows markers showing direction on plots, which for example can be used to create a plot of wind speed where the arrow markers signify the wind direction. The report module also supports such markers. Configuration for these markers must be included in the TimeSeriesDisplayConfig.xml, as described in the Time Series Display Configuration Guide under the "Directional arrow markers" section. In addition, for the direction time series to be available in the report module, the direction time series must be included in the chart in addition to the speed time series. The direction time series is NOT added automatically. 

Spatial plot snapshots

Gridded time series can be visualized in a report by means of snapshots. The snap shot is an image depicting the time series spatially.

Configuration aspects

Spatial plot snapshots are configured according to the following schema definition (sharedTypes.xsd)

Image Removed

snapshot

The snapshot is defined as a relative time interval from T0. Optionally a file name may be specified for the snapshot which is used to save the snapshot on the file system. If omitted the file name is generated by the report module. If required the date-time label can be adjusted (font type and font size)

Image Removed

...

<spatialPlotSnapshots id="spatialPlotSnapshot">
.......
......
  <snapshot id="Snapshot">
      <relativeTime value="0" unit="hour"/>
      <fileName>SnapshotFile</fileName>
	  <fileNamePrefix>
  	  	<timeZeroFormattingString>yyyy-MM-DD</timeZeroFormattingString>
	  </fileNamePrefix>
	  <fileNameSuffix>
   		<timeZeroFormattingString>yyMMDDHHmm</timeZeroFormattingString>
	  </fileNameSuffix>
      <dateTimeLabel visible="true">
             <font name="SansSerif" size="12" style="bold"/>
      </dateTimeLabel>
  </snapshot>
     
</spatialPlotSnapshots>

If fileNamePrefix is configured it will add the system time date to the beggining of file name in the configured format. If fileNameSuffix is configured it will add the system time date to end of the file name in the configured format. Please note, it is possible that not all modules support the fileNamePrefix and fileNameSuffix.

Summary

A summary is a (background) map which can be added to a report. On top of this map, icons can be displayed. The icons indicate the location or the (warning) status of the monitoring or forecasting point. By adding specific html-functionality to the report template(s), maps can be used to navigate through the reports as well. Clickable areas and locations can be distinguished here. The map itself (as a file) can be any image file. For displaying maps in html-reports the following formats are advised: *.png, *.jpg or *.gif.

Template tag

In the Summary element the variableId's are specified that are used to create the summary information. The OverlayFormat of the SummaryFormat determines what is shown on the map.

Related TAG: $SUMMARY(summaryId)$

Creating a summary

The map itself is an existing file and can be created in several ways. An image processing software package (like Paint Shop Pro) can create a 'screendump' from the map section of The FEWS-Explorer. The FEWS-Explorer itself has some hidden features which can be used as well. The [F12] button can be used for:

  • Copy current map to a .png file ([F12]+ L);
  • Copy current map extent to the clipboard ([F12]+ K);

The *.png file is named "currentmap.png" and can be found in the /bin directory of your system. The map extent (rectangle containing real world coordinates) can be pasted into any application by choosing Edit-Paste or [Ctrl]+ V. These four coordinates describing the extent of your map picture in world coordinates are needed in the declarations section of the report ModuleConfigFile where you declare this summary.

Remark: Every time you use the above mentioned [F12] features, the png file in the /bin directory and the clipboard is overwritten! In making series of maps you should copy/rename your png file after using this option. You should also paste the map extent in a text editor or spreadsheet directly before repeating the operations with another map extent in the FEWS-Explorer.

Configuring a summary

Declaration section

In the declarations section of the report ModuleConfigFile, the summaryFormat needs to be declared. The following elements should be specified (see figure).

  • Id: unique identifier (as reference to this summary)
  • Map
    o Image
  • file: relative reference/path to the image file;
  • width: width of the image file in pixels;
  • height: height of the image file in pixels;
    o x0: horizontal margin/shift of the map on the html page;
    o y0: vertical margin shift of the map on the html page;
    o leftLongitude: left side of the map in real world coordinates;
    o rightLongitude: right side of the map in real world coordinates;
    o bottomLatitude: bottom side of the map in real world coordinates;
    o topLatitude: top side of the map in real world coordinates;
    o mapFormat: details for positioning and behaviour of the map;
    o overlayFormat: details for positioning and behaviour of icons on the map;

Image Removed
Figure 95 Summaryformat in the declarations section

Detailed explanation

  • File details like width and height can be retrieved using image processing software.
  • The x0 and y0 elements are margins/shifts of the position of the map compared to the left-upper point of the report (e.g. an A4-sheet). This left-upper point is (0,0). The x0/y0 refer to the left-upper point of the image.
  • The mapFormat is used for positioning the map on the page (relative to all other content) and therefor it is placed in a so-called [DIV] tag. This type of html tag puts everything which is configured within that tag in that position on the page. The following table explains the references of the number in this format:

...

Position

...

Type

...

Variable

...

0

...

number

...

Absolute x position of map image.

...

1

...

number

...

Absolute y position of map image.

...

2

...

number

...

Image width.

...

3

...

number

...

Image height

...

4

...

number

...

Image filename.

...

5 (optional)

...

number

...

Reference to a clickable map (#clickmap by default)

  • The overlayFormat is used for positioning location and/or warning icons on the map based on:
  • The map itself (defined in mapFormat);
  • X and Y coordinates of the required locations from the Locations.xml;
  • Note that in case of numbers bigger than 999, it can be that the output may contain unwanted commas, e.g. width 1274 is printed in the reports as 1,274. In order to avoid this, it is recommended to use

    Code Block
    {<position>, number, #}

    instead of

    Code Block
    {<position>, number}

    .

  • Note that when providing a single quote within a snippet of javascript of OverlayFormat in a format field of the report XML configuration and the report appears to be missing this single quote character, this can be fixed by adding the additional escape character in the form of an additional single quote. A more verbose alternative is to put &#39;&#39; or &apos;&apos;.

...

Position

...

Type

...

Variable

...

0

...

number

...

Absolute x position of status icon.

...

1

...

number

...

Absolute y position of status icon.

...

2

...

string

...

Image filename.

...

3

...

string

...

Status description.

...

4

...

string

...

Location name.

...

5 (optional)

...

string

...

Html-link for opening a individual html page (forecastlocation.html)

The mapFormat and overlayFormat elements are configured in html language in which some parts needs to be dynamically filled in. The result will be valid html. The map itself is placed as the bottom 'layer' using the <DIV> tag attributes (index="0") in the mapFormat. Objects defined in the overlayFormat are given higher indices to place them 'on top of the map' and will always be visible (location icons, warning icons).

Use of optional settings in mapFormat and overlayFormat

In both formats, an optional item can be specified.

Clickable map

A clickable map is an image on a html page containing 'hot spots' where the cursor change from the normal 'arrow' to a 'pointing finger' during a mouse-over event. These hot spots can contain hyperlinks to other pages.

...

mapFormat

No Format
&lt;div style="TOP:{1, number, #}px;
LEFT:{0, number, #}px;
position:absolute;Z-index:0"&gt;
&lt;img border="0" src="{4}"
width="{2,number,#}" height="{3, number, #}"
usemap="{5}"&gt;
&lt;/div&gt;

Direct reference to existing display ID

A new feature in FEWS version 2021.01 is the option to create a chart using a direct reference to an existing Display ID in the DisplayGroups configuration. You can configure this using the <DisplayChart/> element like this:

<displayChart id="testDisplayChart" width="400" height="400">
   <displayId>testDisplay</displayId>
</displayChart>

Using a classic <chart/> tag you have to reconfigure each chart separately for both the TimeSeriesDisplay on screen and the Report Export. The Benefit of this may be that you can optimize the way the charts look in a printed or web based report, which may have a different resolution, fonts and other features relative to the computer screen. However, if you just want the charts in the report to look the same as they do on the screen, using the existing Display ID in a <displayChart /> element can save you a lot of work. Optionally you can specifiy a fileName and fileFormat, the default output will be named chart00.png, chart001.png etc.
Please note that the displayChart feature currently requires a (default) period to be defined in the timeseriesSets used in the configuration.

Spatial plot snapshots

Gridded time series can be visualized in a report by means of snapshots. The snap shot is an image depicting the time series spatially.

Configuration aspects

Spatial plot snapshots are configured according to the following schema definition (sharedTypes.xsd). Since FEWS 2023.01 multiple class breaks are allowed. When multiple class breaks are configured in the best suitable class breaks are automatically chosen

Image Added

snapshot

The snapshot is defined as a relative time interval from T0. Optionally a file name may be specified for the snapshot which is used to save the snapshot on the file system. If omitted the file name is generated by the report module. If required the date-time label can be adjusted (font type and font size)

Image Added

Code Block
xml
xml
<spatialPlotSnapshots id="spatialPlotSnapshot">
.......
......
  <snapshot id="Snapshot">
      <relativeTime value="0" unit="hour"/>
      <fileName>SnapshotFile</fileName>
      <dateTimeLabel visible="true">
             <font name="SansSerif" size="12" style="bold"/>
      </dateTimeLabel>
  </snapshot>
     
</spatialPlotSnapshots>


Summary

A summary is a (background) map which can be added to a report. On top of this map, icons can be displayed. The icons indicate the location or the (warning) status of the monitoring or forecasting point. By adding specific html-functionality to the report template(s), maps can be used to navigate through the reports as well. Clickable areas and locations can be distinguished here. The map itself (as a file) can be any image file. For displaying maps in html-reports the following formats are advised: *.png, *.jpg or *.gif.

Template tag

In the Summary element the variableId's are specified that are used to create the summary information. The OverlayFormat of the SummaryFormat determines what is shown on the map.

Related TAG: $SUMMARY(summaryId)$

Creating a summary

The map itself is an existing file and can be created in several ways. An image processing software package (like Paint Shop Pro) can create a 'screendump' from the map section of The FEWS-Explorer. The FEWS-Explorer itself has some hidden features which can be used as well. The [F12] button can be used for:

  • Copy current map to a .png file ([F12]+ L);
  • Copy current map extent to the clipboard ([F12]+ K);

The *.png file is named "currentmap.png" and can be found in the /bin directory of your system. The map extent (rectangle containing real world coordinates) can be pasted into any application by choosing Edit-Paste or [Ctrl]+ V. These four coordinates describing the extent of your map picture in world coordinates are needed in the declarations section of the report ModuleConfigFile where you declare this summary.

Remark: Every time you use the above mentioned [F12] features, the png file in the /bin directory and the clipboard is overwritten! In making series of maps you should copy/rename your png file after using this option. You should also paste the map extent in a text editor or spreadsheet directly before repeating the operations with another map extent in the FEWS-Explorer.

Configuring a summary

Declaration section

In the declarations section of the report ModuleConfigFile, the summaryFormat needs to be declared. The following elements should be specified (see figure).

  • Id: unique identifier (as reference to this summary)
  • Map
    o Image
  • file: relative reference/path to the image file;
  • width: width of the image file in pixels;
  • height: height of the image file in pixels;
    o x0: horizontal margin/shift of the map on the html page;
    o y0: vertical margin shift of the map on the html page;
    o leftLongitude: left side of the map in real world coordinates;
    o rightLongitude: right side of the map in real world coordinates;
    o bottomLatitude: bottom side of the map in real world coordinates;
    o topLatitude: top side of the map in real world coordinates;
    o mapFormat: details for positioning and behaviour of the map;
    o overlayFormat: details for positioning and behaviour of icons on the map;

Image Added
Figure 95 Summaryformat in the declarations section

Detailed explanation

  • File details like width and height can be retrieved using image processing software.
  • The x0 and y0 elements are margins/shifts of the position of the map compared to the left-upper point of the report (e.g. an A4-sheet). This left-upper point is (0,0). The x0/y0 refer to the left-upper point of the image.
  • The mapFormat is used for positioning the map on the page (relative to all other content) and therefor it is placed in a so-called [DIV] tag. This type of html tag puts everything which is configured within that tag in that position on the page. The following table explains the references of the number in this format:

Position

Type

Variable

0

number

Absolute x position of map image.

1

number

Absolute y position of map image.

2

number

Image width.

3

number

Image height

4

number

Image filename.

5 (optional)

number

Reference to a clickable map (#clickmap by default)

  • The overlayFormat is used for positioning location and/or warning icons on the map based on:
  • The map itself (defined in mapFormat);
  • X and Y coordinates of the required locations from the Locations.xml;
  • Note that in case of numbers bigger than 999, it can be that the output may contain unwanted commas, e.g. width 1274 is printed in the reports as 1,274. In order to avoid this, it is recommended to use

    Code Block
    {<position>, number, #}

    instead of

    Code Block
    {<position>, number}

    .

  • Note that when providing a single quote within a snippet of javascript of OverlayFormat in a format field of the report XML configuration and the report appears to be missing this single quote character, this can be fixed by adding the additional escape character in the form of an additional single quote. A more verbose alternative is to put &#39;&#39; or &apos;&apos;.

Position

Type

Variable

0

number

Absolute x position of status icon.

1

number

Absolute y position of status icon.

2

string

Image filename.

3

string

Status description.

4

string

Location name.

5 (optional)

string

Html-link for opening a individual html page (forecastlocation.html)

The mapFormat and overlayFormat elements are configured in html language in which some parts needs to be dynamically filled in. The result will be valid html. The map itself is placed as the bottom 'layer' using the <DIV> tag attributes (index="0") in the mapFormat. Objects defined in the overlayFormat are given higher indices to place them 'on top of the map' and will always be visible (location icons, warning icons).

Use of optional settings in mapFormat and overlayFormat

In both formats, an optional item can be specified.

Clickable map

A clickable map is an image on a html page containing 'hot spots' where the cursor change from the normal 'arrow' to a 'pointing finger' during a mouse-over event. These hot spots can contain hyperlinks to other pages.

mapFormat


No Format
&lt;div style="TOP:{1, number, #}px;
LEFT:{0, number, #}px;
position:absolute;Z-index:0"&gt;
&lt;img border="0" src="{4}"
width="{2,number,#}" height="{3, number, #}"
usemap="{5}"&gt;
&lt;/div&gt;


When adding the string "usemap="{5}" to the mapFormat (see above) the outcome in the html page will be (printed in bold).

The part describing the hot spots for this map are defined in the [map] tag. In this example below, three areas are 'clickable'. Every hot spots links to another html page in the set of reports.

No Format
<img border="0" src="northeast.png" width="503" height="595" *usemap="#clickmap"*>

<!-- Here the clickable map starts: SHOULD BE IN THE TEMPLATE -->
<map name="clickmap">
<area alt="Northumbria Area" href="northumbria

When adding the string "usemap="{5}" to the mapFormat (see above) the outcome in the html page will be (printed in bold).

The part describing the hot spots for this map are defined in the [map] tag. In this example below, three areas are 'clickable'. Every hot spots links to another html page in the set of reports.

No Format
<img border="0" src="northeast.png" width="503" height="595" *usemap="#clickmap"*>

<!-- Here the clickable map starts: SHOULD BE IN THE TEMPLATE -->
<map name="clickmap">
<area alt="Northumbria Area" href="northumbria/area_status.html" shape="polygon" coords="138, ...,...,34">
<area alt="Dales Area" href="dales/area_status.html" shape="polygon" coords="266, ..., ..., 285">
<area alt="Ridings Area" href="ridings/area_status.html" shape="polygon" coords="359138, ..., ..., 379">
</map>
34">
<area alt="Dales Area" href="dales/area_status.html" shape="polygon" coords="266, ..., ..., 285">
<area alt="Ridings Area" href="ridings/area_status.html" shape="polygon" coords="359, ..., ..., 379">
</map>

To avoid hot spots on a map, do not include the "usemap="{5}" in the mapFormat.

...

Hyperlinks can be added to the overlayFormat. By using the following option, hyperlinks to individual reports will be added automatically. They will have a fixed (non-configurable) name, "forecastlocation.html" and assuming it is located in a directory with the same name as the locationId compared to where this report with the map is located in the directory structure.

overlayFormat


No Format
&lt;div style="TOP:{1,number,#}px;
LEFT:{0,number,#}px;
position:absolute;Z-index:1"&gt;
&lt;a href="{5}"&gt;
&lt;img border="0" src="{2}" title="{4}: {3}"&gt;
&lt;/a&gt;
&lt;/div&gt;\n


When adding href="{5}" to the overlayFormat (at that location) a hyperlink is being added to the icon placed on the map. In html it will look like this.

...

Related TAG: $TABLE(tableId)$

  1. table: original table;
  2. rowPerLocationHtmlTable: table with a row per location
  3. rowPerLocationCSVTable: csv table with a row per locations
  4. htmlTable: new style table with same functionality as 'table';
  5. countTables:
    1. thresholdsCrossingsTable: table containing numbers (count) of threshold crossings.
    2. thresholdsCrossingsCountTable: new thresholdsCrossingTable
    3. flagCountTable
    4. flagSourceCountTable
  6. maximumStatusTable: table containing (coloured) indicating threshold crossings over time.
  7. mergedPrecipitationTable: table containing (merged) precipitation figures in specific time intervals
  8. systemStatusTable: tables containing system (management) information;
    1. liveSystemStatus: information about live system: MC and FSS('s);
    2. exportStatus: information about exported files/reports;
    3. importStatus: information about files imported;
    4. scheduledWorkflowStatus: information about (next) scheduled workflows;
    5. completedWorkflowStatus: information about number of workflows completed in last 24 hrs.
    6. currentForecastStatus: information about which workflows are set to CURRENT;
    7. logMessageListing list of logmessages (based on a query)
    8. forecastHistory: historic overview of forecasts.

Tables 3 to 7 have references to cascading style sheets.

table

See Table above

rowPerLocationHtmlTable
Anchor
rowPerLocationHtmlTable
rowPerLocationHtmlTable

The rowPerLocationHtmlTable can be configured directly in <report> section, or in the <declarations> section and reffered from the <report> section. This table is a generic table type and contains for each configured location one row with several columns. The data displayed in a particular column are result of the function that is configured for that column.   Since 2024.01 also htmlColumn’s can be configured. 

For each each column the following elements can be configured:

  • header : text to display in the column header,
  • format: format to use for this column. It refers to the styles that are available in the html template file
  • width: width of the column
  • backgroundColorFunction: function to determine the background color of the cells in the column (see below)
  • foregroundColorFunction: function to determine the foreground color of the cells in the column (see below)
  • function: function that determines/computes the value displayed in the column (see below)

backgroundColorFunction and foregroundColorFunction

These elements currently support the following functions:

For each htmlColumn the following elements can be configured:

  • thTemplate:  custom HTML for the table header
    • Example 1 :  <![CDATA[<th>Location name</th>]]>>
    • Example 2:  <![CDATA[<th class="data-status" style="color:#F9E11E">Max value</th>]]>
  • tdTemplate: custom HTML for the table column
    • Example 1 :  <![CDATA[<td>%LOCATIONATTRIBUTE(shortname)%</td>]]>   
    • Example 2: <![CDATA[<td class="data-status" style="color:%THRESHOLDCROSSING(MAX_THRESHOLDCOLOR;Hm)%">%THRESHOLDCROSSING(MAX_THRESHOLDNAME;Hm)%</td>]]>

backgroundColorFunction and foregroundColorFunction

These elements currently support the following functions:

  • THRESHOLDCROSSING(FIRST_THRESHOLDCOLOR;THRESHOLDCROSSING(FIRST_THRESHOLDCOLOR; variableId)
  • THRESHOLDCROSSING(MAX_THRESHOLDCOLOR; variableId)
  • INDEXMAXWARNINGLEVELCOLOR(0; variableId)

...

  • LOCATIONATTRIBUTE(attribute; <variableId>; <format>)
    Argument attribute refers to the location attributes. The attributes differ per region.
    The other arguments are optional. For example, use argument 'format' if the attribute is a number or a dateTime. VariableId can be omitted : (area;;numberFormat1)
    There are 3 attributes with a fix name: id, name and shortname. These attribute refer always to the location id,name and short name as configured in the locations.xml.The attributes are not case sensitive.
  • PARAMETERATTRIBUTE(PARAMETERATTRIBUTE(attribute; variableId; <format>)
    Argument attribute refers to the parameter attributes. The attributes differ per region.
    The argument format is optional. For example, use argument 'format' if the attribute is a number.
    There are 4 attributes with a fix name: id, name,shortname and unit. These attributes refer always to the parameter id,name, short name and unit as configured in the parameters.xml.
  • MODULEINSTANCEATTRIBUTE(attribute; moduleInstanceId_or_variableId; <format>)
    The attributes are not case sensitiveArgument attribute refers to the module instance attributes. The attributes differ per region.
    The argument format is optional. For example, use argument 'format' if the attribute is a number.
  • THRESHOLDCROSSING(key;variableId;<format>); see note below!
    The argument 'key' specifies which threshold crossing information should be given. Presently the following keys can be used:
    FIRST_THRESHOLDNAME: name of the first level threshold that has been crossed
    FIRST_VALUE: value of the first crossing
    FIRST_DATETIME: date/time of the first crossing
    FIRST_DATE: date of the first crossing
    FIRST_TIME: time of the first crossing
    MAX_THRESHOLDNAME: name of the highest level threshold that has been crossed
    MAX_VALUE: value of the maximum crossing
    MAX_DATETIME date/time of the maximum crossing
    MAX_DATE: date of the maximum crossing
    MAX_TIME: time of the maximum crossing

 


Info

Please note: If you configure any THRESHOLDCROSSING function in a column, then only the locations with threshold crossing will be printed by default.
So, if there are no crossings at all, the table is empty. If  all locations should always be present in the table, use option onlyWriteRowsWithCrossedThresholds=false

 

  • STATISTICS(statistical function; variableId; numberFormatId)
    The argument 'statistical function' specifies which statistical function should be evaluated.  Presently the following functions can be used: COUNT, KURTOSIS, MEAN, MEDIAN, MIN, MAX, RMSQ, RSQUARED, SKEWNESS, STANDARD_DEVIATION, SUM, VARIANCE   

Example of the configuration in <report> section

, the table is empty. If  all locations should always be present in the table, use option onlyWriteRowsWithCrossedThresholds=false


  • STATISTICS(statistical function; variableId; numberFormatId)
    The argument 'statistical function' specifies which statistical function should be evaluated.  Presently the following functions can be used: COUNT, KURTOSIS, MEAN, MEDIAN, MIN, MAX, RMSQ, RSQUARED, SKEWNESS, STANDARD_DEVIATION, SUM, VARIANCE   

Example of the configuration in <report> section

Code Block
languagexml
<report>
	
        <locationSetId>AllLocations</locationSetId>
        
        <rowPerLocationHtmlTable id="tableA" tableStyle="tableStyle3" >

          	            
	    <column>
		<header>Locatie id</header>
		<format>_data</format>
		<function>LOCATIONATTRIBUTE(id)</function>
	    </column>    
         
           <column>
	  	<header>Locatie name</header>
	  	<format>_data</format>
		<width>200</width>
	  	<function>LOCATIONATTRIBUTE(name)</function>
	    </column>
         
            <column>
	 	<header>Eenheid</header>
	 	<format>_data</format>
	 	<function>PARAMETERATTRIBUTE(UNIT;Qobserved)</function>
	    </column>	
	    
            
             <column>
	    	<header>Datum 1e overschrijding</header>
	    	<format>_data</format>
	    	<function>THRESHOLDCROSSING(FIRST_DATE;Qobserved;dateFormatThreshold)</function>
	    </column>	
            
            <column>
	    	<header>Tijdstip 1e overschrijding</header>
	    	<format>_data</format>
	    	<function>THRESHOLDCROSSING(FIRST_TIME;Qobserved;timeFormatThreshold)</function>
	    </column>	
     		        
            <column>
		<header>Waarde 1e overschrijding</header>
		<format>_data</format>
		<function>THRESHOLDCROSSING(FIRST_VALUE;Qobserved;numberFormatThreshold)</function>
	    </column>		            
           
            
             <column>
	    	<header>Datum maximale overschrijding</header>
	    	<format>_data</format>
	    	<function>THRESHOLDCROSSING(MAX_DATE;Qobserved;dateFormatThreshold)</function>
	    </column>	
Code Block
languagexml
<report>
	
        <locationSetId>AllLocations</locationSetId>    
        
      <column>
	    	<header>Tijdstip maximale overschrijding</header>
	 <rowPerLocationHtmlTable id="tableA" tableStyle="tableStyle3" >

 	<format>_data</format>
	    	<function>THRESHOLDCROSSING(MAX_TIME;Qobserved;timeFormatThreshold)</function>
	      </column>			            

 	    <column>
		<header>Locatie<header>Waarde maximale id<overschrijding</header>
		<format>_data</format>
		<function>LOCATIONATTRIBUTE(id<function>THRESHOLDCROSSING(MAX_VALUE;Qobserved;numberFormatThreshold)</function>
	    </column>		            


        </rowPerLocationHtmlTable>

        <template>ReportRowPerLocationTable.html</template>
	
        <outputFileName>tableA.html</outputFileName>
</report>

Example of the configuration in <declarations> section

Code Block
languagexml
<declarations>
	  <rowPerLocationHtmlTableFormat id="rowPerLocationFormat1"    tableStyle="tableStyle3" >
  	   
  	    <column>
	  	<header>Locatie name<<header>Naam</header>
	  	<format>_data_data<yellow</format>
		<width>200</width>
	  	<function>LOCATIONATTRIBUTE(nameshortname)</function>
	    </column>
      	   
	       <column>
	    	<header>Tijd <column>
	 	<header>Eenheid<maximale overschrijding</header>
	 	<format>_data</format>
	   	<function>PARAMETERATTRIBUTE<function>THRESHOLDCROSSING(UNITMAX_DATETIME;Qobserved;dateFormat1)</function>
	     </column>	
		    
        
	    
	      
	       <column>
	    	<header>Datum<header>Waarde maximale 1e overschrijding</header>
	    	<format>_data</format>overschrijding (m3/s)</header>
	    	<function>THRESHOLDCROSSING(FIRSTMAX_DATEVALUE;Qobserved;dateFormatThresholdnumberFormat1)</function>
	     </column>			
            
    
	        <column>
	     	<header>Tijdstip <header>Tijd 1emaximale overschrijding<waterstand</header>
	     	<format>_data</format>
	    	<function>THRESHOLDCROSSING(FIRST_TIME;Qobserved;timeFormatThreshold<function>MAXTIME(Hobserved;dateFormat1)</function>
	     </column>
	
     	
	     <column>
	   
  	 <header>Maximale waterstand (m)</header>
	       <column>
		<header>Waarde 1e overschrijding</header>
		<format>_data</format>
		<function>THRESHOLDCROSSING(FIRST_VALUE;Qobserved;numberFormatThreshold <function>MAXVALUE(Hobserved;numberFormat1)</function>
	     </column>
		     
	  </rowPerLocationHtmlTableFormat>
</declarations>

Example of the configuration with htmlColumn:

Code Block
languagexml
<rowPerLocationHtmlTableFormat     id="rowPerLocationHtml" tableStyle="tableStyle3">
	<htmlColumn>
        	 <thTemplate>  
         		  <![CDATA[<th>Location name</th>]]>
     		  </thTemplate>
		      <column><tdTemplate>
	    	<header>Datum maximale overschrijding</header>
			<![CDATA[<td>%LOCATIONATTRIBUTE(id)%</td>]]>     	<format>_data</format>
	    	<function>THRESHOLDCROSSING(MAX_DATE;Qobserved;dateFormatThreshold)</function>
	    </column>	
        		 
		  </tdTemplate> 
             <column>
	    	<header>Tijdstip	 maximale overschrijding</header>
	</htmlColumn>			
	
	<htmlColumn>
    	<format>_data</format>
	    	<function>THRESHOLDCROSSING(MAX_TIME;Qobserved;timeFormatThreshold)</function>
	  <thTemplate>  
 </column>			       	 	 <![CDATA[
   

 	   <column>
		<header>Waarde maximale overschrijding</header>
		<format>_data</format>
		<function>THRESHOLDCROSSING(MAX_VALUE;Qobserved;numberFormatThreshold)</function>
	    </column>		 <th class="data-status" style="color:#F9E11E">Thresholds crossed</th>
            


		 ]]>
      		  </rowPerLocationHtmlTable>
thTemplate>
  		  <tdTemplate>
        <template>ReportRowPerLocationTable.html</template>
	
		   <![CDATA[
         <outputFileName>tableA.html</outputFileName>
</report>

Example of the configuration in <declarations> section

Code Block
languagexml
<declarations>
 			  <rowPerLocationHtmlTableFormat<td idclass="rowPerLocationFormat1data-status" tableStylestyle="tableStyle3" >
  	color:%THRESHOLDCROSSING(MAX_THRESHOLDCOLOR; Hobserved)%">%THRESHOLDCROSSING(MAX_THRESHOLDNAME;Hobserved;dateFormat)%</td>
        
  		   <column>
	]]>
     	<header>Naam</header>
	  	<format>_data_yellow</format>
		<function>LOCATIONATTRIBUTE(shortname)</function>
	</tdTemplate>            </column>
	   
	       <column>
	    	<header>Tijd maximale overschrijding</header>
	    	<function>THRESHOLDCROSSING(MAX_DATETIME;Qobserved;dateFormat1)</function>
	     </column>			            
	   
	      
	       <column>
	    	<header>Waarde maximale overschrijding (m3/s)</header>
	    	<function>THRESHOLDCROSSING(MAX_VALUE;Qobserved;numberFormat1)</function>
	     </column>			            

	     <column>
	     	 <header>Tijd maximale waterstand</header>
	         <function>MAXTIME(Hobserved		  
	</htmlColumn>			
</rowPerLocationHtmlTableFormat>



rowPerLocationCSVTable
Anchor
rowPerLocationCSVTable
rowPerLocationCSVTable

This table is a generic table type and contains for each configured location one row with several columns, separated by commas. The data displayed in a particular column are result of the function that is configured for that column. For each column the following elements can be configured:

  • header : text to display in the column header,
  • width: optional, width of the column
  • function: function that determines/computes the value displayed in the column.

Note that the xml schema allows element 'format', however the format is not applicable to csv table type Also this report type uses templates. The template should contain at least table name. An example:

{noformat}

$TABLE(myTable)$

{noformat}

The rowPerLocationCsvTable can be configured directly in <report> section, or in the <declarations> section and reffered from the <report> section.

Example of the configuration in <report> section:


Code Block
<report>
	<locationId>M-1000</locationId>
	<locationId>H-2091</locationId>
	<rowPerLocationCsvTable id="myTable">
		<column>
			<header>Naam</header>
			<function>LOCATIONATTRIBUTE(shortname)</function>
		</column>
		<column>
			<header>Tijd maximale overschrijding</header>
			<function>THRESHOLDCROSSING(MAX_DATETIME;Qobserved;dateFormat1)</function>
		     </column>
	     
	     <column>
	     		<header>Waarde <header>Maximalemaximale waterstandoverschrijding (mm3/s)</header>
	         <function>MAXVALUE(Hobserved;numberFormat1)</function>
	     </column>
	     
	  </rowPerLocationHtmlTableFormat>
</declarations>

		<function>THRESHOLDCROSSING(MAX_VALUE;Qobserved;numberFormat1)</function>
		</column>


htmlTable
Anchor
htmlTable
htmlTable

The htmlTable is the successor of the table described earlier. The configuration of this htmlTable is easier and more readable.

...

  • id: unique identifier (as reference to this table);
  • tableStyle: a choice of tableStyle which can be influenced by using the corresponding classes in a cascading style sheet. Choices are tableStyle1 to tableStyle10;
  • column: indicates what (of one or more Timeseries) should be shown in the columns (options are: location, time, date, locationcritical, parameter, parameters, choice, allSeries);
  • row: indicates what (of one or more Timeseries) should be shown in the rows (options are: location, time, date, locationcritical, parameter, parameters, choice, allSeries);
  • relativeWholePeriod: definition of a moving period in time to be displayed (in the example above 24 hours before the day containing T0 of the forecast and 24 after the day containing T0 of the forecast (in total 3 days);
  • topLeftText: definition of the text to be displayed in the upper left cell of the table;
  • cellFormat: format of the cell containing the values;
  • topFormat: Format of the column headers: "0,number,0.00" for a number, "0,date,dd/MMM" for a date.
    • In combination with <column>location</column>, the topFormat specifies what should be written in the header of the column: "1" for location name, "2" for parameter name, "3" for parameter unit (N.B. use curly brackets in place of the quotation marks). Example: <topFormat>{1} - {2} ({3})</topFormat>
    • In combination with <column>parameters</column> or <column>allSeries</column>, the topFormat element can be used to specify a custom column header for each data column. For a table with one data column just specify the custom column header in the topFormat element. For a table with multiple data columns, specify multiple custom column headers (one for each column), separated by "#" symbols, in the topFormat element. E.g. "header1#header2#header3". For parameters the headers can also use "0" for the parameter name and "1" for the unit name. The following example shows a configuration for a table with 2 data columns where the parameter name and value are displayed in the header:  < topFormat >{0} {1}#{0} {1}</ topFormat >
    • To use default headers instead of custom column headers, leave the topFormat element completely empty. If custom column headers are used, then there should be as many custom column headers as data columns in the table, otherwise a warning is logged and default column headers are used instead;
  • leftFormat: format of the most left column;
  • missingValueText: definition of the missing value character. Choices are: " ", "#", "" or "-"; Default: ""
  • nullValueText: definition of the null value (NAN) indicator. Choices are: " ", "-", "-999", "no data";
  • scrollable: Use this to split the table into two parts, one for the header row(s) and one for the data rows. The data row part refers to the tableStyle for this table with "_scrollable" appended. This can be used to make the data rows scrollable while the header row(s) remain fixed. For this to work the referred style needs to be defined in the report tables .css file.
  • tableBackgroundColors:  Override background colors in a HTML report for certain hours in the week. Works similar to: 02 Time Series Display Configuration (tableBackgroundColors)

...

The following classes are generated automatically and are added after the tableStyleX in which X stand for an integer in the range 1 to 10.

class

description

specific for

_beforeT0

date/time indication before time zero (TO) of the forecast

time column (most left column)

_firstAfterT0

date/time indication of the first occurrence after time zero (T0) of the forecast

time column (most left column)

_afterT0

date/time indication after time zero (TO) of the forecast

time column (most left column)

_data

default indication of data content of a cell

data cells

_anyString

user defined cellFormat

data cells

_datamax

addition to current style if value is maximum of that series (_data_datamax or _anyString_datamax)

data cells

_leftcol

default indication of a row header

 


_header

default indication of a column header

 


_threshold_n

indication of threshold level (n=0,1,2,...)

threshold tables (colouring of backgrounds)

countTables

thresholdsCrossingsTable
Anchor
thresholdsCrossingsTable
thresholdsCrossingsTable

Info

Notice: the thresholdCrossingsCountTable (see further below) is a newer version of this type of table

 


A thresholdCrossingsTable is a table in which the number of thresholds for each level are counted. The number given in the table suggests with the 'worst' case situation. When a timeseries crosses a number of thresholds in a forecast, only the 'worst' threshold crossings are counted. An example of a thresholdsCrossingsTable is given below.

...

Since this type of table is a table in which you can aggregate data (which means combine timeseries) the following option is available: mergeLocations.

thresholdCrossingCountsTable
Anchor
thresholdCrossingCountsTable
thresholdCrossingCountsTable

A thresholdCrossingsCountsTable displays threshold crossing counts depending on which thresholds have been crossed within a given time period. The thresholdCrossingCountsTable is a new version of the thresholdsCrossingsTable. A thresholdCrossingCountsTable has the same layout as a thresholdCrossingCountsTab in the thresholdOverviewDisplay for consistency.

...

  • id: identifier for the template tag (in this case: $TABLE(table1)$);
  • formatId: reference to the format of this table (to one of the thresholdCrossingCountsTableFormats in the declarations section);
  • mergeLocations: boolean indicator. True means: treat all locations of mentioned timeseries together for combined assessment. False means: extract individual timeseries so that every row indicates one location (timeseries);
  • Choice between
    o timeSeries;
    o table; --> this can be used to display a table within another one.
    o tableRow

flagCountsTable
Anchor
flagCountsTable
flagCountsTable

FlagCountsTable is available since Delft-FEWS release 2011.01. A FlagCountsTable displays flag counts depending on the flags of the values in a time series within a given time period.

...

Code Block
xml
xml
<flagCountsTable id="flagCountsTable" formatId="flagCountsTableFormat">
	<inputVariableId>Cowbeech</inputVariableId>
	<inputVariableId>Romsey</inputVariableId>
	<inputVariableId>CrosslandsDrive</inputVariableId>
</flagCountsTable>

flagSourceCountsTable
Anchor
flagSourceCountsTable
flagSourceCountsTable

FlagSourceCountsTable is available since Delft-FEWS release 2011.01. A FlagSourceCountsTable displays counts of flag sources depending on the flag sources of the values in a time series within a given time period. The flag source for a value contains the reason why that value got a certain flag. For example if a value was rejected by a "hard max" validation rule, then it gets flag unreliable and flag source "hard max".

...

Code Block
xml
xml
<flagSourceCountsTable id="flagSourceCountsTable1" formatId="flagSourceCountsTableFormat">
	<inputVariableId>Cowbeech</inputVariableId>
</flagSourceCountsTable>

maximumStatusTable
Anchor
maximumStatusTable
maximumStatusTable

A maximumStatusTable indicates, by colouring, when certain threshold levels are crossed. In this type of table, the rows should be defined individually and can contain more than one series. The boolean value 'mergLocation' plays an important role in combining the locations or treat them individually.

...

Info
titleRelativeViewPeriod

The maximumstatusTable was developed with the focus on the status of forecasted timeseries. When using the table to show the status in the past (eg to what extent timeseries are available), it is necessary to place the T0 in the past, at the beginning of the period to be displayed. This is contradictory to normal practice.

 


Detailed Explanation: Two tables into one

...

Source: 12 hrs of 15min data
Display: maximumStatus with 15 minute data, time header by the hour (with minutes)
Configuration

 


value

explanation

timeStepsInTable

48

(12*4=48 timesteps)

timeStepsAggregation

1

each column represent 1 timestep

timeHeaderInterval

4

4 columns have a merged header (hour)

timeHeaderDisplayMinutes

true

minute indication

Result: table with 48 time columns with 12 aggregated headers visualising the hour with a minute indication (like in first figure of this section)

Source: 6 hrs of 15min data
Display: maximumStatus with hourly data (no minute indication)
Configuration

...


value

explanation

timeStepsInTable

24

(6*4=24 timesteps)

timeStepsAggregation

4

4*15min aggregate to 1 hour

timeHeaderInterval

1

each hour 'column' has its own header

timeHeaderDisplayMinutes

false

no minute indication in header

Result: table with 6 (time) columns indicating the 'worst' status of that hour.

...

In a configuration the following timeSeries/InputVariables exist:

Name

Parameter

LocationSet

Locations

Catchment1_Waterlevel_Obs

H.obs

Catchment1_Locs

Loc1
Loc2
Loc3

Catchment1_Waterlevel_For

H.simulated

Catchment1_Locs

Loc1
Loc2
Loc3

Catchment2_Waterlevel_Obs

H.obs

Catchment2_Locs

Loc4
Loc5
Loc6

Catchment2_Waterlevel_For

H.simulated

Catchment2_Locs

Loc4
Loc5
Loc6

The geographical hierarchy is that Area 1 contains 2 Catchments (Catchment1 and Catchment2)

...

For the two tables for which this is valid, the last example does not give much additional value for a thresholdsCrossingsTable. Then each row (which is equal to one locatation) will have a '1' in one of the cells. A maximumStatusTable supplies more value because it will indicate when this (maximum) threshold will be reached.
See below mentioned (simplified) figures.

mergedPrecipitationTable
Anchor
mergedPrecipitationTable
mergedPrecipitationTable

A mergedPrecipitationTable contains both observed rainfall as well as forecast rainfall, preferably in P.merged timeseries. Data can be visualised in configurable time intervals compared to T0 and will appear in separate columns. Additionally, a single column can be added to visualise any parameter (e.g. CWI). An example can be found below (without extra column). In the example below, actually two tables are plotted next to each other. The left table (with names) contains the historical date. The one on the right hand side contains the forecast timeseries and has no name column. A table like this has two header rows to be defined by the user.

...

  • id: identifier (reference to the template tag)
  • formatId: reference to the format of this table (to one of the mergedPrecipitationTables in the declarations section);
  • table:
    • id: identifier (used for comments only)
    • formatId: reference to the format of this table (to one of the mergedPrecipitationTables in the declarations section)
    • timeSeries: reference to an inputVariable.

SystemStatusTables
Anchor
SystemStatusTables
SystemStatusTables

SystemStatusTables display information about the status and behaviour of the FEWS system itself (like in the System monitor).

...

  • tableStyle: a choice of tableStyle which can be influenced by using the corresponding classes in a cascading style sheet. Choices are tableStyle1 to tableStyle10;
  • id: unique identifier (as reference to this table);
  • statusTableSubType: Choice for one of the subtypes of systemStatusTables: Choices are: liveSystemStatus, exportStatus, importStatus, scheduledWorkflowStatus, completedWorkflowStatus, currentForecastStatus, logMessageListing, forecastHistory;
  • tableTitle: a text for a title for this table;
  • headerRows: integer value for the number of header rows;
  • itemHeader: header text for the 'Item' column;
  • benchmarkHeader: header text for the 'Benchmark' column;
  • statusHeader: header text for the 'Status' column;
  • statusHeaderSplit: value indicating the number of header rows in the status column.
  • extraOutputFieldHeader: Additional Field definition specifically for import related topics. Recommended fields are:
    • Last file imported
    • Nr. of files read
    • Nr. of files failed
  • showOutputFieldsOnly: boolean value for displaying the outputfields only.

Remark: when defining extraOutputFieldHeaders it is important to maintain the same order in the declarations sections (definition of the fields) and in the report section (referencing the content) otherwise the header and the content will not correspond.

Report Section


Figure 117 Example of the configuration of an importStatus table in the report section

...

Since this table is not referring to a benchmark (it is just reading the configuration) the value for showOutputFieldsOnly is set to true. Only these fields are displayed.

remark: One reference to an existing workflow is sufficient to extract all scheduled workflows out of the database, that's why it seems that there is only one table row configured here. In fact, this table will be filled with ALL scheduled workflows when configured as above.

Report Section


Figure 120 Example of the configuration of a scheduledWorkflowStatus table in the report section

...

The example generated xml file was generated using the following configuration:the following configuration:

Code Block
languagexml
titleExample config for forecastThresholdCrossingXml
<report>
   <inputVariable variableId="forecast_series">
      ...
   </inputVariable>
   <inputVariable variableId="ensemble_series">
      ...
   </inputVariable>
Code Block
languagexml
titleExample config for forecastThresholdCrossingXml
<report>
   <inputVariable variableId="forecastlevel_series">
      ...
   </inputVariable>
   <forecastThresholdCrossingXml fileName="threshold-crossing.xml" locationNameAttribute="REPORT_NAME" externalLocationIdAttribute="EXTERNAL_ID">
      <forecastThresholdCrossingXmlTemplate>ForecastThresholdCrossing_template.xml</forecastThresholdCrossingXmlTemplate>
      <forecastEnsembleTimeSeries>ensemble_series</forecastEnsembleTimeSeries>
      <forecastScenarios>
         <forecastTimeSeries id="1" name="Forecast Policy" numberFormatId="numberFormatId">forecast_series</forecastTimeSeries>
      </inputVariable>forecastScenarios>
   <inputVariable variableId="ensemble_series">   <exceedance>
      ...
   <<numberFormatId>numberFormatId</inputVariable>numberFormatId>
      <inputVariable variableId="level_series">   <minEnsembleMembers>5</minEnsembleMembers>
      ...
   </inputVariable><belowMinimumLabel>&lt;10%</belowMinimumLabel>
   <forecastThresholdCrossingXml fileName="threshold-crossing.xml" locationNameAttribute="REPORT_NAME" externalLocationIdAttribute="EXTERNAL_ID">
      <earliestExceedanceTimeStep unit="hour" multiplier="1"/>
        <forecastThresholdCrossingXmlTemplate>ForecastThresholdCrossing_template.xml</forecastThresholdCrossingXmlTemplate> <scenarios>
      <forecastEnsembleTimeSeries>ensemble_series</forecastEnsembleTimeSeries>
       <forecastScenarios><earliest name="earliest"/>
         <forecastTimeSeries id   <percentile name="125%">25</percentile>
            <percentile name="Forecast50% Policy" numberFormatId="numberFormatId">forecast_series</forecastTimeSeries>
(most likely)">50</percentile>
       </forecastScenarios>
      <percentileScenarios><percentile name="75%">75</percentile>
         <percentile   <latest name="90% likelylatest">90</percentile>>
         <percentile name="75% likely">75</percentile></scenarios>
      </percentileScenarios>exceedance>
      <currentLevelTimeSeries numberFormatId="numberFormatId">level_series</currentLevelTimeSeries>
      <floodClasses>
         <default>less-than-minor</default>
         <floodClass thresholdId="levelThreshold1">minor</floodClass>
         <floodClass thresholdId="levelThreshold2">moderate</floodClass>
         <floodClass thresholdId="levelThreshold3">major</floodClass>
      </floodClasses>
      <additionalThresholds>
         <thresholdId>levelThreshold3</thresholdId>
         <thresholdId>levelThreshold4</thresholdId>
         <thresholdId>levelThreshold4</thresholdId>
      </additionalThresholds>
      <siteFigures>
         <siteFigure>
            <id>1</id>
            <name>@NAME@Forecast1</name>
            <fileName>@NAME@-forecast-1.png</fileName>
            <type>png</type>
            <alternativeText>Graphical forecast for @NAME@</alternativeText>
            <viewPort left="0" top="0" width="800" height="600"/>
         </siteFigure>
         <siteFigure>
            <id>2</id>
            <name>@NAME@Forecast2</name>
            <fileName>@NAME@-forecast-2.png</fileName>
            <type>png</type>
            <alternativeText>Graphical forecast for @NAME@</alternativeText>
            <viewPort left="100" top="100" width="900" height="700"/>
         </siteFigure>
      </siteFigures>
   </forecastThresholdCrossingXml>
   <template>ForecastThresholdCrossing_template.xml</template> <!-- irrelevant, the report module will use the <forecastThresholdCrossingXmlTemplate> element to determine the template -->
   <outputSubDir>thresholdcrossing</outputSubDir>
   <outputFileName>crossingTest.html</outputFileName> <!-- irrelevant, the report module will use the "filename" attribute of the <forecastThresholdCrossingXml> element </siteFigure>
to determine the output file  </siteFigures>
   </forecastThresholdCrossingXml>
   <template>ForecastThresholdCrossing_template.xml</template> <!-- irrelevant, the report module will use the <forecastThresholdCrossingXmlTemplate> element to determine the template -->
   <outputSubDir>thresholdcrossing</outputSubDir>
   <outputFileName>crossingTest.html</outputFileName> <!-- irrelevant, the report module will use the "filename" attribute of the <forecastThresholdCrossingXml> element to determine the output file name -->
</report>

The ForecastThresholdCrossing_template.xml can contain normal report tags which will be replaced as usual. This report type also allows several report specific tags:

  • %GENERATION_TIME% : The system time at the moment the report is generated.
  • %FORECAST_START_TIME% : the t0 with which the report is generated.
  • %NEXT_GENERATION_TIME% : if the workflow in which the report is generated is a scheduled task, the next time at which this task will run is reported. Otherwise: "N/A".
  • %PREVIOUS_GENERATION_TIME% : if the workflow in which the report is generated has been run before, the last time at which the workflow was run is reported. Otherwise: "N/A"
  • %ENSEMBLE% : this tag will be replaced with the <ensemble> element and all of its sub-elements as described below.

The forecastThresholdCrossingXml report type generates an <ensemble> element for the given ensemble input time series. This ensemble element will first contain a number of <scenario> elements equal to the number of forecast scenario time series specified in the configuration. The id and name attributes of each of these <scenario> elements will match the configured id and name for the <forecastTimeSeries> in the configuration. After the <scenario> elements, there will be a <sites> element in which for each location in the given ensemble time series, the current level (taken from the level time series), figures (determined using the <siteFigures> in the configuration) and threshold crossings for each of the scenarios (both the configured forecast and percentile scenarios) will be reported. The thresholds which are to be included in the report are all the thresholds named in the <floodClasses> element as well as the thresholds configured in the <additionalThresholds> element.

With each value reported for the forecast scenario time series as well as the level time series, the report will also contain a "flood-class". This flood class is determined using the <floodClasses> configured. The flood class corresponding to a value is the highest of the configured flood class thresholds which is exceeded by the value, or the configured default flood class if none of the thresholds is exceeded.

name -->
</report>

The ForecastThresholdCrossing_template.xml can contain normal report tags which will be replaced as usual. This report type also allows several report specific tags:

  • %GENERATION_TIME% : The system time at the moment the report is generated.
  • %FORECAST_START_TIME% : the t0 with which the report is generated.
  • %NEXT_GENERATION_TIME% : if the workflow in which the report is generated is a scheduled task, the next time at which this task will run is reported. Otherwise: "N/A".
  • %PREVIOUS_GENERATION_TIME% : if the workflow in which the report is generated has been run before, the last time at which the workflow was run is reported. Otherwise: "N/A"
  • %ENSEMBLE% : this tag will be replaced with the <ensemble> element and all of its sub-elements as described below.

The forecastThresholdCrossingXml report type generates an <ensemble> element for the given ensemble input time series. This ensemble element will first contain a number of <scenario> elements equal to the number of forecast scenario time series specified in the configuration. The id and name attributes of each of these <scenario> elements will match the configured id and name for the <forecastTimeSeries> in the configuration. After the <scenario> elements, there will be a <sites> element in which for each location in the given ensemble time series, the current level (taken from the level time series), figures (determined using the <siteFigures> in the configuration) and threshold crossings for each of the scenarios (configured in the <exceedance> element) will be reported. The thresholds which are to be included in the report are all the thresholds named in the <floodClasses> element as well as the thresholds configured in the <additionalThresholds> element.

With each value reported for the forecast scenario time series as well as the level time series, the report will also contain a "flood-class". This flood class is determined using the <floodClasses> configured. The flood class corresponding to a value is the highest of the configured flood class thresholds which is exceeded by the value, or the configured default flood class if none of the thresholds is exceeded.

For each of the sites, the number of ensemble members which cross a threshold is calculated. This is reported as the "exceedance" in the generated report: the percentage of ensemble members which crossed the threshold. This percentage will be formatted using the number format reference by <numberFormatId> if configured. If at least one but less than the configured <minEnsembleMembers> cross the threshold, and there is a <belowMinimumLabel> configured, than the <belowMinimumLabel> will be reported as the "exceedance" instead. In this example "<10%".

If more than the configured <minEnsembleMembers> cross the threshold, the earliest exceedance times for each of the configured <scenario> elements is reported. To obtain these times, only the ensemble members that cross the threshold are taken into account. The times at which these members first cross the threshold are determined and ordered from earliest to latest. For an <earliest> scenario the first time at which an ensemble member crosses the threshold is reported. For a <latest> scenario, the last time is reported. For the configured <percentile> scenarios, the x-th percentile is taken from the ordered list of crossing times. If the percentile would "fall between two values in the list" their weighted average is taken. If an <earliestExceedanceTimeStep> is configured, each of the reported earliest exceedance times is changed to the closest time in the configured For each of the configured <percentileScenarios> a percentile time series will be calculated. For example for a percentile of 90, FEWS will calculate the (100 - 90) = 10th percentile value for the ensemble time series for each time step (the value for which 90% of ensembles have a higher value) to obtain a "90% likely" time series. The generated report file will then include whether this calculated percentile time series exceeded each of the thresholds and if so, the earliest exceedance time step.

floodScenarioXml

...

Since 2013_01 it is possible to create reports of Schematic Status Display panels in the form of animations in the formats Avi and animated gif as well as snapshots in the form of Png files and Svg files.
For this purpose there will probably already be some Schematic Status Display configuration in the DisplayConfigFiles of the configuration. In order to create a report of a Schematic Status Display panel, most elements of this configuration can be copied manually to the reports configuration file. For configuring a Schematic Status Display panel please refer to Schematic Status Display configuration.

An example Schematic Status Display that contains the following configuration,

...

Code Block
xml
xml
<reports xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews httphttps://fewsfewsdocs.wldelftdeltares.nl/schemas/version1.0/reports.xsd" version="1.0">
<declarations>
	<defineGlobal id="ForecastingRegion">IWP-Twentekanalen</defineGlobal>
	<dateFormat id="DF1">
		<timeZone>
			<timeZoneName>CET</timeZoneName>
		</timeZone>
		<pattern>dd-MM-yyyy</pattern>
	</dateFormat>
	<numberFormat id="NF1">{0,number,##0.00}</numberFormat>
		...
</declarations>
<report>
...
// Add Ssd report elements here for generating Avi, Gif, Png or Svg.
...
</report>
</reports>

...

With this function one or more svg images can be generated of a single Schematic Status Display panel. Use id $SSD_SVG(myId)$ for including the svg files in the reports.
The interactive parts of the Schematic Status Display such as Left Single Click Action and Left Double Click Action that can be configured when the Schematic Status Display is run in Delft-FEWS are not supported when exported as .svg report and it is recommended to remove these interactive sections where appropriate.

schematicStatusDisplayPanelSnapshotsSvg

Image Removed

recommended to remove these interactive sections where appropriate.

schematicStatusDisplayPanelSnapshotsSvg

Image Added

 


Code Block
xml
xml
	<schematicStatusDisplayPanelSnapshotsSvg>
		<scadaPanel id="TK" name="Twentekanalen  10 min">
....
		</scadaPanel >
		<width>1024</width>
		<height>800</height>
		<snapshot id="ssd1">
			<relativeTime unit="hour" value="-4"/>
			<fileName>SSD_test4.svg</fileName>
		</snapshot>
		<snapshot id="ssd2">
			<relativeTime unit="hour" value="-3"/>
			<fileName>SSD_test5.svg</fileName>
		</snapshot>
	</schematicStatusDisplayPanelSnapshotsSvg>

 

From the FEWS version  2018.02 it is possible to configure filename prefix and suffix for schematicStatusDisplayPanelSnapshotsPng and schematicStatusDisplayPanelSnapshotsSvg reports.

If fileNamePrefix is configured it will add the system time date to the beggining of file name in the configured format. If fileNameSuffix is configured it will add the system time date to end of the file name in the configured format.


Code Block
xml
xml
<snapshot id="SchematicStatusSnapshot">
   <relativeTime unit="day" value="0"/>
   <fileName>scada.png</fileName>
   
   <fileNamePrefix>
              <timeZeroFormattingString>yyyy_</timeZeroFormattingString>
   </fileNamePrefix>
       
   <fileNameSuffix>
              <timeZeroFormattingString>MMDDHHmm</timeZeroFormattingString>
   </fileNameSuffix>   
</snapshot>
Code Block
xmlxml
	<schematicStatusDisplayPanelSnapshotsSvg>
		<scadaPanel id="TK" name="Twentekanalen  10 min">
....
		</scadaPanel >
		<width>1024</width>
		<height>800</height>
		<snapshot id="ssd1">
			<relativeTime unit="hour" value="-4"/>
			<fileName>SSD_test4.svg</fileName>
		</snapshot>
		<snapshot id="ssd2">
			<relativeTime unit="hour" value="-3"/>
			<fileName>SSD_test5.svg</fileName>
		</snapshot>
	</schematicStatusDisplayPanelSnapshotsSvg>

Save