adding parser for Sensor Observation Service (SOS) GetCapabilities interface, r=ahocevar (closes #2337)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9897 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
bartvde
2009-12-16 14:25:08 +00:00
parent f5ff990898
commit b948eb163b
7 changed files with 993 additions and 0 deletions

View File

@@ -264,6 +264,9 @@
"OpenLayers/Format/WMSCapabilities/v1_3.js",
"OpenLayers/Format/WMSCapabilities/v1_3_0.js",
"OpenLayers/Format/WMSGetFeatureInfo.js",
"OpenLayers/Format/OWSCommon/v1_1_0.js",
"OpenLayers/Format/SOSCapabilities.js",
"OpenLayers/Format/SOSCapabilities/v1_0_0.js",
"OpenLayers/Layer/WFS.js",
"OpenLayers/Control/GetFeature.js",
"OpenLayers/Control/MouseToolbar.js",

View File

@@ -0,0 +1,187 @@
/* Copyright (c) 2006-2009 MetaCarta, Inc., published under the Clear BSD
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
* full text of the license. */
/**
* @requires OpenLayers/Format/XML.js
*/
OpenLayers.Format.OWSCommon = {};
/**
* Class: OpenLayers.Format.OWSCommon.v1_1_0
* Parser for OWS Common version 1.1.0 which can be used by other parsers.
* It is not intended to be used on its own.
*
* Inherits from:
* - <OpenLayers.Format.XML>
*/
OpenLayers.Format.OWSCommon.v1_1_0 = OpenLayers.Class(OpenLayers.Format.XML, {
/**
* Property: namespaces
* {Object} Mapping of namespace aliases to namespace URIs.
*/
namespaces: {
ows: "http://www.opengis.net/ows/1.1",
xlink: "http://www.w3.org/1999/xlink"
},
/**
* Property: readers
* Contains public functions, grouped by namespace prefix, that will
* be applied when a namespaced node is found matching the function
* name. The function will be applied in the scope of this parser
* with two arguments: the node being read and a context object passed
* from the parent.
*/
readers: {
"ows": {
"ServiceIdentification": function(node, obj) {
obj.serviceIdentification = {};
this.readChildNodes(node, obj.serviceIdentification);
},
"Title": function(node, serviceIdentification) {
serviceIdentification.title = this.getChildValue(node);
},
"Abstract": function(node, serviceIdentification) {
serviceIdentification.abstract = this.getChildValue(node);
},
"Keywords": function(node, serviceIdentification) {
serviceIdentification.keywords = {};
this.readChildNodes(node, serviceIdentification.keywords);
},
"Keyword": function(node, keywords) {
keywords[this.getChildValue(node)] = true;
},
"ServiceType": function(node, serviceIdentification) {
serviceIdentification.serviceType = {
codeSpace: node.getAttribute('codeSpace'),
value: this.getChildValue(node)};
},
"ServiceTypeVersion": function(node, serviceIdentification) {
serviceIdentification.serviceTypeVersion = this.getChildValue(node);
},
"Fees": function(node, serviceIdentification) {
serviceIdentification.fees = this.getChildValue(node);
},
"AccessConstraints": function(node, serviceIdentification) {
serviceIdentification.accessConstraints =
this.getChildValue(node);
},
"ServiceProvider": function(node, obj) {
obj.serviceProvider = {};
this.readChildNodes(node, obj.serviceProvider);
},
"ProviderName": function(node, serviceProvider) {
serviceProvider.providerName = this.getChildValue(node);
},
"ProviderSite": function(node, serviceProvider) {
serviceProvider.providerSite = this.getAttributeNS(node,
this.namespaces.xlink, "href");
},
"ServiceContact": function(node, serviceProvider) {
serviceProvider.serviceContact = {};
this.readChildNodes(node, serviceProvider.serviceContact);
},
"IndividualName": function(node, serviceContact) {
serviceContact.individualName = this.getChildValue(node);
},
"PositionName": function(node, serviceContact) {
serviceContact.positionName = this.getChildValue(node);
},
"ContactInfo": function(node, serviceContact) {
serviceContact.contactInfo = {};
this.readChildNodes(node, serviceContact.contactInfo);
},
"Phone": function(node, contactInfo) {
contactInfo.phone = {};
this.readChildNodes(node, contactInfo.phone);
},
"Voice": function(node, phone) {
phone.voice = this.getChildValue(node);
},
"Address": function(node, contactInfo) {
contactInfo.address = {};
this.readChildNodes(node, contactInfo.address);
},
"DeliveryPoint": function(node, address) {
address.deliveryPoint = this.getChildValue(node);
},
"City": function(node, address) {
address.city = this.getChildValue(node);
},
"AdministrativeArea": function(node, address) {
address.administrativeArea = this.getChildValue(node);
},
"PostalCode": function(node, address) {
address.postalCode = this.getChildValue(node);
},
"Country": function(node, address) {
address.country = this.getChildValue(node);
},
"ElectronicMailAddress": function(node, address) {
address.electronicMailAddress = this.getChildValue(node);
},
"Role": function(node, serviceContact) {
serviceContact.role = this.getChildValue(node);
},
"OperationsMetadata": function(node, obj) {
obj.operationsMetadata = {};
this.readChildNodes(node, obj.operationsMetadata);
},
"Operation": function(node, operationsMetadata) {
var name = node.getAttribute("name");
operationsMetadata[name] = {};
this.readChildNodes(node, operationsMetadata[name]);
},
"DCP": function(node, operation) {
operation.dcp = {};
this.readChildNodes(node, operation.dcp);
},
"HTTP": function(node, dcp) {
dcp.http = {};
this.readChildNodes(node, dcp.http);
},
"Get": function(node, http) {
http.get = this.getAttributeNS(node,
this.namespaces.xlink, "href");
},
"Post": function(node, http) {
http.post = this.getAttributeNS(node,
this.namespaces.xlink, "href");
},
"Parameter": function(node, operation) {
if (!operation.parameters) {
operation.parameters = {};
}
var name = node.getAttribute("name");
operation.parameters[name] = {};
this.readChildNodes(node, operation.parameters[name]);
},
"AllowedValues": function(node, parameter) {
parameter.allowedValues = {};
this.readChildNodes(node, parameter.allowedValues);
},
"AnyValue": function(node, parameter) {
parameter.anyValue = true;
},
"Value": function(node, allowedValues) {
allowedValues[this.getChildValue(node)] = true;
},
"Range": function(node, allowedValues) {
allowedValues.range = {};
this.readChildNodes(node, allowedValues.range);
},
"MinimumValue": function(node, range) {
range.minValue = this.getChildValue(node);
},
"MaximumValue": function(node, range) {
range.maxValue = this.getChildValue(node);
}
}
},
CLASS_NAME: "OpenLayers.Format.OWSCommon.v1_1_0"
});

View File

@@ -0,0 +1,82 @@
/* Copyright (c) 2006-2009 MetaCarta, Inc., published under the Clear BSD
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
* full text of the license. */
/**
* @requires OpenLayers/Format/XML.js
*/
/**
* Class: OpenLayers.Format.SOSCapabilities
* Read SOS Capabilities.
*
* Inherits from:
* - <OpenLayers.Format.XML>
*/
OpenLayers.Format.SOSCapabilities = OpenLayers.Class(OpenLayers.Format.XML, {
/**
* APIProperty: defaultVersion
* {String} Version number to assume if none found. Default is "1.0.0".
*/
defaultVersion: "1.0.0",
/**
* APIProperty: version
* {String} Specify a version string if one is known.
*/
version: null,
/**
* Property: parser
* {<OpenLayers.Format>} A cached versioned format used for reading.
*/
parser: null,
/**
* Constructor: OpenLayers.Format.SOSCapabilities
* Create a new parser for SOS capabilities.
*
* Parameters:
* options - {Object} An optional object whose properties will be set on
* this instance.
*/
initialize: function(options) {
OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
this.options = options;
},
/**
* APIMethod: read
* Read capabilities data from a string, and return information about
* the service (offering and observedProperty mostly).
*
* Parameters:
* data - {String} or {DOMElement} data to read/parse.
*
* Returns:
* {Object} Info about the SOS
*/
read: function(data) {
if(typeof data == "string") {
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
}
var root = data.documentElement;
var version = this.version || root.getAttribute("version") || this.defaultVersion;
if(!this.parser || this.parser.version !== version) {
var constr = OpenLayers.Format.SOSCapabilities[
"v" + version.replace(/\./g, "_")
];
if(!constr) {
throw "Can't find a SOS capabilities parser for version " + version;
}
var parser = new constr(this.options);
}
var capabilities = parser.read(data);
capabilities.version = version;
return capabilities;
},
CLASS_NAME: "OpenLayers.Format.SOSCapabilities"
});

View File

@@ -0,0 +1,156 @@
/* Copyright (c) 2006-2009 MetaCarta, Inc., published under the Clear BSD
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
* full text of the license. */
/**
* @requires OpenLayers/Format/SOSCapabilities.js
* @requires OpenLayers/Format/OWSCommon/v1_1_0.js
* @requires OpenLayers/Format/GML/v3.js
*/
/**
* Class: OpenLayers.Format.SOSCapabilities.v1_0_0
* Read SOS Capabilities version 1.0.0.
*
* Inherits from:
* - <OpenLayers.Format.SOSCapabilities>
*/
OpenLayers.Format.SOSCapabilities.v1_0_0 = OpenLayers.Class(
OpenLayers.Format.SOSCapabilities, {
/**
* Property: namespaces
* {Object} Mapping of namespace aliases to namespace URIs.
*/
namespaces: {
ows: "http://www.opengis.net/ows/1.1",
sos: "http://www.opengis.net/sos/1.0",
gml: "http://www.opengis.net/gml",
xlink: "http://www.w3.org/1999/xlink"
},
/**
* Property: regExes
* Compiled regular expressions for manipulating strings.
*/
regExes: {
trimSpace: (/^\s*|\s*$/g),
removeSpace: (/\s*/g),
splitSpace: (/\s+/),
trimComma: (/\s*,\s*/g)
},
/**
* Constructor: OpenLayers.Format.SOSCapabilities.v1_0_0
* Create a new parser for SOS capabilities version 1.0.0.
*
* Parameters:
* options - {Object} An optional object whose properties will be set on
* this instance.
*/
initialize: function(options) {
OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
this.options = options;
},
/**
* APIMethod: read
* Read capabilities data from a string, and return info about the SOS.
*
* Parameters:
* data - {String} or {DOMElement} data to read/parse.
*
* Returns:
* {Object} Information about the SOS service.
*/
read: function(data) {
if(typeof data == "string") {
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
}
if(data && data.nodeType == 9) {
data = data.documentElement;
}
var capabilities = {};
this.readNode(data, capabilities);
return capabilities;
},
/**
* Property: readers
* Contains public functions, grouped by namespace prefix, that will
* be applied when a namespaced node is found matching the function
* name. The function will be applied in the scope of this parser
* with two arguments: the node being read and a context object passed
* from the parent.
*/
readers: {
"gml": OpenLayers.Util.applyDefaults({
"name": function(node, obj) {
obj.name = this.getChildValue(node);
},
"TimePeriod": function(node, obj) {
obj.timePeriod = {};
this.readChildNodes(node, obj.timePeriod);
},
"beginPosition": function(node, timePeriod) {
timePeriod.beginPosition = this.getChildValue(node);
},
"endPosition": function(node, timePeriod) {
timePeriod.endPosition = this.getChildValue(node);
}
}, OpenLayers.Format.GML.v3.prototype.readers["gml"]),
"sos": {
"Capabilities": function(node, obj) {
this.readChildNodes(node, obj);
},
"Contents": function(node, obj) {
obj.contents = {};
this.readChildNodes(node, obj.contents);
},
"ObservationOfferingList": function(node, contents) {
contents.offeringList = {};
this.readChildNodes(node, contents.offeringList);
},
"ObservationOffering": function(node, offeringList) {
var id = this.getAttributeNS(node, this.namespaces.gml, "id");
offeringList[id] = {
procedures: [],
featureOfInterestIds: [],
responseFormats: [],
resultModels: [],
responseModes: []
};
this.readChildNodes(node, offeringList[id]);
},
"time": function(node, offering) {
offering.time = {};
this.readChildNodes(node, offering.time);
},
"procedure": function(node, offering) {
offering.procedures.push(this.getAttributeNS(node,
this.namespaces.xlink, "href"));
},
"observedProperty": function(node, offering) {
offering.observedProperty = this.getAttributeNS(node,
this.namespaces.xlink, "href");
},
"featureOfInterest": function(node, offering) {
offering.featureOfInterestIds.push(this.getAttributeNS(node,
this.namespaces.xlink, "href"));
},
"responseFormat": function(node, offering) {
offering.responseFormats.push(this.getChildValue(node));
},
"resultModel": function(node, offering) {
offering.resultModels.push(this.getChildValue(node));
},
"responseMode": function(node, offering) {
offering.responseModes.push(this.getChildValue(node));;
}
},
"ows": OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]
},
CLASS_NAME: "OpenLayers.Format.SOSCapabilities.v1_0_0"
});

