You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Water ML 2.0 import

This is an import that makes use of the custom import mechanism described in [Custom time series import]. The WaterML2 import consists of a server parser, WaterML2Parser.java, and a bin directory containing all dependant library files.

The WaterML standard is under review to be adopted as an OGC standard. The specifications of the WaterML standard can be found here

This import make use of a Request - Response mechanism. First FEWS makes an XML request file and sends this to the WaterML2 server. Depending on the request a XML Response file is returned containing the timeseries information.

TimeSeries XML Request format

Here is an example of an XML request file:

 <?xml version="1.0" ?>
<sos:GetObservation version="2.0.0" service="SOS"
    maxFeatures="3"
    xmlns:sos="http://schemas.opengis.net/sos/2.0.0/"
    xmlns:wfs="http://www.opengis.net/wfs"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:gml="http://www.opengis.net/gml/3.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:om="http://www.opengis.net/om/2.0"
    xmlns:fes="http://www.opengis.net/fes/2.0"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xsi:schemaLocation="http://www.opengis.net/sos/2.0 http://schemas.opengis.net/sos/2.0.0/sos.xsd">
    <sos:featureOfInterest>01446500</sos:featureOfInterest>
    <sos:observedProperty>Discharge</sos:observedProperty>
    <sos:temporalFilter>
        <fes:ValueReference>phenomenonTime</fes:ValueReference>
        <gml:TimeInstant gml:id='beginPosition'>
            <gml:timePosition>2012-01-11</gml:timePosition>
        </gml:TimeInstant>
        <gml:TimeInstant gml:id='endPosition'>
            <gml:timePosition>2012-01-18</gml:timePosition>
        </gml:TimeInstant>
    </sos:temporalFilter>
</sos:GetObservation>

TimeSeries XML Response format

Here is an example of an XML response file:

 <wml2:Collection gml:id="deterministic_forecast_TAPM4_20100506T00Z">
    <gml:description>Example of a Hydrologic Forecast timeseries
    </gml:description>
    <wml2:metadata>
        <wml2:DocumentMetadata gml:id="doc_d">
            <wml2:generationDate>2011-09-21T16:46:00+10:00</wml2:generationDate>
            <wml2:version xlink:href="http://www.opengis.net/waterml/2.0"/>
        </wml2:DocumentMetadata>
    </wml2:metadata>
    <wml2:observationMember>
        <om:OM_Observation gml:id="series_one">
            <om:phenomenonTime>
                <gml:TimePeriod gml:id="forecast_period">
                    <gml:beginPosition>2010-05-03T12:00:00Z</gml:beginPosition>
                    <gml:endPosition>2010-05-16T12:00:00Z</gml:endPosition>
                </gml:TimePeriod>
            </om:phenomenonTime>
            <om:resultTime>
                <gml:TimeInstant gml:id="forecast_available">
                    <gml:timePosition>2010-05-06T05:00:00Z</gml:timePosition>
                </gml:TimeInstant>
            </om:resultTime>
            <!-- Valid time is not required if you don't know how long the forecast is available. Often
          will be valid until next forecast
          is availble. -->
            <om:validTime>
                <gml:TimePeriod gml:id="available_period">
                    <gml:beginPosition>2011-09-21T16:46:00+10:00</gml:beginPosition>
                    <gml:endPosition>2011-09-29T16:46:00+10:00</gml:endPosition>
                </gml:TimePeriod>
            </om:validTime>
            <om:procedure xlink:href="NCRFC:MinnesotaRiver_Forecast"
                          xlink:title="NCRFC:MinnesotaRiver_Forecast"
                          xlink:arcrole="http://www.opengis.net/def/processType/WaterML/2.0/Simulation"/>
            <om:parameter>
                <om:NamedValue>
                    <om:name xlink:title="T0 (Time of analysis)" xlink:role="analysisTime"/>
                    <om:value xsi:type="gml:TimePositionType">2010-05-06T00:00:00+00:00</om:value>
                </om:NamedValue>
            </om:parameter>
            <om:parameter>
                <om:NamedValue>
                    <om:name xlink:title="Init time of model" xlink:role="initTime"/>
                    <om:value xsi:type="gml:TimePositionType">2010-05-03T12:00:00+00:00</om:value>
                </om:NamedValue>
            </om:parameter>
            <om:observedProperty xlink:href="http://sweet.jpl.nasa.gov/2.3/phenHydro.owl#Discharge"
                                 xlink:title="streamflow"/>
            <om:featureOfInterest xlink:href="http://www.nws.noaa.gov/hb5id/TAPM4" xlink:title="Paradise
