Versions Compared

Key

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

...

The idea behind it is that if the majority of the input is doubtful, the output should be doubtful and if the majority of the input is missing/unreliable the output should be unreliablemissing.

Splitting into quartiles turned out to be most intuitive, distinctive and least complex.

The outputCustomFlagSourceId follows the naming convention of the amount of doubtful and missing/unreliable quartiles. For example “d3u1” stands for 75% doubtful and 25% missing/unreliable. This way the reason for the quality flag is easy to understand when shown in FEWS.

Code Block
languagexml
titleConditional Aggregation used at Dutch Waterboard HDSR
<?xml version="1.0" encoding="UTF-8"?>
<transformation id="DebietBerekeningDag">
	<aggregation>
		<accumulative>
			<inputVariable>
				<timeSeriesSet>
					<moduleInstanceId>DebietBerekening</moduleInstanceId>
					<valueType>scalar</valueType>
					<parameterId>Q.berekend.15min</parameterId>
					<locationSetId>HHNK_TMX_debiet</locationSetId>
					<timeSeriesType>external historical</timeSeriesType>
					<timeStep unit="minute" multiplier="15"/>
					<relativeViewPeriod unit="day" start="-300" end="0"/>
					<readWriteMode>read only</readWriteMode>
					<synchLevel>1</synchLevel>
				</timeSeriesSet>
			</inputVariable>
			<validationRule>
				<inputDoubtfulPercentage>0</inputDoubtfulPercentage>
				<inputMissingPercentage>0</inputMissingPercentage>
				<outputValueFlag>reliable</outputValueFlag>
				<outputCustomFlagSourceId>d0u0</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>25</inputDoubtfulPercentage>
				<inputMissingPercentage>0</inputMissingPercentage>
				<outputValueFlag>reliable</outputValueFlag>
				<outputCustomFlagSourceId>d1u0</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>50</inputDoubtfulPercentage>
				<inputMissingPercentage>0</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d2u0</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>75</inputDoubtfulPercentage>
				<inputMissingPercentage>0</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d3u0</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>100</inputDoubtfulPercentage>
				<inputMissingPercentage>0</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d4u0</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>25</inputDoubtfulPercentage>
				<inputMissingPercentage>25</inputMissingPercentage>
				<outputValueFlag>reliable</outputValueFlag>
				<outputCustomFlagSourceId>d0u1</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>50</inputDoubtfulPercentage>
				<inputMissingPercentage>25</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d1u1</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>75</inputDoubtfulPercentage>
				<inputMissingPercentage>25</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d2u1</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>100</inputDoubtfulPercentage>
				<inputMissingPercentage>25</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d3u1</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>50</inputDoubtfulPercentage>
				<inputMissingPercentage>50</inputMissingPercentage>
				<outputValueFlag>doubtful</outputValueFlag>
				<outputCustomFlagSourceId>d0u2</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>75</inputDoubtfulPercentage>
				<inputMissingPercentage>50</inputMissingPercentage>
				<outputValueFlag>missing</outputValueFlag>
				<outputCustomFlagSourceId>d1u2</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>100</inputDoubtfulPercentage>
				<inputMissingPercentage>50</inputMissingPercentage>
				<outputValueFlag>missing</outputValueFlag>
				<outputCustomFlagSourceId>d2u2</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>75</inputDoubtfulPercentage>
				<inputMissingPercentage>75</inputMissingPercentage>
				<outputValueFlag>missing</outputValueFlag>
				<outputCustomFlagSourceId>d0u3</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>100</inputDoubtfulPercentage>
				<inputMissingPercentage>75</inputMissingPercentage>
				<outputValueFlag>missing</outputValueFlag>
				<outputCustomFlagSourceId>d1u3</outputCustomFlagSourceId>
			</validationRule>
			<validationRule>
				<inputDoubtfulPercentage>100</inputDoubtfulPercentage>
				<inputMissingPercentage>100</inputMissingPercentage>
				<outputValueFlag>missing</outputValueFlag>
				<outputCustomFlagSourceId>d0u4</outputCustomFlagSourceId>
			</validationRule>
			<outputVariable>
				<timeSeriesSet>
					<moduleInstanceId>DebietBerekening</moduleInstanceId>
					<valueType>scalar</valueType>
					<parameterId>Q.berekend.15min</parameterId>
					<locationSetId>HHNK_TMX_debiet</locationSetId>
					<timeSeriesType>external historical</timeSeriesType>
					<timeStep unit="minute" multiplier="15"/>
					<relativeViewPeriod unit="day" start="-300" end="0"/>
					<readWriteMode>read only</readWriteMode>
					<synchLevel>1</synchLevel>
				</timeSeriesSet>
			</outputVariable>
		</accumulative>
	</aggregation>
</transformation>

...