View File

@@ -0,0 +1,80 @@
<html>
<head>
<script src="../../../lib/OpenLayers.js"></script>
<script src="v1_0_0.js"></script>
<script type="text/javascript">
function test_read(t) {
t.plan(41);
var format = new OpenLayers.Format.SOSCapabilities();
var obj = format.read(doc);
t.eq(obj.version, "1.0.0", "Version parsed correctly");
// service identification (from OWSCommon)
t.eq(obj.serviceIdentification.abstract, "WeatherSOS (stable) at IfGI, Muenster, Germany. For more info: http://ifgipedia.uni-muenster.de/kms/documentation/swsl/sos/", "Abstract parsed correctly");
t.eq(obj.serviceIdentification.accessConstraints, "NONE", "AccessConstraints parsed correctly");
t.eq(obj.serviceIdentification.fees, "NONE", "Fees parsed correctly");
for (var key in obj.serviceIdentification.keywords) {
t.eq(key, "rain gauge, radiation, pressure, windspeed, winddirection, temperature", "Keywords parsed correctly");
}
t.eq(obj.serviceIdentification.serviceType.codeSpace, "http://opengeospatial.net", "codeSpace correctly parsed");
t.eq(obj.serviceIdentification.serviceType.value, "OGC:SOS", "ServiceType correctly parsed");
t.eq(obj.serviceIdentification.serviceTypeVersion, "1.0.0", "ServiceTypeVersion correctly parsed");
t.eq(obj.serviceIdentification.title, "IFGI WeatherSOS (stable)", "Title correctly parsed");
// service provider (from OWSCommon)
t.eq(obj.serviceProvider.providerName, "Institute for Geoinformatics, University of Muenster", "ProviderName correctly parsed");
t.eq(obj.serviceProvider.providerSite, "http://ifgi.uni-muenster.de", "ProviderSite correctly parsed");
t.eq(obj.serviceProvider.serviceContact.individualName, "Eike Hinderk Juerrens", "IndividualName parsed correctly");
t.eq(obj.serviceProvider.serviceContact.positionName, "Student Associate", "PositionName parsed correctly");
t.eq(obj.serviceProvider.serviceContact.role, "", "Role parsed correctly");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.administrativeArea, "NRW", "AdministrativeArea correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.city, "Muenster", "City correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.country, "Germany", "Country correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.deliveryPoint, "Weselerstrasse 253", "DeliveryPoint correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.electronicMailAddress, "ehjuerrens@uni-muenster.de", "ElectronicMailAddress correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.address.postalCode, "48149", "Postalcode correctly parsed");
t.eq(obj.serviceProvider.serviceContact.contactInfo.phone.voice, "+49-251-83-30088", "Voice phone correctly parsed");
// operationsMetadata (from OWSCommon)
t.eq(obj.operationsMetadata.DescribeSensor.dcp.http.post, "http://v-swe.uni-muenster.de:8080/WeatherSOS/sos", "POST url for DescribeSensor correctly parsed");
var counter = 0;
for (var key in obj.operationsMetadata.DescribeSensor.parameters.procedure.allowedValues) {
if (counter == 0) {
t.eq(key, "urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111", "Allowed value (1) for procedure parameter in DescribeSensor request correctly parsed");
} else if (counter == 1) {
t.eq(key, "urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93", "Allowed value (2) for procedure parameter in DescribeSensor request correctly parsed");
}
counter++;
}
t.eq(obj.operationsMetadata.GetFeatureOfInterest.parameters.location.anyValue, true, "AnyValue parsed correctly");
t.eq(obj.operationsMetadata.GetObservation.parameters.eventTime.allowedValues.range.maxValue, "2009-11-04T14:45:00+01", "Range maxValue parsed correctly");
t.eq(obj.operationsMetadata.GetObservation.parameters.eventTime.allowedValues.range.minValue, "2008-02-14T11:03:02+01", "Range minValue parsed correctly");
// Contents (from SOS)
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.name, "Pressure of the atmosphere", "Name of offering correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.observedProperty, "urn:x-ogc:def:property:OGC::BarometricPressure", "ObservedProperty correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.featureOfInterestIds[0], "urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93", "Allowed value (1) for featureOfInterest correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.featureOfInterestIds[1], "urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111", "Allowed value (2) for featureOfInterest correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.procedures[0], "urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93", "Allowed value (1) for procedures correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.procedures[1], "urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111", "Allowed value (2) for procedures correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.responseFormats[0], 'text/xml;subtype="om/1.0.0"', "Allowed value (1) for responseFormats correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.responseFormats[1], "application/zip", "Allowed value (2) for responseFormats correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.responseModes[0], "inline", "Allowed value (1) for responseModes correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.responseModes[1], "resultTemplate", "Allowed value (2) for responseModes correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.resultModels[0], "ns:Measurement", "Allowed value (1) for resultModels correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.resultModels[1], "ns:Observation", "Allowed value (2) for resultModels correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.time.timePeriod.beginPosition, "2008-12-20T02:29:27+01:00", "TimePeriod beginPosition correctly parsed");
t.eq(obj.contents.offeringList.ATMOSPHERIC_PRESSURE.time.timePeriod.endPosition, "2009-11-04T14:45:00+01:00", "TimePeriod endPosition correctly parsed");
}
</script>
</head>
<body>
</body>
</html>

