For multivariate threshold crossings a transformation is used to combine the multiple input time series to 1 output time series which is connected to thresholds.
For each line in the threshold crossing matrix on top of the page a rule should be defined, specifying which and how many input time series should have a value higher than a certain boundary.
Each rule has a rule outcome which will be the value written to the output time series. Those output values should be connected to a threshold value in the threshold value sets.
The <inputVariableAttributeId> specifies which input variable is used to find the input time series and <inputLocationSetIdAttributeId> specifies which locations within the variable should be used.
The <lowerBoundAttributeId> specifies the trigger for the input time series in order to apply to to rule. This is a choice, it is also possible to configure
<inputLocationLowerBoundReferringAttributeId> which refers to separate attibute id's of the input locations, this way each input location can have a different lower bound value.
The <numberOfTimeSeriesWithinBoundariesAttributeId> specifies how many of the time series need to have their trigger crossed in order for the rule to apply.
<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2007 sp2 (http://www.altova.com) by WL | Delft Hydraulics (WL | Delft Hydraulics) --> <transformationModule version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.wldelft.nl/fews" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/transformationModule.xsd"> <variable> <variableId>ForecastRain</variableId> <timeSeriesSet> <moduleInstanceId>ImportMultiVariateInput</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.radar.forecast</parameterId> <locationSetId>MultiVarHyFSInput</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-12" end="0"/> <readWriteMode>editing visible to all future task runs</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>ObservedRain</variableId> <timeSeriesSet> <moduleInstanceId>ImportMultiVariateInput</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.obs</parameterId> <locationSetId>MultiVarHyFSInput</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-12" end="0"/> <readWriteMode>editing visible to all future task runs</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>ObservedFlooding</variableId> <timeSeriesSet> <moduleInstanceId>ImportMultiVariateInput</moduleInstanceId> <valueType>scalar</valueType> <parameterId>H.obs</parameterId> <locationSetId>MultiVarHyFSInput</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-12" end="0"/> <readWriteMode>editing visible to all future task runs</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>output</variableId> <timeSeriesSet> <moduleInstanceId>MultiVariateThresholdsTransformation</moduleInstanceId> <valueType>scalar</valueType> <parameterId>H.sim</parameterId> <locationId>MultiVarHyFSOutput1</locationId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-12" end="0"/> <readWriteMode>editing visible to all future task runs</readWriteMode> </timeSeriesSet> </variable> <transformation id="MultiVariateHyFS"> <multipleLocationAttributes> <inputLocationSetsBasedMultivariateThresholds> <ruleAttributeId>ruleId</ruleAttributeId> <inputVariableAttributeId>variable</inputVariableAttributeId> <inputLocationSetIdAttributeId>inputLocationSetId</inputLocationSetIdAttributeId> <lowerBoundAttributeId>lowerBound</lowerBoundAttributeId> <numberOfTimeSeriesWithinBoundariesAttributeId>numberOfTimeSeries</numberOfTimeSeriesWithinBoundariesAttributeId> <ruleOutcomeAttributeId>ruleOutcome</ruleOutcomeAttributeId> <outputVariable> <variableId>output</variableId> </outputVariable> </inputLocationSetsBasedMultivariateThresholds> </multipleLocationAttributes> </transformation> </transformationModule> |
When a rule is a combination of multiple input variable like forecastRain and observedWaterlevel multiple lines a csv file will make up 1 rule, as can be seen in rule5, rule6 and rule8
MultiVariateThresholdsAttributesHyFS.csv
id | variable | inputLocationSetId | ruleId | lowerBound | ruleOutcome | numberOfTimeSeries | lowerBoundInclusive | severity | certainty | instruction | responseType | urgency | headline |
OutputLoc | ForecastRain | InputLocSet | rule0 | -999 | -1 | 1 | FALSE | ||||||
OutputLoc | ForecastRain | InputLocSet | rule1 | 10 | 1 | 2 | FALSE | minor | possible | Monitor the situation as Minor Flooding is possible | Assess | Future | Minor Flooding is possible in Coffs Creek |
OutputLoc | ObservedRain | InputLocSet | rule2 | 10 | 2 | 2 | FALSE | minor | likely | Assess your surroundings | Avoid | Expected | Minor Flooding is possible in Coffs Creek |
OutputLoc | ObservedFlooding | InputLocSet | rule3 | 10 | 3 | 2 | FALSE | minor | observed | Avoid Flood waters | Prepare | Immediate | Minor Flooding has been observed in Coffs Creek |
OutputLoc | ForecastRain | InputLocSet | rule4 | 20 | 4 | 2 | FALSE | severe | possible | Prepare for Major Flooding | Prepare | Future | Major Flooding is possible in Coffs Creek |
OutputLoc | ForecastRain | InputLocSet | rule5 | 20 | 5 | 2 | FALSE | severe | possible | Prepare for Major Flooding | Prepare | Future | Major Flooding is possible and Minor Flooding is likely in Coffs Creek |
OutputLoc | ObservedRain | InputLocSet | rule5 | 10 | 5 | 2 | FALSE | severe | possible | Prepare for Major Flooding | Prepare | Future | Major Flooding is possible and Minor Flooding is likely in Coffs Creek |
OutputLoc | ForecastRain | InputLocSet | rule6 | 20 | 6 | 2 | FALSE | severe | possible | Prepare for Major Flooding | Evacuate | Future | Major Flooding is possible and Minor Flooding has been observed in Coffs Creek |
OutputLoc | ObservedFlooding | InputLocSet | rule6 | 10 | 6 | 2 | FALSE | severe | possible | Prepare for Major Flooding | Evacuate | Future | Major Flooding is possible and Minor Flooding has been observed in Coffs Creek |
OutputLoc | ObservedRain | InputLocSet | rule7 | 20 | 7 | 2 | FALSE | severe | likely | Evacuate to higher ground | Evacuate | Expected | Major Flooding is likely in Coffs Creek |
OutputLoc | ObservedRain | InputLocSet | rule8 | 20 | 8 | 2 | FALSE | severe | likely | Evacuate to higher ground | Evacuate | Expected | Major Flooding is likely and Minor Flooding has been observed in Coffs Creek |
OutputLoc | ObservedFlooding | InputLocSet | rule8 | 10 | 8 | 2 | FALSE | severe | likely | Evacuate to higher ground | Evacuate | Expected | Major Flooding is likely and Minor Flooding has been observed in Coffs Creek |
OutputLoc | ObservedFlooding | InputLocSet | rule9 | 20 | 9 | 2 | FALSE | severe | observed | Shelter in place | Shelter | Immediate | Major Flooding has been observed in Coffs Creek |
<locationSet id="MultiVariateThresholdsHyFS"> <csvFile> <file>MultiVariateThresholdsHyFS.csv</file> <id>%id%</id> <x>%x%</x> <y>%y%</y> <attributeFile> <csvFile>MultiVariateThresholdsAttributesHyFS.csv</csvFile> <id>%id%</id> <attribute id="inputLocationSetId"> <text>%inputLocationSetId%</text> </attribute> <attribute id="variable"> <text>%variable%</text> </attribute> <attribute id="ruleId"> <text>%ruleId%</text> </attribute> <attribute id="lowerBound"> <number>%lowerBound%</number> </attribute> <attribute id="lowerBoundInclusive"> <boolean>%lowerBoundInclusive%</boolean> </attribute> <attribute id="upperBound"> <number>%upperBound%</number> </attribute> <attribute id="upperBoundInclusive"> <boolean>%upperBoundInclusive%</boolean> </attribute> <attribute id="ruleOutcome"> <number>%ruleOutcome%</number> </attribute> <attribute id="numberOfTimeSeries"> <number>%numberOfTimeSeries%</number> </attribute> <attribute id="severity"> <text>%severity%</text> </attribute> <attribute id="certainty"> <text>%certainty%</text> </attribute> <attribute id="instruction"> <text>%instruction%</text> </attribute> <attribute id="responseType"> <text>%responseType%</text> </attribute> <attribute id="urgency"> <text>%urgency%</text> </attribute> <attribute id="headline"> <text>%headline%</text> </attribute> </attributeFile> </csvFile> </locationSet> <locationSet id="MultiVarHyFSInput"> <locationSetId>MultiVariateThresholdsHyFS</locationSetId> <constraints> <idContains contains="MultiVarHyFSInput"/> </constraints> </locationSet> |
<thresholdValueSet id="MultiVariateThresholdsSet" name="MultiVariateThresholdsSet"> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>1</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>2</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>3</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> <downActionLogEventTypeId>Action.StandDown</downActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>4</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>5</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>6</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> <downActionLogEventTypeId>Action.StandDown</downActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>7</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>8</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> <downActionLogEventTypeId>Action.StandDown</downActionLogEventTypeId> </levelThresholdValue> <levelThresholdValue> <levelThresholdId>EnhanceLevel</levelThresholdId> <value>9</value> <upActionLogEventTypeId>Action.Enhanced</upActionLogEventTypeId> <downActionLogEventTypeId>Action.StandDown</downActionLogEventTypeId> </levelThresholdValue> <timeSeriesSet> <moduleInstanceId>MultiVariateThresholdsTransformation</moduleInstanceId> <valueType>scalar</valueType> <parameterId>H.sim</parameterId> <locationId>MultiVarHyFSOutput1</locationId> <timeSeriesType>simulated forecasting</timeSeriesType> <timeStep unit="day"/> <relativeViewPeriod unit="day" start="-12" end="0"/> <readWriteMode>editing visible to all future task runs</readWriteMode> </timeSeriesSet> </thresholdValueSet> |
<thresholdExport 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/thresholdExport.xsd"> <export> <exportTypeStandard>CAP-AU</exportTypeStandard> <folder>$EXPORT_FOLDER_ROOT$</folder> <exportFileName> <name>_RiverAlert_CAP_%LOCATION_ID%_%THRESHOLD_ID%.xml</name> <prefix> <timeZeroFormattingString>yyyyMMddHHmm</timeZeroFormattingString> </prefix> </exportFileName> <eventCodePattern>Action.Enhanced</eventCodePattern> <eventCodePattern>Action.StandDown</eventCodePattern> <templateFile>Threshold_Export_Template</templateFile> <dateFormat id="DF1"> <timeZone> <timeZoneName>GMT</timeZoneName> </timeZone> <dateTimePattern>yyyy-MM-dd'T'HH:mm:ss+00:00</dateTimePattern> </dateFormat> <dateFormat id="DF2"> <timeZone> <timeZoneName>ACST</timeZoneName> </timeZone> <dateTimePattern>dd-MM-yyyy</dateTimePattern> </dateFormat> <numberFormat id="NF1"> <pattern>{0,number,##0.0}</pattern> </numberFormat> <thresholdHistorySearchTimeSpan unit="day" multiplier="7"/> <eventExpiryTime unit="day" multiplier="15"/> <identifier>AusBoM-PRODUCT_ID-%LOCATION_ID%-%EXPORT_TIME(DF1)%</identifier> <sender>CAP.Message@bom.gov.au</sender> <mapThreshold thresholdId="EnhanceLevel" value="Moderate"/> <matchingValueAttributeId>ruleOutcome</matchingValueAttributeId> <severityAttributeId>severity</severityAttributeId> <certaintyAttributeId>certainty</certaintyAttributeId> <instructionAttributeId>instruction</instructionAttributeId> <responseTypeAttributeId>responseType</responseTypeAttributeId> <urgencyAttributeId>urgency</urgencyAttributeId> <headlineAttributeId>headline</headlineAttributeId> <descriptionAttributeId>description</descriptionAttributeId> </export> </thresholdExport> |
<?xml version="1.0" encoding="UTF-8"?> <alert xmlns="urn:oasis:names:tc:emergency:cap:1.2"> <identifier>%IDENTIFIER%</identifier> <sender>%SENDER%</sender> <sent>%EXPORT_TIME(DF1)%</sent> <status>Actual</status> <msgType>%MESSAGE_TYPE%</msgType> <source>STATE, STATE_AGENCY</source> <scope>EVENT_SCOPE</scope> <code>urn:oasis:names:tc:emergency:cap:1.2:profile:CAP-AU:1.0</code> %ALERT_HISTORY(DF1)% <info> <language>en-AU</language> <category>EVENT_CAT</category> <event>EVENT_EVENT</event> <urgency>%URGENCY%</urgency> <severity>%SEVERITY%</severity> <certainty>%CERTAINTY%</certainty> <eventCode> <valueName>https://govshare.gov.au/xmlui/handle/10772/6495</valueName> <value>EVENT_VALUE</value> </eventCode> <expires>%EXPIRY_TIME(DF1)%</expires> <senderName>Australian Government Bureau of Meteorology</senderName> <headline>%RESPONSE_TYPE% %HEADLINE%</headline> <description>%DESCRIPTION%</description> <contact>http://www.bom.gov.au/inside/contacts.shtml</contact> <area> <areaDesc>%LOCATION_NAME% (RIVER_NAME) - STATE</areaDesc> <circle>%Y%,%X% 1</circle> <geocode> <valueName>http://www.iso.org/iso/country_codes.html</valueName> <value>AU-STATE</value> </geocode> </area> </info> </alert> |