Summary
This example performes import and visualization of TUDelft disdrometer data (http://www.disdrometrics.com/). TUDelft disdrometer data delivers rain in mm and dropsize distribution (-, number of drops per class). For more info: n:\Projects\1201500\1201946\E. Correspondence\Memo\1201946-033-VEB-0001-v0.1-m-SUW - Smart Urban Water.docx
Description
Within the Smart Urban Water project, part of the European project "Climate KIC"“Climate KIC”, rainfall and dropsize distribution data from the TUDelft disdrometer had been imported and visualized in Delft-FEWS. Import format is WaterML 2.0.
The used procedure can be useful for import of other sources of rain data including dropsize distribution or more in general for other data with information of internal classes' classes’ distribution.
Configuration Steps for the import of WaterML 2.0 rain and dropsize distribution data
Rain data (mm) and number of drops per class (-) can be imported each as independent timeserie with the import waterml time series parser. For more information on WaterML 2.0 import configuration and for downloading the xml parser see page WaterML2Import
In XML it will look like this:
<import>
<general>
...
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <timeSeriesImportRun 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/timeSeriesImportRun.xsd"> <!--This imports TUDelft disdro data in WaterML format from an import folder --> <import> <general> <!-- Class name of WaterML time series parser --> |
...
<parserClassName>nl.wldelft.waterml.timeseriesparsers.WaterMlTimeSeriesParser</parserClassName> |
...
<!-- Path to directory containing libraries --> |
...
<binDir>%REGION_HOME%/Modules/waterml-bin</binDir> |
...
<!-- Directory from which CSV files are to be imported --> |
...
<folder>$IMPORT_FOLDER_WATERML$</folder> |
...
<failedFolder>$IMPORT_FAIL_WATERML$</failedFolder> |
...
<backupFolder>$IMPORT_BACKUP_WATERML$</backupFolder> |
...
<idMapId>IdImportTUDelft</idMapId> |
...
</general> |
...
<timeSeriesSet>
...
<timeSeriesSet> <moduleInstanceId>ImportTUDelft</moduleInstanceId> |
...
<valueType>scalar</valueType> |
...
<parameterId>P.TUDelft.hist</parameterId> |
...
<qualifierId>Rain_Data</qualifierId> |
...
<locationId>TUCampus</locationId> |
...
<timeSeriesType>external historical</timeSeriesType> |
...
<timeStep unit="minute" multiplier="5"/> |
...
<readWriteMode>add originals</readWriteMode> |
...
<synchLevel>1</synchLevel> |
...
</timeSeriesSet> |
...
<timeSeriesSet>
...
<timeSeriesSet> <moduleInstanceId>ImportTUDelft</moduleInstanceId> |
...
<valueType>scalar</valueType> |
...
<parameterId>n.Drops</parameterId> |
...
<qualifierId>Class1</qualifierId>
<locationId>TUCampus</locationId>
<timeSeriesType>external historical</timeSeriesType>
...
<qualifierId>Class1</qualifierId> <locationId>TUCampus</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="minute" multiplier="5"/> <readWriteMode>add originals</readWriteMode> <synchLevel>1</synchLevel> </timeSeriesSet> <timeSeriesSet> <moduleInstanceId>ImportTUDelft</moduleInstanceId> <valueType>scalar</valueType> <parameterId>n.Drops</parameterId> <qualifierId>Class2</qualifierId> <locationId>TUCampus</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="minute" multiplier="5"/> |
...
<readWriteMode>add originals</readWriteMode> |
...
<synchLevel>1</synchLevel> |
...
</timeSeriesSet> |
...
- import all the other classes -
</import>
</timeSeriesImportRun>
|
Because of practical reasons only two classes are imported in the above example. As many classes as needed can be imported.</import>
It is important to keep in mind the following correspondence in WaterML 2.0 (import file) and FEWS tags:
WaterML 2.0 | Delft-FEWS |
featureofInterest | LocationId |
observedProperty | parameter |
procedure | qualifierId |
Configuration Steps for the visualization of WaterML 2.0 rain and dropsize distribution data
Dropsize distribution (in % per class) can then visualized per timestep as 100% stacked plot, together with rain using the stackPlot="true" option in the DisplayGroups file. Because of practical reasons only two classes are displayed, in the example. As many classes as imported can be displayed in the stacked plot.
In XML it will look like this:
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <!-- Mit XMLSpy v2010 rel. 2 (x64) (http://www.altova.com) von Hydrotec Hydrotec (Hydrotec Ingenieurgesellschaft für) bearbeitet --> <displayGroups 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/displayGroups.xsd" version="1.0"> <plot id="DropsizeDistribution"> |
...
<axisTitleFontSize>12</axisTitleFontSize> |
...
<tickLabelFontSize>12</tickLabelFontSize> |
...
<subplot min="0" max="1.2" stackPlot="true"> |
...
<color>yellow</color> |
...
<lineStyle>bar</lineStyle> |
...
<timeSeriesSet>
...
<timeSeriesSet> <moduleInstanceId>PreprocessTUDelft</moduleInstanceId> |
...
<valueType>scalar</valueType> |
...
<parameterId>%n.Drops</parameterId> |
...
<qualifierId>Class1</qualifierId> |
...
<locationId>TUCampus</locationId> |
...
<timeSeriesType>external historical</timeSeriesType> |
...
<timeStep unit="minute" multiplier="5"/> |
...
<readWriteMode>add originals</readWriteMode> |
...
<synchLevel>1</synchLevel> |
...
</timeSeriesSet> |
...
<color>orange</color> |
...
<lineStyle>bar</lineStyle> |
...
<timeSeriesSet>
...
<timeSeriesSet> <moduleInstanceId>PreprocessTUDelft</moduleInstanceId> |
...
<valueType>scalar</valueType> |
...
<parameterId>%n.Drops</parameterId> |
...
<qualifierId>Class2</qualifierId> |
...
<locationId>TUCampus</locationId> |
...
<timeSeriesType>external historical</timeSeriesType> |
...
<timeStep unit="minute" multiplier="5"/> |
...
<readWriteMode>add originals</readWriteMode> |
...
<synchLevel>1</synchLevel> |
...
</timeSeriesSet>
<color>red</color>
<lineStyle>bar</lineStyle>
<timeSeriesSet>
<moduleInstanceId>PreprocessTUDelft</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>%n.Drops</parameterId>
<qualifierId>Class3</qualifierId>
<locationId>TUCampus</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="minute" multiplier="5"/>
<readWriteMode>add originals</readWriteMode>
<synchLevel>1</synchLevel>
</timeSeriesSet>
- insert all the other classes -
...
</timeSeriesSet> </subplot> <subplot min="0" max="1.2" stackPlot="false"> |
...
<color>blue</color> |
...
<lineStyle>bar</lineStyle> |
...
<timeSeriesSet>
...
<timeSeriesSet> <moduleInstanceId>ImportTUDelft</moduleInstanceId> |
...
<valueType>scalar</valueType> |
...
<parameterId>P.TUDelft.hist</parameterId> |
...
<qualifierId>Rain_Data</qualifierId> |
...
<locationId>TUCampus</locationId> |
...
<timeSeriesType>external historical</timeSeriesType> |
...
<timeStep unit="minute" multiplier="5"/> |
...
<readWriteMode>add originals</readWriteMode> |
...
<synchLevel>1</synchLevel> |
...
</timeSeriesSet> |
...
</subplot> |
...
</plot> |
...
<displayGroup name="TUDelft - Dropsize distrubution"> |
...
<display name="TUDelft - Dropsize distrubution"> |
...
<relativeViewPeriod unit="day" start="-5" end="0"/> |
...
<locationId>TUCampus</locationId> |
...
<plotId>DropsizeDistribution</plotId> |
...
</display> |
...
</displayGroup> </displayGroups> |