View File

@@ -0,0 +1,484 @@
var doc = new OpenLayers.Format.XML().read(
'<?xml version="1.0" encoding="UTF-8"?>' +
'<sos:Capabilities version="1.0.0" updateSequence="2005-12-14T10:12:39+01" xsi:schemaLocation="http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd" xmlns:sos="http://www.opengis.net/sos/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink">' +
'<ows:ServiceIdentification xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:om="http://www.opengis.net/om/1.0" xmlns:swe="http://www.opengis.net/swe/1.0">' +
'<ows:Title>IFGI WeatherSOS (stable)</ows:Title>' +
'<ows:Abstract>WeatherSOS (stable) at IfGI, Muenster, Germany. For more info: http://ifgipedia.uni-muenster.de/kms/documentation/swsl/sos/</ows:Abstract>' +
'<ows:Keywords>' +
'<ows:Keyword>rain gauge, radiation, pressure, windspeed, winddirection, temperature</ows:Keyword>' +
'</ows:Keywords>' +
'<ows:ServiceType codeSpace="http://opengeospatial.net">OGC:SOS</ows:ServiceType>' +
'<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>' +
'<ows:Fees>NONE</ows:Fees>' +
'<ows:AccessConstraints>NONE</ows:AccessConstraints>' +
'</ows:ServiceIdentification>' +
'<ows:ServiceProvider xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:om="http://www.opengis.net/om/1.0" xmlns:swe="http://www.opengis.net/swe/1.0">' +
'<ows:ProviderName>Institute for Geoinformatics, University of Muenster</ows:ProviderName>' +
'<ows:ProviderSite xlink:href="http://ifgi.uni-muenster.de"/>' +
'<ows:ServiceContact>' +
'<ows:IndividualName>Eike Hinderk Juerrens</ows:IndividualName>' +
'<ows:PositionName>Student Associate</ows:PositionName>' +
'<ows:ContactInfo>' +
'<ows:Phone>' +
'<ows:Voice>+49-251-83-30088</ows:Voice>' +
'</ows:Phone>' +
'<ows:Address>' +
'<ows:DeliveryPoint>Weselerstrasse 253</ows:DeliveryPoint>' +
'<ows:City>Muenster</ows:City>' +
'<ows:AdministrativeArea>NRW</ows:AdministrativeArea>' +
'<ows:PostalCode>48149</ows:PostalCode>' +
'<ows:Country>Germany</ows:Country>' +
'<ows:ElectronicMailAddress>ehjuerrens@uni-muenster.de</ows:ElectronicMailAddress>' +
'</ows:Address>' +
'</ows:ContactInfo>' +
'<ows:Role/>' +
'</ows:ServiceContact>' +
'</ows:ServiceProvider>' +
'<ows:OperationsMetadata xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:om="http://www.opengis.net/om/1.0" xmlns:swe="http://www.opengis.net/swe/1.0">' +
'<ows:Operation name="GetCapabilities">' +
'<ows:DCP>' +
'<ows:HTTP>' +
'<ows:Get xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos?"/>' +
'<ows:Post xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos"/>' +
'</ows:HTTP>' +
'</ows:DCP>' +
'<ows:Parameter name="service">' +
'<ows:AllowedValues>' +
'<ows:Value>SOS</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="updateSequence">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="AcceptVersions">' +
'<ows:AllowedValues>' +
'<ows:Value>1.0.0</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="Sections">' +
'<ows:AllowedValues>' +
'<ows:Value>ServiceIdentification</ows:Value>' +
'<ows:Value>ServiceProvider</ows:Value>' +
'<ows:Value>OperationsMetadata</ows:Value>' +
'<ows:Value>Contents</ows:Value>' +
'<ows:Value>All</ows:Value>' +
'<ows:Value>Filter_Capabilities</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="AcceptFormats">' +
'<ows:AllowedValues>' +
'<ows:Value>text/xml</ows:Value>' +
'<ows:Value>application/zip</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'</ows:Operation>' +
'<ows:Operation name="GetObservation">' +
'<ows:DCP>' +
'<ows:HTTP>' +
'<ows:Post xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos"/>' +
'</ows:HTTP>' +
'</ows:DCP>' +
'<ows:Parameter name="version">' +
'<ows:AllowedValues>' +
'<ows:Value>1.0.0</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="service">' +
'<ows:AllowedValues>' +
'<ows:Value>SOS</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="srsName">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="offering">' +
'<ows:AllowedValues>' +
'<ows:Value>ATMOSPHERIC_TEMPERATURE</ows:Value>' +
'<ows:Value>RAIN_GAUGE</ows:Value>' +
'<ows:Value>WIND_DIRECTION</ows:Value>' +
'<ows:Value>WIND_SPEED</ows:Value>' +
'<ows:Value>HUMIDITY</ows:Value>' +
'<ows:Value>LUMINANCE</ows:Value>' +
'<ows:Value>ATMOSPHERIC_PRESSURE</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="eventTime">' +
'<ows:AllowedValues>' +
'<ows:Range>' +
'<ows:MinimumValue>2008-02-14T11:03:02+01</ows:MinimumValue>' +
'<ows:MaximumValue>2009-11-04T14:45:00+01</ows:MaximumValue>' +
'</ows:Range>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="procedure">' +
'<ows:AllowedValues>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111</ows:Value>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="observedProperty">' +
'<ows:AllowedValues>' +
'<ows:Value>urn:x-ogc:def:property:OGC::Temperature</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::Precipitation1Hour</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::WindDirection</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::WindSpeed</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::RelativeHumidity</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::Luminance</ows:Value>' +
'<ows:Value>urn:x-ogc:def:property:OGC::BarometricPressure</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="featureOfInterest">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="result">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="responseFormat">' +
'<ows:AllowedValues>' +
'<ows:Value>text/xml;subtype="OM/1.0.0"</ows:Value>' +
'<ows:Value>application/zip</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="resultModel">' +
'<ows:AllowedValues>' +
'<ows:Value>om:Observation</ows:Value>' +
'<ows:Value>om:CategoryObservation</ows:Value>' +
'<ows:Value>om:Measurement</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="responseMode">' +
'<ows:AllowedValues>' +
'<ows:Value>resultTemplate</ows:Value>' +
'<ows:Value>inline</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'</ows:Operation>' +
'<ows:Operation name="GetObservationById">' +
'<ows:DCP>' +
'<ows:HTTP>' +
'<ows:Post xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos"/>' +
'</ows:HTTP>' +
'</ows:DCP>' +
'<ows:Parameter name="version">' +
'<ows:AllowedValues>' +
'<ows:Value>1.0.0</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="service">' +
'<ows:AllowedValues>' +
'<ows:Value>SOS</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="srsName">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="ObservationId">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'<ows:Parameter name="responseFormat">' +
'<ows:AllowedValues>' +
'<ows:Value>text/xml;subtype="OM/1.0.0"</ows:Value>' +
'<ows:Value>application/zip</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="resultModel">' +
'<ows:AllowedValues>' +
'<ows:Value>om:Observation</ows:Value>' +
'<ows:Value>om:CategoryObservation</ows:Value>' +
'<ows:Value>om:Measurement</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="responseMode">' +
'<ows:AllowedValues>' +
'<ows:Value>inline</ows:Value>' +
'<ows:Value>resultTemplate</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'</ows:Operation>' +
'<ows:Operation name="DescribeSensor">' +
'<ows:DCP>' +
'<ows:HTTP>' +
'<ows:Post xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos"/>' +
'</ows:HTTP>' +
'</ows:DCP>' +
'<ows:Parameter name="version">' +
'<ows:AllowedValues>' +
'<ows:Value>1.0.0</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="service">' +
'<ows:AllowedValues>' +
'<ows:Value>SOS</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="outputFormat">' +
'<ows:AllowedValues>' +
'<ows:Value>text/xml;subtype="sensorML/1.0.1"</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="procedure">' +
'<ows:AllowedValues>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111</ows:Value>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'</ows:Operation>' +
'<ows:Operation name="GetFeatureOfInterest">' +
'<ows:DCP>' +
'<ows:HTTP>' +
'<ows:Post xlink:href="http://v-swe.uni-muenster.de:8080/WeatherSOS/sos"/>' +
'</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="featureOfInterestId">' +
'<ows:AllowedValues>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93</ows:Value>' +
'<ows:Value>urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111</ows:Value>' +
'</ows:AllowedValues>' +
'</ows:Parameter>' +
'<ows:Parameter name="location">' +
'<ows:AnyValue/>' +
'</ows:Parameter>' +
'</ows:Operation>' +
'</ows:OperationsMetadata>' +
'<sos:Filter_Capabilities xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:om="http://www.opengis.net/om/1.0" xmlns:swe="http://www.opengis.net/swe/1.0">' +
'<ogc:Spatial_Capabilities>' +
'<ogc:GeometryOperands>' +
'<ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>' +
'<ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>' +
'<ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>' +
'<ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>' +
'</ogc:GeometryOperands>' +
'<ogc:SpatialOperators>' +
'<ogc:SpatialOperator name="BBOX"/>' +
'<ogc:SpatialOperator name="Contains"/>' +
'<ogc:SpatialOperator name="Intersects"/>' +
'<ogc:SpatialOperator name="Overlaps"/>' +
'</ogc:SpatialOperators>' +
'</ogc:Spatial_Capabilities>' +
'<ogc:Temporal_Capabilities>' +
'<ogc:TemporalOperands>' +
'<ogc:TemporalOperand>gml:TimeInstant</ogc:TemporalOperand>' +
'<ogc:TemporalOperand>gml:TimePeriod</ogc:TemporalOperand>' +
'</ogc:TemporalOperands>' +
'<ogc:TemporalOperators>' +
'<ogc:TemporalOperator name="TM_During"/>' +
'<ogc:TemporalOperator name="TM_Equals"/>' +
'<ogc:TemporalOperator name="TM_After"/>' +
'<ogc:TemporalOperator name="TM_Before"/>' +
'</ogc:TemporalOperators>' +
'</ogc:Temporal_Capabilities>' +
'<ogc:Scalar_Capabilities>' +
'<ogc:ComparisonOperators>' +
'<ogc:ComparisonOperator>Between</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>' +
'<ogc:ComparisonOperator>Like</ogc:ComparisonOperator>' +
'</ogc:ComparisonOperators>' +
'</ogc:Scalar_Capabilities>' +
'<ogc:Id_Capabilities>' +
'<ogc:FID/>' +
'<ogc:EID/>' +
'</ogc:Id_Capabilities>' +
'</sos:Filter_Capabilities>' +
'<sos:Contents>' +
'<sos:ObservationOfferingList>' +
'<sos:ObservationOffering gml:id="ATMOSPHERIC_TEMPERATURE">' +
'<gml:name>Temperature of the atmosphere</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-11-20T15:20:22+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::Temperature"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="RAIN_GAUGE">' +
'<gml:name>Rain</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-11-20T15:35:22+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::Precipitation1Hour"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="WIND_DIRECTION">' +
'<gml:name>Direction of the wind</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-11-20T15:20:22+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::WindDirection"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="WIND_SPEED">' +
'<gml:name>Speed of the wind</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-11-20T15:20:22+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::WindSpeed"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="HUMIDITY">' +
'<gml:name>Humidity of the atmosphere</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-02-14T11:03:02+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::RelativeHumidity"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="LUMINANCE">' +
'<gml:name>Luminance</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-11-20T15:20:22+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::Luminance"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'<sos:ObservationOffering gml:id="ATMOSPHERIC_PRESSURE">' +
'<gml:name>Pressure of the atmosphere</gml:name>' +
'<gml:boundedBy>' +
'<gml:Envelope srsName="urn:ogc:def:crs:EPSG:4326">' +
'<gml:lowerCorner>46.611644 7.6103</gml:lowerCorner>' +
'<gml:upperCorner>51.9412 13.883498</gml:upperCorner>' +
'</gml:Envelope>' +
'</gml:boundedBy>' +
'<sos:time>' +
'<gml:TimePeriod xsi:type="gml:TimePeriodType">' +
'<gml:beginPosition>2008-12-20T02:29:27+01:00</gml:beginPosition>' +
'<gml:endPosition>2009-11-04T14:45:00+01:00</gml:endPosition>' +
'</gml:TimePeriod>' +
'</sos:time>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:procedure xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:observedProperty xlink:href="urn:x-ogc:def:property:OGC::BarometricPressure"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:3d3b239f-7696-4864-9d07-15447eae2b93"/>' +
'<sos:featureOfInterest xlink:href="urn:ogc:object:feature:OSIRIS-HWS:efeb807b-bd24-4128-a920-f6729bcdd111"/>' +
'<sos:responseFormat>text/xml;subtype="om/1.0.0"</sos:responseFormat>' +
'<sos:responseFormat>application/zip</sos:responseFormat>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Measurement</sos:resultModel>' +
'<sos:resultModel xmlns:ns="http://www.opengis.net/om/1.0">ns:Observation</sos:resultModel>' +
'<sos:responseMode>inline</sos:responseMode>' +
'<sos:responseMode>resultTemplate</sos:responseMode>' +
'</sos:ObservationOffering>' +
'</sos:ObservationOfferingList>' +
'</sos:Contents>' +
'</sos:Capabilities>'
);

View File

@@ -85,6 +85,7 @@
<li>Format/CSWGetDomain/v2_0_2.html</li>
<li>Format/CSWGetRecords.html</li>
<li>Format/CSWGetRecords/v2_0_2.html</li>
<li>Format/SOSCapabilities/v1_0_0.html</li>
<li>Format/XML.html</li>
<li>Geometry.html</li>
<li>Geometry/Collection.html</li>