110
12W, MN"/>
            <om:result>
                <wml2:MeasurementTimeseries gml:id="ts_one">
                    <wml2:temporalExtent>
                        <gml:TimePeriod gml:id="fc_1">
                            <gml:beginPosition>2010-05-06T00:00:00+00:00</gml:beginPosition>
                            <gml:endPosition>2010-05-16T12:00:00+00:00</gml:endPosition>
                        </gml:TimePeriod>
                    </wml2:temporalExtent>
                    <wml2:metadata>
                        <wml2:MeasurementTimeseriesMetadata>
                            <wml2:baseTime>2010-05-06T00:00:00+00:00</wml2:baseTime>
                            <wml2:spacing>PT6H</wml2:spacing>
                        </wml2:MeasurementTimeseriesMetadata>
                    </wml2:metadata>
                    <wml2:defaultPointMetadata>
                        <wml2:DefaultTVPMeasurementMetadata>
                            <wml2:qualifier xlink:href="http://www.example.com/hydro/forecasts/status/approved"
                                            xlink:title="Approved and issued"/>
                            <wml2:uom uom="ft"/>
                            <wml2:interpolationType
                                    xlink:href="http://www.opengis.net/def/timeseriesType/WaterML/2.0/continuous"
                                    xlink:title="Instantaneous"/>
                        </wml2:DefaultTVPMeasurementMetadata>
                    </wml2:defaultPointMetadata>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value>21.7</wml2:value>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value>21.7</wml2:value>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value xsi:nil="true"/>
                            <wml2:metadata>
                                <wml2:TVPMeasurementMetadata>
                                    <wml2:nilReason xlink:href="http://www.opengis.net/def/nil/OGC/0/missing"
                                                    xlink:title="missing"/>
                                </wml2:TVPMeasurementMetadata>
                            </wml2:metadata>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value>21.8</wml2:value>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value>22.0</wml2:value>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                    <wml2:point>
                        <wml2:MeasurementTVP>
                            <wml2:value>22.6</wml2:value>
                        </wml2:MeasurementTVP>
                    </wml2:point>
                </wml2:MeasurementTimeseries>
            </om:result>
        </om:OM_Observation>
    </wml2:observationMember>
</wml2:Collection>

Fews configuration

In order to activate the WaterML import as a FEWS import, it is required to setup a TimeSeriesImportRun module configuration file and an accompanying IdMap file. Also the bin directory containing all WaterML resources must be placed in a location that can be accessed by the FEWS system.

Here is an example import module configuration file:

 <?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 is an example import configuration file for importing WaterML data from a WaterMl server    -->
    <import>
        <general>
           <!-- Class name of WaterML server parser -->
            <parserClassName>nl.deltares.webapps.waterml.client.WaterML2Parser</parserClassName>

            <!-- Path to directory containing libraries -->
            <binDir>%REGION_HOME%/Modules/waterml2-bin</binDir>

            <!-- Directory from which CSV files are to be imported -->
            <serverUrl>http://nwisvaws02.er.usgs.gov/ogc-swie/dv/sos</serverUrl>
            <idMapId>IdImportWaterML</idMapId>
            <importTimeZone>
                <timeZoneOffset>+00:00</timeZoneOffset>
            </importTimeZone>
        </general>
        <timeSeriesSet>
            <moduleInstanceId>ImportWaterML</moduleInstanceId>
            <valueType>scalar</valueType>
            <parameterId>MyPar</parameterId>
            <locationSetId>MyLocSet</locationSetId>
            <timeSeriesType>external historical</timeSeriesType>
            <timeStep unit="nonequidistant"/>
            <readWriteMode>add originals</readWriteMode>
            <synchLevel>1</synchLevel>
        </timeSeriesSet>
    </import>
</timeSeriesImportRun>

Here is an example id-map file:

<?xml version="1.0" encoding="UTF-8"?>
<idMap 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/idMap.xsd" version="1.1">
    <!--    parameter: FEWS parameter
            external: External Offering
    -->
    <parameter internal="QIN" external="Discharge" externalQualifier="UNIT"/>
    <location internal="ODAW3" external="04027000"/>
</idMap>

Id-Mapping goes as follows:

Internal timeseries location and parameter combinations are mapped to external location, parameter and qualifier sets as follows:

  • externalLocation values are written as Feature Id
  • externalParameter values are written as ObservedProperty
  • 1st externalQualifier values are written as Offering
  • No labels