...
DAC installation guide (final).doc
Table of Contents |
---|
Introduction
The Tomcat WaterML2 service is hosted in a Tomcat service container. This service allows REST clients to interact with a WaterML2 service that is connected to a FEWS system through the FEWS DataAccessComponent. With this API the REST client can retrieve data from the FEWS system. Before a client application can access the FEWS system there is some configuration work that needs to be done.
...
WaterML2 Service API
Get Capabilities request
Code Block |
---|
http://localhost:8081/WaterMlService/waterml?request=GetCapabilities |
The GetCapabilities request returns a document describing the operations supported by this webservice.
Get Capabilities response
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?> <sos:Capabilities xmlns:sos="http://www.opengis.net/sos/2.0" xmlns:oost="http://www.oostethys.org/schemas/0.1.0/oostethys" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:swe="http://www.opengis.net/swe/1.0.1" xmlns:ogc="http://www.opengis.net/ogc" xsi:schemaLocation="http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/2.0.0/sosGetCapabilities.xsd" version="2.0.0"> <ows:ServiceIdentification> <ows:Title></ows:Title> <ows:ServiceType>OGC:SOS</ows:ServiceType> <ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion> <ows:Fees>None</ows:Fees> <ows:AccessConstraints>None</ows:AccessConstraints> </ows:ServiceIdentification> <ows:ServiceProvider> <ows:ProviderName></ows:ProviderName> <ows:ProviderSite xlink:href=""/> <ows:ServiceContact> <ows:IndividualName></ows:IndividualName> <ContactInfo> <ows:Address> <ows:DeliveryPoint></ows:DeliveryPoint> <ows:City></ows:City> <ows:PostalCode></ows:PostalCode> <ows:Country></ows:Country> <ows:ElectronicMailAddress></ows:ElectronicMailAddress> </ows:Address> </ContactInfo> </ows:ServiceContact> </ows:ServiceProvider> <ows:OperationsMetadata> <ows:Operation name="GetCapabilities"> <ows:DCP> <ows:HTTP> <ows:Get xlink:href="http://localhost:8081/WaterMlService/waterml?request=GetCapabilities"/> </ows:HTTP> </ows:DCP> <ows:Parameter name="service"> <ows:AllowedValues> <ows:Value>SOS</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="version"> <ows:AllowedValues> <ows:Value>1.0.0</ows:Value> </ows:AllowedValues> </ows:Parameter> </ows:Operation> <ows:Operation name="GetFeature"> <ows:DCP> <ows:HTTP> <ows:Get xlink:href="http://localhost:8081/WaterMlService/waterml?request=GetFeature"/> </ows:HTTP> </ows:DCP> <ows:Parameter name="service"> <ows:AllowedValues> <ows:Value>SOS</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="version"> <ows:AllowedValues> <ows:Value>1.0.0</ows:Value> </ows:AllowedValues> </ows:Parameter> </ows:Operation> <ows:Operation name="GetObservation"> <ows:DCP> <ows:HTTP> <ows:Get xlink:href="http://localhost:8081/WaterMlService/waterml?request=GetObservation"/> <ows:Post xlink:href="http://localhost:8081/WaterMlService/waterml?request=GetObservation"/> </ows:HTTP> </ows:DCP> <ows:Parameter name="service"> <ows:AllowedValues> <ows:Value>SOS</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="version"> <ows:AllowedValues> <ows:Value>1.0.0</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="request"> <ows:AllowedValues> <ows:Value>GetObservation</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="featureId"> <ows:AllowedValues> <ows:Value>0</ows:Value> <ows:Value>1</ows:Value> <ows:Value>2</ows:Value> <ows:Value>3</ows:Value> <ows:Value>4</ows:Value> <ows:Value>5</ows:Value> <ows:Value>6</ows:Value> <ows:Value>7</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="observedProperty"> <ows:AllowedValues> <ows:Value>Parameter</ows:Value> <ows:Value>T.for</ows:Value> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="beginPosition"> <ows:AllowedValues> <ows:AnyValue/> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="endPosition"> <ows:AllowedValues> <ows:AnyValue/> </ows:AllowedValues> </ows:Parameter> <ows:Parameter name="analysisTime"> <ows:AllowedValues> <ows:AnyValue/> </ows:AllowedValues> </ows:Parameter> </ows:Operation> </ows:OperationsMetadata> </sos:Capabilities> |
Get Feature request
Code Block |
---|
http://localhost:8081/WaterMlService/waterml?request=GetFeature |
The GetFeature request returns a document containing a list of feature members supported by the webservice. A feature member corresponds to what is know in FEWS as Location.
Get Feature response
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?> <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gsml="urn:cgi:xmlns:CGI:GeoSciML:2.0" xmlns:om="http://www.opengis.net/om/2.0" xmlns:sa="http://www.opengis.net/sampling/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wml2="http://www.opengis.net/waterml/2.0" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:sf="http://www.opengis.net/sampling/2.0" xmlns:sams="http://www.opengis.net/samplingSpatial/2.0" xsi:schemaLocation="http://www.opengis.net/om/2.0 ../observation.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.opengis.net/sampling/2.0 ../samplingFeature.xsd http://www.opengis.net/waterml/2.0 ../waterml2.xsd http://www.opengis.net/swe/2.0 http://schemas.opengis.net/sweCommon/2.0/swe.xsd"> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="0"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>0</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="0"> <gml:pos srcName="Rijks Driehoekstelsel">53.64671168116518 5.175518773508316</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="1"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>1</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="1"> <gml:pos srcName="Rijks Driehoekstelsel">53.3835058954904 4.560651062185197</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="2"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>2</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="2"> <gml:pos srcName="Rijks Driehoekstelsel">52.48257667744973 4.283120419290973</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="3"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>3</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="3"> <gml:pos srcName="Rijks Driehoekstelsel">51.493692036021535 3.0541898956873954</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="4"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>4</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="4"> <gml:pos srcName="Rijks Driehoekstelsel">50.99065599128154 3.0796721627765615</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="5"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>5</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="5"> <gml:pos srcName="Rijks Driehoekstelsel">51.01107956492021 4.6177610376887515</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="6"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>6</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="6"> <gml:pos srcName="Rijks Driehoekstelsel">50.59113044096123 5.4719202115344</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> <wfs:member> <om:featureOfInterest> <wml2:WaterMonitoringPoint gml:id="7"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>7</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="7"> <gml:pos srcName="Rijks Driehoekstelsel">50.58761564487022 6.290845285636415</gml:pos> </gml:Point> </sams:shape> </wml2:WaterMonitoringPoint> </om:featureOfInterest> </wfs:member> </wfs:FeatureCollection> |
Get Observations Request
The GetObservations call supports two types of requests:
...
Code Block | ||
---|---|---|
| ||
<?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>0</sos:featureOfInterest> <sos:observedProperty>T.for</sos:observedProperty> <sos:temporalFilter> <fes:During> <fes:ValueReference>phenomenonTime</fes:ValueReference> <gml:TimePeriod gml:id="tp_1"> <gml:beginPosition>2013-02-15T01:00:00.000+01:00</gml:beginPosition> <gml:endPosition>2013-03-01T01:00:00.000+01:00</gml:endPosition> </gml:TimePeriod> </fes:During> </sos:temporalFilter> <sos:temporalFilter> <fes:TEquals> <fes:ValueReference>analysisTime</fes:ValueReference> <gml:TimeInstant gml:id="ti_2"> <gml:timePosition>2013-03-02T00:00:00.000+01:00</gml:timePosition> </gml:TimeInstant> </fes:TEquals> </sos:temporalFilter> </sos:GetObservation> |
Get Observations Response
Code Block |
---|
<wml2:Collection xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:wml2="http://www.opengis.net/waterml/2.0" xmlns:om="http://www.opengis.net/om/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sf="http://www.opengis.net/sampling/2.0" xmlns:sams="http://www.opengis.net/samplingSpatial/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/waterml/2.0 ../waterml2.xsd"> <gml:description>0</gml:description> <wml2:metadata> <wml2:DocumentMetadata gml:id="WaterMlServletResponse_WaterMlServlet"> <wml2:generationDate>2015-03-16T17:40:35+01:00</wml2:generationDate> </wml2:DocumentMetadata> </wml2:metadata> <wml2:observationMember> <om:OM_Observation gml:id="timeseries_0"> <om:phenomenonTime> <gml:TimePeriod gml:id="series_period"> <gml:beginPosition>2013-02-20T00:00:00+01:00</gml:beginPosition> <gml:endPosition>2013-03-01T01:00:00+01:00</gml:endPosition> </gml:TimePeriod> </om:phenomenonTime> <om:resultTime> <gml:TimeInstant gml:id="series_available"> <gml:timePosition>2015-03-16T17:40:35+01:00</gml:timePosition> </gml:TimeInstant> </om:resultTime> <om:parameter> <om:NamedValue> <om:name xlink:title="T0 (Time of analysis)" xlink:role="analysisTime"/> <om:value xsi:type="gml:TimePositionType">2013-03-02T00:00:00+01:00</om:value> </om:NamedValue> </om:parameter> <om:observedProperty xlink:href="http://nl.wldelft.waterml/parameters/T.for" xlink:title="Temperature forecast"/> <om:featureOfInterest> <wml2:MonitoringPoint gml:id="0"> <sf:parameter> <om:NamedValue> <om:name xlink:title="Location name"/> <om:value>0</om:value> </om:NamedValue> </sf:parameter> <sams:shape> <gml:Point gml:id="0"> <gml:pos srcName="Rijks Driehoekstelsel">141000.0 629000.0</gml:pos> </gml:Point> </sams:shape> <wml2:timeZone> <wml2:TimeZone> <wml2:zoneOffset>+1</wml2:zoneOffset> <wml2:zoneAbbreviation>GMT</wml2:zoneAbbreviation> </wml2:TimeZone> </wml2:timeZone> </wml2:MonitoringPoint> </om:featureOfInterest> <om:result> <wml2:MeasurementTimeseries gml:id="timeseries_0"> <wml2:temporalExtent> <gml:TimePeriod gml:id="timeseries_period_0"> <gml:beginPosition>2013-02-20T00:00:00+01:00</gml:beginPosition> <gml:endPosition>2013-03-01T01:00:00+01:00</gml:endPosition> </gml:TimePeriod> </wml2:temporalExtent> <wml2:defaultPointMetadata> <wml2:DefaultTVPMeasurementMetadata> <wml2:uom uom="C"/> <wml2:interpolationType xlink:href="http://www.opengis.net/def/waterml/2.0/interpolationType/Discontinuous" xlink:title="Discontinuous"/> </wml2:DefaultTVPMeasurementMetadata> </wml2:defaultPointMetadata> <wml2:point> <wml2:MeasurementTVP> <wml2:time>2013-02-20T00:00:00+01:00</wml2:time> <wml2:value>0.37933815</wml2:value> </wml2:MeasurementTVP> </wml2:point> <!-- ... skipped some values --> <wml2:point> <wml2:MeasurementTVP> <wml2:time>2013-02-28T22:59:59+01:00</wml2:time> <wml2:value>-0.38247958</wml2:value> </wml2:MeasurementTVP> </wml2:point> <wml2:point> <wml2:MeasurementTVP> <wml2:time>2013-03-01T00:00:00+01:00</wml2:time> <wml2:value>-0.23891993</wml2:value> </wml2:MeasurementTVP> </wml2:point> <wml2:point> <wml2:MeasurementTVP> <wml2:time>2013-03-01T01:00:00+01:00</wml2:time> <wml2:value>0.086797565</wml2:value> </wml2:MeasurementTVP> </wml2:point> </wml2:MeasurementTimeseries> </om:result> </om:OM_Observation> </wml2:observationMember> </wml2:Collection> |
Installing a WaterML2 Service
The file DAC installation guide (final).doc describes how to install a Tomcat instance containing a DataAccessComponent instance. Once these steps are completed the WaterMlService.WAR can be deployed using a context xml file such as WaterMLService.xml
Configuration
The are two levels of configuration. The first is the DataAccessComponent which is a FEWS client hosted as a GlobalResource in Tomcat. The DataAccessComponent uses the regular FEWS configuration which falls outside the scope of this documentation. The second level of configuration is what is used by the FewsPiService webservice which has been deployed in Tomcat. To deploy this webservice a context XML file is required which looks like this:
...