Page tree
Skip to end of metadata
Go to start of metadata

Function:

Qualifiers to parameters

Where to Use?

Time series

Why to Use?

To reduce the number of parameters

Description:

Gives a qualifier to a parameter, like "minimum" of "observed"

Available since:

DelftFEWS200803

Contents

Overview

To be able to give additional information to a parameter without creating lots of extra parameters, we introduced the feature of qualifiers. Qualifiers are used to define a unique time series, next to the locationId and parameterId. Examples are series where you want to derive the daily minimum, maximum and mean values of an observed series of water levels. The original series is a regular series with parameterId "H" and no qualifier, where the other series have  the same parameterId "H", but qualifiers like "min", "mean" and "max".

Configuration

Qualifier definition

Qualifiers are defined in the regionConfigFiles directory. When available on the file system, the name of the XML file is for example:

Qualifiers 1.00 default.xml

 An example looks like:

<?xml version="1.0" encoding="UTF-8"?>
<qualifiers 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/qualifiers.xsd">
  <qualifier id="min" name="min">
    <description>minimum</description>
  </qualifier>
  <qualifier id="max" name="max">
    <description>maximum</description>
  </qualifier>
</qualifiers>

Qualifiers can also be defined by referring to a csv file in the configuration. For that the <file> and <id> are required. By using %% can be referred to the content of columns in the csv file. So the next example below the columns "qualifierId" and "qualifierName" determine the id and name of all qualifiers present in the csv file. The columns can be used multiple times also in combination with other text as is done for the definition of the attribute "ExternalQualifierId" which will start with "LNG_KLAS_" for all qualifiers followed by the content in the "qualifierId" column. The <group> elements determines to which group of qualifiers a qualifier belongs, this is used to determine whether timeseries can be summed. Time series with different qualifiers of the same group can be summed.

<?xml version="1.0" encoding="UTF-8"?>
<qualifiers 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/qualifiers.xsd">
	<csvFile>
		<file>vissen_lengteklasse.csv</file>
		<id>%qualifierId%</id>
		<name>%qualifierName%</name>
		<group>Vissen lengteklasse</group>
		<attribute id="ExternalQualifierId">
			<text>LNG_KLAS_%qualifierId%</text>
		</attribute>
	</csvFile>
</qualifiers>

Csv file "vissen_lengteklasse.csv" (located in MaplayerFiles config directory):

qualifierId;qualifierName
VL-0;klasse 0
VL-1;klasse 1
VL-2;klasse 2
VL-3;klasse 3
VL-4;klasse 4
VLSK-1;klasse 1 (SK)
VLSK-2;klasse 2 (SK)
VLSK-3;klasse 3 (SK)
VLSK-4;klasse 4 (SK)
VLSK-5;klasse 5 (SK)

Time Series

The most useful way is first to read all locations from the DBF into one locationSet, where all attributes are assigned.
See for example:

    <timeSeriesSet>
      <moduleInstanceId>ImportCAW</moduleInstanceId>
      <valueType>scalar</valueType>
      <parameterId>H.meting</parameterId>
      <qualifierId>min</qualifierId>
      <locationSetId>Boezem_Poldergemaal_H.meting</locationSetId>
      <timeSeriesType>external historical</timeSeriesType>
      <timeStep unit="nonequidistant"/>
      <relativeViewPeriod unit="day" start="-6000" end="0"/>
      <readWriteMode>editing visible to all future task runs</readWriteMode>
      <synchLevel>5</synchLevel>
    </timeSeriesSet>

Qualifier Panel (since 2014.02)

The qualifier panel can be explicitly turned on or of in the Explorer.xml by the element <qualifierListSize> within <panelSizes> element. It is turned off when specifying 0 and turned on with a value above 0.

Explorer.xml
	<panelSizes>
		<loggingPanelSize>0</loggingPanelSize>
		<listsPanelSize>20</listsPanelSize>
		<filterListSize>20</filterListSize>
		<locationListSize>45</locationListSize>
		<parameterListSize>25</parameterListSize>
		<qualifierListSize>0</qualifierListSize>
		<forecastListSize>0</forecastListSize>
	</panelSizes>

When <qualifierListSize> is not present the qualfier panel will be visible within FEWS when there are filters based on constraints that contain qualifiers configured such as in the example Filters.xml below.

Filters.xml
<?xml version="1.0" encoding="UTF-8"?>
<filters version="1.1" 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/filters.xsd">
	<defaultFilterId>River</defaultFilterId>
	<!--Observed data Filters-->
	<filter id="River">
		<mapExtentId>River</mapExtentId>
		<child foreignKey="Rain_Gauges"/>
		<child foreignKey="Qualifiers"/>
	</filter>
	<filter id="Rain_Gauges" name="Rain Gauges">
		<timeSeriesSet>
			<moduleInstanceId>NWP_Grid_To_SubCatchments</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>P.nwp.fcst</parameterId>
			<qualifierId>ACCESS_R</qualifierId>
			<locationSetId>Gauges_P.obs.All</locationSetId>
			<timeSeriesType>external forecasting</timeSeriesType>
			<timeStep unit="hour"/>
			<readWriteMode>read complete forecast</readWriteMode>
		</timeSeriesSet>
		<timeSeriesSet>
			<moduleInstanceId>NWP_Grid_To_SubCatchments</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>P.nwp.fcst</parameterId>
			<qualifierId>ACCESS_A</qualifierId>
			<locationSetId>Gauges_P.obs.All</locationSetId>
			<timeSeriesType>external forecasting</timeSeriesType>
			<timeStep unit="hour"/>
			<readWriteMode>read complete forecast</readWriteMode>
		</timeSeriesSet>
	</filter>
	<filter id="Qualifiers" name="Qualifiers">
		<relativeViewPeriod start="-100000" end="0" unit="day"/>
		<qualifierConstraints>
			<idStartsWith prefix="ACCESS_"/>
		</qualifierConstraints>
	</filter>
</filters>

From build 55796 the qualifier panel also works for filters based on a combination of timeSeriesSets and qualifierConstraints like specified below:

<?xml version="1.0" encoding="UTF-8"?>
<filters version="1.1" 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/filters.xsd">
	<timeSeriesSets id="timeSeriesSetsX">
		<timeSeriesSet>
			<moduleInstanceId>Process</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>P.norm</parameterId>
			<qualifierId>qualifierX</qualifierId>
			<locationId>NROER09</locationId>
			<timeSeriesType>external historical</timeSeriesType>
			<timeStep unit="day"/>
			<readWriteMode>read only</readWriteMode>
			<synchLevel>1</synchLevel>
		</timeSeriesSet>
		<timeSeriesSet>
			<moduleInstanceId>Process</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>P.norm</parameterId>
			<qualifierId>qualifierY</qualifierId>
			<locationId>NROER09</locationId>
			<timeSeriesType>external historical</timeSeriesType>
			<timeStep unit="day"/>
			<readWriteMode>read only</readWriteMode>
			<synchLevel>1</synchLevel>
		</timeSeriesSet>
	</timeSeriesSets>
	<filter id="Filter_For_Qualifier_Panel" name="Filter for qualifier panel">
		<timeSeriesSetsId>timeSeriesSetsX</timeSeriesSetsId>
		<qualifierConstraints>
			<idStartsWith prefix=""/>
		</qualifierConstraints>
	</filter>
</filters>

 

By selecting filter "Rain_Gauges" from example above the qualifiers panel will be visible because there are filters based on qualifier constraints defined, but it is empty because the selected filter is not based on qualifier constraints:

By selecting filter "Qualifiers" the qualifier panel will be filled with the qualifiers matching the constraint (they must also be avilable within the data viewer selection and within the data present at system time)

The title of the qualifier panel can be configured in Explorer.xml by <qualifierPanelHeader> (from 2015.02):

	<panelHeaderLabels>
		<filterPanelHeader>Filters</filterPanelHeader>
		<locationPanelHeader>Locations</locationPanelHeader>
		<parameterPanelHeader>Parameters</parameterPanelHeader>
		<qualifierPanelHeader>Qualifiers</qualifierPanelHeader>
		<forecastPanelHeader>Open Forecasts</forecastPanelHeader>
	</panelHeaderLabels>

Qualifier Tree

A qualifier tree can also be configured in Qualifiers.xml by defining a qualifierRootNode that contains other qualifier nodes that in their turn can be nested.

For qualifier nodes constraints can be defined to make a selection of which qualifiers it should contain. Qualifiers can match multiple sets of contraints which makes it possible for qualifiers to appear under multiple different nodes at the same time.

For example

  • the qualifier node "Alle taxa" will contain all qualifiers that have the attribute "Qualifier_TAXA".
  • the qualifier node "ALGAE" will contain only qualifiers that have a text attribute "Type" equal to "MACFT" and a text attribute "Groep" equal to "ALGAE"
  • the qualifier node "Macrofyten" does not have constraints itself but will contain only other qualifier nodes that have a constaint on qualifier attribute "Type" to be equal to "MACFT"
	<qualifierRootNode id="Hydrobiologie">
		<qualifierNode id="Taxa">
				...
			<qualifierNode id="Alle taxa">
				<constraints>
					<attributeExists id="Qualifier_TAXA"/>
				</constraints>
			</qualifierNode>
				...
			<qualifierNode id="Macrofyten">
				<qualifierNode id="ALGAE">
					<constraints>
						<attributeTextEquals id="Type" equals="MACFT"/>
						<attributeTextEquals id="Groep" equals="ALGAE"/>
					</constraints>
				</qualifierNode>
				<qualifierNode id="ANGIO">
					<constraints>
						<attributeTextEquals id="Type" equals="MACFT"/>
						<attributeTextEquals id="Groep" equals="ANGIO"/>
					</constraints>
				</qualifierNode>
				<qualifierNode id="SPORO">
					<constraints>
						<attributeTextEquals id="Type" equals="MACFT"/>
						<attributeTextEquals id="Groep" equals="SPORO"/>
					</constraints>
				</qualifierNode>
			</qualifierNode>
				...
	</qualifierRootNode>

Qualifier nodes for which there is no data will not be shown so in a FEWS system with only data for time series with qualifiers that have a "Groep" attribute of "ANGIO", "Type" attribute of "MACFT" and a "Qualifier_TAXA" attribute present the tree configured above would look like:

Qualifier nodes that contain only 1 qualifier for which there is data will also not be shown since it is not distinguishable. 

	<qualifierRootNode id="Hydrobiologie">
				...
		<qualifierNode id="Analyse code">
				...
			<qualifierId>MEA</qualifierId>
			<qualifierId>PTB</qualifierId>
			<qualifierId>SRA</qualifierId>
				...
		</qualifierNode>
		<qualifierNode id="Compartiment">
			<qualifierId>OR</qualifierId>
			<qualifierId>OW</qualifierId>
			<qualifierId>VE</qualifierId>
		</qualifierNode>
				...
	</qualifierRootNode>

For instance the qualifier nodes "Analyse code" and "Compartiment" from the configuration above will not be shown in the tree because all data just has "PTB" and "OW" (shown as "Opp. Water") as qualifiers:

 

Change qualifier labels

When using the (right click) context menu in the qualifier tree it is possible to change the labels of the qualifiers by making a selection of the attributes.

A label picker window will pop up where all attributes of the qualifiers can be selected. Multiple can be selected in any order, if a qualifier does not have that attribute defined it is skipped, when multiple a chosen all beyond the first will be surrounded by brackets. The qualifiers will be order alphabetically on their complete label.

After picking new labels the qualifier tree has to be rebuild and it will reopen the tree at the last part of the tree that was clicked.

Selections

Before the label all qualifiers have a checkbox which indicates whether they should be taken into account for time series selection. In the next example for each selected qualifier one time series is found so they wil appear in the time series display.

Selecting multiple qualifiers within a groups results in selecting more time series:

But selecting qualifiers over different groups results in selecting less time series:

The icon of a qualifier node indicates what kind of time series selection should be made. The folder icon as shown in the picture above means show all time series separate.

The icon can be clicked to change to a summation icon which mean a total should be calculated of the selected time series with qualifiers belonging to the same group:

  • No labels