Closed ocefpaf closed 8 years ago
I just tested and the issue persists. I guess something changed and the way we used to construct the URL is no longer valid. I will take a better look later today.
(I was hoping for a simple fix :unamused:)
This works fine for me on linux64:
from pyoos.collectors.coops.coops_sos import CoopsSos
collector = CoopsSos()
This is with
# packages in environment at /home/usgs/miniconda/envs/ioos:
#
pyoos 0.6.2 np18py27_2 https://conda.binstar.org/rsignell/linux-64/pyoos-0.6.2-np18py27_2.tar.bz2
The problem today is different:
from pandas import read_csv
from utilities import sos_request
params = dict(observedProperty=sos_name,
eventTime=start.strftime('%Y-%m-%dT%H:%M:%SZ'),
featureOfInterest='BBOX:{0},{1},{2},{3}'.format(*bbox),
offering='urn:ioos:network:NOAA.NOS.CO-OPS:WaterLevelActive')
uri = 'http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS'
url = sos_request(uri, **params)
observations = read_csv(url)
log.info('SOS URL request: {}'.format(url))
TypeError Traceback (most recent call last)
<ipython-input-10-c187a9dc98d9> in <module>()
8
9 uri = 'http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS'
---> 10 url = sos_request(uri, **params)
11 observations = read_csv(url)
12
/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/utilities/secoora.py in sos_request(url, **kw)
599 return r.url
600 else:
--> 601 raise TypeError('Bad url {}'.format(r.url))
602
603
TypeError: Bad url http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?eventTime=2015-10-31T12%3A00%3A00Z&service=SOS&offering=urn%3Aioos%3Anetwork%3ANOAA.NOS.CO-OPS%3AWaterLevelActive&request=GetObservation&version=1.0.0&responseFormat=text%2Fcsv&featureOfInterest=BBOX%3A-87.4%2C24.25%2C-74.7%2C36.7&observedProperty=water_surface_height_above_reference_datum
Excecuting that "bad URL" http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?eventTime=2015-10-31T12%3A00%3A00Z&service=SOS&offering=urn%3Aioos%3Anetwork%3ANOAA.NOS.CO-OPS%3AWaterLevelActive&request=GetObservation&version=1.0.0&responseFormat=text%2Fcsv&featureOfInterest=BBOX%3A-87.4%2C24.25%2C-74.7%2C36.7&observedProperty=water_surface_height_above_reference_datum returns the error message: "No station objects available for water_surface_height_above_reference_datum in collection."
I Yep. But I should find some stations with water_surface_height_above_reference_datum
, right? Or maybe the variable named changed?
Something must have changed in http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS.
I am slowly finding out what. The snippet below, for example, used to work:
from owslib.swe.sensor.sml import SensorML
from lxml import etree
from urllib import urlopen
url = ('http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?service=SOS&'
'request=DescribeSensor&version=1.0.0&'
'outputFormat=text/xml;subtype="sensorML/1.0.1"&'
'procedure=urn:ioos:station:NOAA.NOS.CO-OPS:%s') % 8720218
xml = etree.parse(urlopen(url))
root = SensorML(xml)
root.members
But now I have to change the 'subtype'
to subtype="sensorML/1.0.1/profiles/ioos_sos/1.0"
This is annoying. Before we could do this:
system = root.members[0]
a = system.identifiers.get('longName').value
b = system.identifiers.get('stationID').value
And that would return the longName
and the stationID
, but now the longName
has the stationID
! In the example above I get:
a = 'urn:ioos:station:NOAA.NOS.CO-OPS:8720218 station, Mayport (Bar Pilots Dock), FL'
and
b = 'urn:ioos:station:NOAA.NOS.CO-OPS:8720218'
Obviously I can parse a to return only Mayport (Bar Pilots Dock), FL
, but how stable is that behavior?
Not sure, may be contact IOOS.Webmaster@noaa.gov as to this??
@dpsnowden , do you know who to contact here on these frustrating changing SOS services at CO-OPS?
Worth a shot:
<ows:ServiceContact>
<ows:IndividualName>IOOS Administrator</ows:IndividualName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice>301-713-2806</ows:Voice>
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint>1305 East-West Highway</ows:DeliveryPoint>
<ows:City>Silver Spring</ows:City>
<ows:AdministrativeArea>MD</ows:AdministrativeArea>
<ows:PostalCode>20910-3281</ows:PostalCode>
<ows:Country>USA</ows:Country>
<ows:ElectronicMailAddress>COOPS.IOOS@noaa.gov</ows:ElectronicMailAddress>
</ows:Address>
</ows:ContactInfo>
</ows:ServiceContact>
Okay, I asked the coops folks, and Xiaoyan Li - NOAA Affiliate xiaoyan.li@noaa.gov responded right back:
"SOS DescriberSensor response had been changed to follow the templates from: https://code.google.com/p/ioostech/source/browse/#svn%2Ftrunk%2Ftemplates%2FMilestone1.0
The changes are:
Updated GetObservation responses
1) Added quality control flags for water level and meteorological data
2) Offered all water level data in either Meters or Feet
Input parameter:
unit=Meters
unit=Feet
if no unit is specified, the data in meters is retrieved.
e.g.
http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=water_surface_height_above_reference_datum&offering=urn:ioos:station:NOAA.NOS.CO-OPS:8454000&responseFormat=text%2Fcsv&eventTime=2015-05-11T00:00:00Z/2015-05-11T23:59:00Z&result=VerticalDatum%3D%3Durn:ioos:def:datum:noaa::MHHW&unit=Feet
3) Offered air temperature and water temperature in either Celsius or Fahrenheit
Input parameter:
unit=Celsius
unit=Fahrenheit
if no unit is specified, the data in Celsius is retrieved.
e.g.
http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=air_temperature&offering=urn:ioos:network:NOAA.NOS.CO-OPS:MetActive&featureOfInterest=BBOX:-100,30,-80,40&responseFormat=text%2Fcsv&eventTime=2015-05-11T00:00:00Z/2015-05-11T00:59:00Z&unit=Fahrenheit
4) Offered wind data in m/sec, Knots or miles/hour
Input parameter:
unit=Meters
unit=Knots
unit=Miles
if no unit is specified, the data in Meters is retrieved.
e.g.
http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=winds&offering=urn:ioos:network:NOAA.NOS.CO-OPS:MetActive&featureOfInterest=BBOX:-100,30,-80,40&responseFormat=text%2Fcsv&unit=Knots
5) Offered SWE Common output
Input parameter:
responseFormat=text/xml;subtype="om/1.0.0/profiles/ioos_sos/1.0"
e.g.http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=sea_surface_height_amplitude_due_to_equilibrium_ocean_tide&offering=urn:ioos:station:NOAA.NOS.CO-OPS:8454000&responseFormat=text%2Fxml%3Bsubtype%3D%22om/1.0.0/profiles/ioos_sos/1.0%22&eventTime=2015-05-11T00:00:00Z/2015-05-11T23:59:00Z&result=VerticalDatum%3D%3Durn:ioos:def:datum:noaa::MLW&dataType=HourlyTidePredictions&unit=Feet
http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=currents&offering=urn:ioos:network:NOAA.NOS.CO-OPS:CurrentsActive&procedure=urn:ioos:network:NOAA.NOS.CO-OPS:CurrentsActive&featureOfInterest=BBOX:-100,30,-80,40&responseFormat=text%2Fxml%3Bsubtype%3D%22om/1.0.0/profiles/ioos_sos/1.0%22&eventTime=2015-05-11T00:00:00Z/2015-05-11T00:59:00Z
Updated GetCapabilities response
1) Changed root element namespace
Old:
Capabilities
New:
sos:Capabilities
2) Changed sos namespace in sos:Capabilities, and the orders of all namespace links
Old:
xmlns="http://www.opengis.net/sos/1.0"
xsi:schemaLocation="http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetCapabilities.xsd"
New:
xmlns:sos="http://www.opengis.net/sos/1.0"
xsi:schemaLocation="http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd"
3) Changed /sos:Capabilities/ows:ServiceIdentification/ows:ServiceType@codeSpace attribute value
Old:
<ows:ServiceType codeSpace="http://www.opengis.net">OGC:SOS</ows:ServiceType>
New:
<ows:ServiceType codeSpace="http://opengeospatial.net">OGC:SOS</ows:ServiceType>
4) Removed /sos:Capabilities/ows:ServiceProvider/ows:ServiceContact/ows:PositionName
Old:
<ows:PositionName>IOOS Administrator</ows:PositionName>
New:
None
5) Removed /sos:Capabilities/ows:ServiceProvider/ows:ServiceContact/ows:ContactInfo/ows:Phone/ows:Facsimile
Old:
<ows:Facsimile>301-713-1933</ows:Facsimile>
New:
None
6) Added sml:electronicMailAddress in /sos:Capabilities/ows:ServiceProvider/ows:ServiceContact/ows:ContactInfo/ows:Address
Old:
None
New:
<ows:ElectronicMailAddress>COOPS.IOOS@noaa.gov</ows:ElectronicMailAddress>
7) Moved Parameter "service" and "version" in /sos:Capabilities/ows:OperationsMetadata/ows:Operation to /sos:Capabilities/ows:OperationsMetadata
<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>
Old:
in /sos:Capabilities/ows:OperationsMetadata/ows:Operation
New:
in /sos:Capabilities/ows:OperationsMetadata
8) Added parameter name="Sections" in /sos:Capabilities/ows:OperationsMetadata/ows:Operation@name="GetCapabilities"
Old:
None
New:
<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:AllowedValues>
</ows:Parameter>
9) Switched the position of /sos:Capabilities/ows:OperationsMetadata/ows:Operation@name="DescribeSensor" and name="GetObservation"
10) Added 1 more responseFormat SWE Common in /sos:Capabilities/ows:OperationsMetadata/ows:Operation@name="GetObservation"/ows:Parameter@name="responseFormat"
Old:
None
New:
text/xml;subtype="om/1.0.0/profiles/ioos_sos/1.0"
11) Added 4 more units in /sos:Capabilities/ows:OperationsMetadata/ows:Operation@name="GetObservation"/ows:Parameter@name="unit"
Old:
None
New:
<ows:Value>Celsius</ows:Value>
<ows:Value>Fahrenheit</ows:Value>
<ows:Value>Knots</ows:Value>
<ows:Value>Miles</ows:Value>
12) Changed outputFormat parameter value in /sos:Capabilities/ows:OperationsMetadata/ows:Operation@name="DescribeSensor"/ows:Parameter@name="outputFormat"
Old:
<ows:Value>text/xml;subtype="sensorML/1.0.1"</ows:Value>
New:
<ows:Value>text/xml;subtype="sensorML/1.0.1/profiles/ioos_sos/1.0"</ows:Value>
13) Added ioosTemplateVersion to /sos:Capabilities/ows:OperationsMetadata
Old:
None
New:
<ows:ExtendedCapabilities>
<gml:metaDataProperty xlink:title="ioosTemplateVersion" xlink:href="http://code.google.com/p/ioostech/source/browse/#svn%2Ftrunk%2Ftemplates%2FMilestone1.0">
<gml:version>1.0</gml:version>
</gml:metaDataProperty>
<gml:metaDataProperty xlink:title="softwareVersion" xlink:href="http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/">
<gml:version>2.6</gml:version>
</gml:metaDataProperty>
</ows:ExtendedCapabilities>
14) Changed namespaces for Contents, ObservationOfferingList, ObservationOffering
e.g.
Old:
<Contents> ... </Contents>
New:
<sos:Contents> ... </sos:Contents>
15) Changed all /sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering/gml:srsName value
Old:
<gml:srsName>urn:ogc:def:crs:epsg::4326</gml:srsName>
New:
<gml:srsName>EPSG:4326</gml:srsName>
16) Changed all /sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering/gml:boundedBy/gml:Envelope@srsName value
Old:
<gml:Envelope srsName="urn:ogc:def:crs:epsg::4326">
New:
<gml:Envelope srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
17) Changed namespaces for time, procedure, observedProperty, featureOfInterest, responseFormat, resultModel, responseMode in /sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering/
e.g.
Old:
<time> ... </time>
New:
<sos:time> ... </sos:time>
18) Changed sos:observedProperty xlink:href attribute value for harmonic constituents and datum data
Old:
<observedProperty xlink:href="http://mmisw.org/ont/cf/parameter/datums" />
<observedProperty xlink:href="http://mmisw.org/ont/cf/parameter/harmonic_constituents" />
New:
<sos:observedProperty xlink:href="http://mmisw.org/ont/ioos/datum/Datum" />
<sos:observedProperty xlink:href="http://mmisw.org/ont/ioos/harmonicConstituents/HarmonicConstituents" />
19) Changed /sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering/sos:resultModel value
Old:
<sos:resultModel>om:Observation</sos:resultModel>
New:
<sos:resultModel>om:ObservationCollection</sos:resultModel>
20) Changed gml:id of Observation offerings for network to contain "_" instead of "-"
e.g.
Old:
<sos:ObservationOffering gml:id="network-All">
New:
<sos:ObservationOffering gml:id="network_All">
Updated DescriberSensor response for a network
1) Added service version metadata to /sml:SensorML
Old:
None
New:
<sml:capabilities name="ioosServiceMetadata">
<swe:SimpleDataRecord>
<swe:field name="ioosTemplateVersion">
<swe:Text definition="http://code.google.com/p/ioostech/source/browse/#svn%2Ftrunk%2Ftemplates%2FMilestone1.0">
<swe:value>1.0</swe:value>
</swe:Text>
</swe:field>
</swe:SimpleDataRecord>
</sml:capabilities>
2) Removed /sml:SensorML/sml:member/sml:System@gml:id attribute
Old:
<sml:System gml:id="network-WaterLevelActive">
New:
<sml:System>
3) Removed /sml:SensorML/sml:member/sml:System/sml:keywords
Old:
<sml:keywords>
...
</sml:keywords>
New:
None
4) Added /sml:SensorML/sml:member/sml:System/gml:name
Old:
None
New:
<gml:name>urn:ioos:network:NOAA.NOS.CO-OPS:WaterLevelActive</gml:name>
5) Added bounding box information to /sml:SensorML/sml:member/sml:System/
Old:
None
New:
<gml:boundedBy>
<gml:Envelope srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
<gml:lowerCorner>-14.2800 -177.3600</gml:lowerCorner>
<gml:upperCorner>70.4000 167.7362</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
6) Changed 3 identifiers /sml:SensorML/sml:member/sml:identification/sml:IdentifierList/sml:identifier@name attribute values
Old:
<sml:identifier name="Network ID">
<sml:identifier name="Short Name">
<sml:identifier name="Long Name">
New:
<sml:identifier name="networkID">
<sml:identifier name="shortName">
<sml:identifier name="longName">
7) Changed 3 identifiers /sml:SensorML/sml:member/sml:identification/sml:IdentifierList/sml:identifier/sml:Term@definition attribute values
Old:
<sml:Term definition="urn:ioos:def:identifier:NOAA::networkID">
<sml:Term definition="urn:ogc:def:identifier:OGC:shortName">
<sml:Term definition="urn:ogc:def:identifier:OGC:longName">
New:
<sml:Term definition="http://mmisw.org/ont/ioos/definition/networkID">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/shortName">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/longName">
8) Removed /sml:SensorML/sml:member/sml:identification/sml:IdentifierList/sml:identifier@name="networkID"/sml:Term/sml:codeSpace
Old:
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
New:
None
9) Added /sml:SensorML/sml:member/sml:classification/sml:ClassifierList/sml:classifier@name="publisher"
Old:
None
New:
<sml:classifier name="publisher">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/publisher">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/organization" />
<sml:value>NOAA.NOS.CO-OPS</sml:value>
</sml:Term>
</sml:classifier>
10) Added /sml:SensorML/sml:member/sml:classification/sml:ClassifierList/sml:classifier@name="parentNetwork"
Old:
None
New:
<sml:classifier name="parentNetwork">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/parentNetwork">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/organization" />
<sml:value>federal</sml:value>
</sml:Term>
</sml:classifier>
11) Removed /sml:SensorML/sml:member/sml:classification/sml:ClassifierList/sml:classifier@name="Network Observation Type"
Old:
<sml:classifier name="Network Observation Type">
<sml:Term definition="urn:ogc:def:property:OGC">
<sml:codeSpace xlink:href="urn:ogc:def:dictionary:NOAA::NetworkTypes:v01" />
<sml:value>WaterLevelActive</sml:value>
</sml:Term>
</sml:classifier>
New:
None
12) Changed the date range of the validity
Old:
<sml:validTime>
<gml:TimePeriod gml:id="MetadataApplicabilityTime">
<gml:beginPosition indeterminatePosition="now" />
<gml:endPosition indeterminatePosition="now" />
</gml:TimePeriod>
</sml:validTime>
New:
<sml:capabilities name="observationTimeRange">
<swe:DataRecord>
<swe:field name="observationTimeRange">
<swe:TimeRange definition="http://mmisw.org/ont/ioos/swe_element_type/observationTimeRange">
<swe:value>1853-07-10T00:00:00Z 2015-05-18T19:15:03Z</swe:value>
</swe:TimeRange>
</swe:field>
</swe:DataRecord>
</sml:capabilities>
13) Removed old contact "owner", added contact member "operator" and "publisher"
Old:
<sml:contact xlink:role="urn:ogc:def:classifiers:OGC:contactType:owner">
<sml:ResponsibleParty>
<sml:organizationName>Center for Operational Oceanographic Products and Services</sml:organizationName>
<sml:contactInfo>
<sml:phone>
<sml:voice>301-713-2806</sml:voice>
</sml:phone>
<sml:address>
<sml:deliveryPoint>1305 East-West Highway</sml:deliveryPoint>
<sml:city>Silver Spring</sml:city>
<sml:administrativeArea>MD</sml:administrativeArea>
<sml:postalCode>20910-3281</sml:postalCode>
<sml:country>USA</sml:country>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:contact>
New:
<sml:contact>
<sml:ContactList>
<sml:member xlink:role="http://mmisw.org/ont/ioos/definition/operator">
<sml:ResponsibleParty>
<sml:organizationName>Center for Operational Oceanographic Products and Services</sml:organizationName>
<sml:contactInfo>
<sml:address>
<sml:deliveryPoint>1305 East-West Highway</sml:deliveryPoint>
<sml:city>Silver Spring</sml:city>
<sml:administrativeArea>MD</sml:administrativeArea>
<sml:postalCode>20910-3281</sml:postalCode>
<sml:country>USA</sml:country>
<sml:electronicMailAddress>COOPS.IOOS@noaa.gov</sml:electronicMailAddress>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:member>
<sml:member xlink:role="http://mmisw.org/ont/ioos/definition/publisher">
<sml:ResponsibleParty>
<sml:organizationName>NOAA.NOS.CO-OPS</sml:organizationName>
<sml:contactInfo>
<sml:address>
<sml:country>USA</sml:country>
<sml:electronicMailAddress>COOPS.IOOS@noaa.gov</sml:electronicMailAddress>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:member>
</sml:ContactList>
</sml:contact>
14) Changed /sml:SensorML/sml:member/sml:components/<sml:ComponentList/sml:component
Old:
<sml:component name="WaterLevelActive Station 1611400">
<sml:System gml:id="station-1611400">
<gml:description>Nawiliwili, HI</gml:description>
<sml:identification xlink:href="urn:ioos:station:NOAA.NOS.CO-OPS:1611400" />
<sml:documentation xlink:href="http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?service=SOS&request=DescribeSensor&version=1.0.0&outputFormat=text%2Fxml%3Bsubtype%3D%22sensorML%2F1.0.1%22&procedure=urn:ioos:station:NOAA.NOS.CO-OPS:1611400" />
<sml:location>
<gml:Point srsName="urn:ogc:def:crs:epsg::4326" gml:id="LOCATION-1611400">
<gml:coordinates>21.9544 -159.3561</gml:coordinates>
</gml:Point>
</sml:location>
</sml:System>
</sml:component>
New:
<sml:component name="WaterLevelActive Station 1611400">
<sml:System>
<sml:identification>
<sml:IdentifierList>
<sml:identifier name="stationID">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/stationID">
<sml:value>urn:ioos:station:NOAA.NOS.CO-OPS:1611400</sml:value>
</sml:Term>
</sml:identifier>
<sml:identifier name="shortName">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/shortName">
<sml:value>urn:ioos:station:NOAA.NOS.CO-OPS:1611400 station, Nawiliwili, HI</sml:value>
</sml:Term>
</sml:identifier>
</sml:IdentifierList>
</sml:identification>
<sml:capabilities name="observationTimeRange">
<swe:DataRecord>
<swe:field name="observationTimeRange">
<swe:TimeRange definition="http://mmisw.org/ont/ioos/swe_element_type/observationTimeRange">
<swe:value>1954-11-24T00:00:00Z 2015-05-18T14:17:24Z</swe:value>
</swe:TimeRange>
</swe:field>
</swe:DataRecord>
</sml:capabilities>
<sml:location>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
<gml:pos>21.9544 -159.3561</gml:pos>
</gml:Point>
</sml:location>
<sml:outputs>
<sml:OutputList>
<sml:output name="Water Level Predictions">
<swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_surface_height_amplitude_due_to_equilibrium_ocean_tide" />
</sml:output>
<sml:output name="Water Level">
<swe:Quantity definition="http://mmisw.org/ont/cf/parameter/water_surface_height_above_reference_datum" />
</sml:output>
</sml:OutputList>
</sml:outputs>
</sml:System>
</sml:component>
15) Changed /sml:SensorML/sml:member/sml:System/sml:location/gml:Point
Old:
<gml:Point srsName="urn:ogc:def:crs:epsg::4326" gml:id="LOCATION-1611400">
<gml:coordinates>21.9544 -159.3561</gml:coordinates>
</gml:Point>
New:
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
<gml:pos>21.9544 -159.3561</gml:pos>
</gml:Point>
Updated DescriberSensor response for a station
1) Added service version metadata to /sml:SensorML
Old:
None
New:
<sml:capabilities name="ioosServiceMetadata">
<swe:SimpleDataRecord>
<swe:field name="ioosTemplateVersion">
<swe:Text definition="http://code.google.com/p/ioostech/source/browse/#svn%2Ftrunk%2Ftemplates%2FMilestone1.0">
<swe:value>1.0</swe:value>
</swe:Text>
</swe:field>
</swe:SimpleDataRecord>
</sml:capabilities>
2) Removed /sml:SensorML/sml:member/sml:System@gml:id attribute
Old:
<sml:System gml:id="station-8454000">
New:
<sml:System>
3) Changed station description in /sml:SensorML/sml:member/sml:System/gml:description
Old:
<gml:description>Station information for Providence, RI (8454000). Observed data: water_surface_height_above_reference_datum, sea_surface_height_amplitude_due_to_equilibrium_ocean_tide, winds, air_temperature, sea_water_temperature, air_pressure.</gml:description>
New:
<gml:description>Observations at urn:ioos:station:NOAA.NOS.CO-OPS:8454000 station, Providence, RI</gml:description>
4) Added /sml:SensorML/sml:member/sml:System/gml:name
Old:
None
New:
<gml:name>urn:ioos:station:NOAA.NOS.CO-OPS:8454000</gml:name>
5) Removed /sml:SensorML/sml:member/sml:System/sml:keywords
Old:
<sml:keywords>
...
</sml:keywords>
New:
None
6) Changed 3 identifiers /sml:SensorML/sml:member/sml:System/sml:identification/sml:IdentifierList/sml:identifier@name attribute values
Old:
<sml:identifier name="Station ID">
<sml:identifier name="Short Name">
<sml:identifier name="Long Name">
New:
<sml:identifier name="stationID">
<sml:identifier name="shortName">
<sml:identifier name="longName">
7) Changed 3 identifiers /sml:SensorML/sml:member/sml:System/sml:identification/sml:IdentifierList/sml:identifier/sml:Term@definition attribute values
Old:
<sml:Term definition="urn:ioos:def:identifier:NOAA::stationID">
<sml:Term definition="urn:ogc:def:identifier:OGC:shortName">
<sml:Term definition="urn:ogc:def:identifier:OGC:longName">
New:
<sml:Term definition="http://mmisw.org/ont/ioos/definition/stationID">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/shortName">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/longName">
8) Removed /sml:SensorML/sml:member/sml:System/sml:identification/sml:IdentifierList/sml:identifier/sml:Term/sml:codeSpace
Old:
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
New:
None
9) Changed /sml:SensorML/sml:member/sml:System/sml:identification/sml:IdentifierList/sml:identifier@name="longName"/sml:Term/sml:value
Old:
<sml:value>Providence, RI</sml:value>
New:
<sml:value>urn:ioos:station:NOAA.NOS.CO-OPS:8454000 station, Providence, RI</sml:value>
10) Changed the name, term definition, codeSpace for parent network classifier in /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier
Old:
<sml:classifier name="Parent Network">
<sml:Term definition="urn:ioos:def:classifier:NOAA::parentNetwork">
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
<sml:value>urn:ioos:network:NOAA.NOS.CO-OPS:MetActive</sml:value>
</sml:Term>
</sml:classifier>
New:
<sml:classifier name="parentNetwork">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/parentNetwork">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/organization" />
<sml:value>NOAA.NOS.CO-OPS</sml:value>
</sml:Term>
</sml:classifier>
11) Changed /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier@name="System Type Identifier" to "platformType"
Old:
<sml:classifier name="System Type Identifier">
<sml:Term definition="urn:ioos:def:classifier:NOAA::systemTypeID">
<sml:codeSpace xlink:href="http://mmisw.org/ont/mmi/platform/" />
<sml:value>Platform</sml:value>
</sml:Term>
</sml:classifier>
New:
<sml:classifier name="platformType">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/platformType">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/platform" />
<sml:value>platform</sml:value>
</sml:Term>
</sml:classifier>
12) Added /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier@name="operatorSector"
Old:
None
New:
<sml:classifier name="operatorSector">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/operatorSector">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/sector" />
<sml:value>federal</sml:value>
</sml:Term>
</sml:classifier>
13) Removed /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier@name="System Type Name"
Old:
<sml:classifier name="System Type Name">
<sml:Term definition="urn:ioos:def:classifier:NOAA::systemTypeName">
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
<sml:value>CO-OPS Observational System</sml:value>
</sml:Term>
</sml:classifier>
New:
None
14) Added /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier@name="publisher"
Old:
None
New:
<sml:classifier name="publisher">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/publisher">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/organization" />
<sml:value>NOAA.NOS.CO-OPS</sml:value>
</sml:Term>
</sml:classifier>
15) Added /sml:SensorML/sml:member/sml:System/sml:classification/sml:ClassifierList/sml:classifier@name="sponsor"
Old:
None
New:
<sml:classifier name="sponsor">
<sml:Term definition="http://mmisw.org/ont/ioos/definition/sponsor">
<sml:codeSpace xlink:href="http://mmisw.org/ont/ioos/organization" />
<sml:value>NOAA.NOS.CO-OPS</sml:value>
</sml:Term>
</sml:classifier>
16) Changed the date range of the validity
Old:
<sml:validTime>
<gml:TimePeriod gml:id="MetadataApplicabilityTime">
<gml:beginPosition>1938-06-03T00:00:00Z</gml:beginPosition>
<gml:endPosition indeterminatePosition="now" />
</gml:TimePeriod>
</sml:validTime>
New:
<sml:capabilities name="observationTimeRange">
<swe:DataRecord>
<swe:field name="observationTimeRange">
<swe:TimeRange definition="http://mmisw.org/ont/ioos/swe_element_type/observationTimeRange">
<swe:value>1938-06-03T00:00:00Z 2015-05-18T19:05:47Z</swe:value>
</swe:TimeRange>
</swe:field>
</swe:DataRecord>
</sml:capabilities>
17) Added sml:capabilities named "networkProcedures" to list the networks this station belongs to
Old:
<sml:classification>
<sml:ClassifierList>
<sml:classifier name="Parent Network">
<sml:Term definition="urn:ioos:def:classifier:NOAA::parentNetwork">
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
<sml:value>urn:ioos:network:NOAA.NOS.CO-OPS:MetActive</sml:value>
</sml:Term>
</sml:classifier>
<sml:classifier name="Parent Network">
<sml:Term definition="urn:ioos:def:classifier:NOAA::parentNetwork">
<sml:codeSpace xlink:href="http://tidesandcurrents.noaa.gov" />
<sml:value>urn:ioos:network:NOAA.NOS.CO-OPS:WaterLevelActive</sml:value>
</sml:Term>
</sml:classifier>
</sml:ClassifierList>
</sml:classification>
New:
<sml:capabilities name="networkProcedures">
<swe:SimpleDataRecord>
<swe:field name="network_All">
<swe:Text definition="http://mmisw.org/ont/ioos/definition/networkID">
<swe:value>urn:ioos:network:NOAA.NOS.CO-OPS:All</swe:value>
</swe:Text>
</swe:field>
<swe:field name="network_MetActive">
<swe:Text definition="http://mmisw.org/ont/ioos/definition/networkID">
<swe:value>urn:ioos:network:NOAA.NOS.CO-OPS:MetActive</swe:value>
</swe:Text>
</swe:field>
<swe:field name="network_WaterLevelActive">
<swe:Text definition="http://mmisw.org/ont/ioos/definition/networkID">
<swe:value>urn:ioos:network:NOAA.NOS.CO-OPS:WaterLevelActive</swe:value>
</swe:Text>
</swe:field>
</swe:SimpleDataRecord>
</sml:capabilities>
18) Removed old contact "owner", added contact member "operator" and "publisher"
Old:
<sml:contact xlink:role="urn:ogc:def:classifiers:OGC:contactType:owner">
<sml:ResponsibleParty>
<sml:organizationName>Center for Operational Oceanographic Products and Services</sml:organizationName>
<sml:contactInfo>
<sml:phone>
<sml:voice>301-713-2806</sml:voice>
</sml:phone>
<sml:address>
<sml:deliveryPoint>1305 East-West Highway</sml:deliveryPoint>
<sml:city>Silver Spring</sml:city>
<sml:administrativeArea>MD</sml:administrativeArea>
<sml:postalCode>20910-3281</sml:postalCode>
<sml:country>USA</sml:country>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:contact>
New:
<sml:contact>
<sml:ContactList>
<sml:member xlink:role="http://mmisw.org/ont/ioos/definition/operator">
<sml:ResponsibleParty>
<sml:organizationName>Center for Operational Oceanographic Products and Services</sml:organizationName>
<sml:contactInfo>
<sml:address>
<sml:deliveryPoint>1305 East-West Highway</sml:deliveryPoint>
<sml:city>Silver Spring</sml:city>
<sml:administrativeArea>MD</sml:administrativeArea>
<sml:postalCode>20910-3281</sml:postalCode>
<sml:country>USA</sml:country>
<sml:electronicMailAddress>COOPS.IOOS@noaa.gov</sml:electronicMailAddress>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:member>
<sml:member xlink:role="http://mmisw.org/ont/ioos/definition/publisher">
<sml:ResponsibleParty>
<sml:organizationName>NOAA.NOS.CO-OPS</sml:organizationName>
<sml:contactInfo>
<sml:address>
<sml:country>USA</sml:country>
<sml:electronicMailAddress>COOPS.IOOS@noaa.gov</sml:electronicMailAddress>
</sml:address>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov" />
</sml:contactInfo>
</sml:ResponsibleParty>
</sml:member>
</sml:ContactList>
</sml:contact>
19) Changed /sml:SensorML/sml:member/sml:System/sml:documentation/sml:Document to sml:DocumentList/sml:memeber/sml:Document
Old:
None
New:
<sml:member name="qc" xlink:arcrole="http://mmisw.org/ont/ioos/CO-OPSqcFlags">
<sml:Document>
<gml:description>A list of NOAA's Center for Operational Oceanographic Products and Services (CO-OPS) quality control flags</gml:description>
<sml:format>pdf</sml:format>
<sml:onlineResource xlink:href="http://tidesandcurrents.noaa.gov/publications/NOAA_Technical_Report_NOS_CO-OPS_030_QC_requirements_doc(revised)-11102004.pdf" />
</sml:Document>
</sml:member>
Old:
<sml:documentation xlink:arcrole="urn:ogc:def:role:webPage">
<sml:Document>
New:
<sml:member name="wp" xlink:arcrole="urn:ogc:def:role:webPage">
<sml:Document>
Old:
<sml:documentation xlink:arcrole="urn:ogc:def:role:objectImage">
<sml:Document>
New:
<sml:member name="img" xlink:arcrole="urn:ogc:def:role:objectImage">
<sml:Document>
20) Changed /sml:SensorML/sml:member/sml:System/sml:location/gml:Point
Old:
<gml:Point srsName="urn:ogc:def:crs:epsg::4326" gml:id="STATION_LOCATION">
<gml:coordinates>41.8071 -71.4012</gml:coordinates>
</gml:Point>
New:
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
<gml:pos>41.8071 -71.4012</gml:pos>
</gml:Point>
21) Removed /sml:SensorML/sml:member/sml:System/sml:components/sml:ComponentList/sml:component/sml:System/sml:outputs/sml:OutputList/sml:output@name="status"
Old:
<sml:output name="status">
<swe:Boolean>
<swe:value>true</swe:value>
</swe:Boolean>
</sml:output>
New:
None
22) Changed /sml:SensorML/sml:member/sml:System/sml:components/sml:ComponentList/sml:component/sml:System/sml:outputs/sml:OutputList/sml:output/swe:Quantity@definition
Old:
Current Speed: <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_water_speed">
Current Direction <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/direction_of_sea_water_velocity">
Current Platform Heading <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/platform_yaw_angle">
Water level <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_surface_height_above_sea_level">
Water level predictons <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_surface_height_above_sea_level">
Salinity <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_surface_salinity">
New:
Current Speed: <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/current_speed">
Current Direction <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/current_to_direction">
Current Platform Heading <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/platform_orientation">
Water level: <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/water_surface_height_above_reference_datum">
Water level predictons: <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_surface_height_amplitude_due_to_equilibrium_ocean_tide">
Salinity: <swe:Quantity definition="http://mmisw.org/ont/cf/parameter/sea_water_salinity">
Updated DescriberSensor response for a sensor
1) Added gml namespace in /sml:SensorML
Old:
None
New:
<sml:SensorML xmlns:sml="http://www.opengis.net/sensorML/1.0.1" xmlns:gml="http://www.opengis.net/gml" xmlns:swe="http://www.opengis.net/swe/1.0.1"
2) Added /sml:SensorML/sml:memeber
Old:
None
New:
<sml:member>
3) Added sml:System and gml:id attribute in /sml:SensorML/sml:memeber
Old:
None
New:
<sml:System gml:id="sensor-water_surface_height_above_reference_datum">
4) Removed 2 identifiers "longName" and "shorName", changed the identifier "SensorId" to "sensorId"
Old:
<sml:identifier name="longName">
<sml:identifier name="shorName">
<sml:identifier name="SensorId">
New:
<sml:identifier name="sensorId">
5) Removed sml:inputs and sml:outputs elements
6) Combined 4 sml:position/swe:GeoLocation into 1 sml:position/swe:Position/swe:location in /sml:postions/sml:PositionList
Old:
<sml:positions>
<sml:PositionList>
<sml:position name="southwestCorner">
<swe:GeoLocation xmlns:swe="http://www.opengis.net/swe/1.0.2">
<swe:latitude>
<swe:Quantity>41.8071</swe:Quantity>
</swe:latitude>
<swe:longitude>
<swe:Quantity>-71.4012</swe:Quantity>
</swe:longitude>
</swe:GeoLocation>
</sml:position>
<sml:position name="southeastCorner">
<swe:GeoLocation xmlns:swe="http://www.opengis.net/swe/1.0.2">
<swe:latitude>
<swe:Quantity>41.8071</swe:Quantity>
</swe:latitude>
<swe:longitude>
<swe:Quantity>-71.4012</swe:Quantity>
</swe:longitude>
</swe:GeoLocation>
</sml:position>
<sml:position name="northeastCorner">
<swe:GeoLocation xmlns:swe="http://www.opengis.net/swe/1.0.2">
<swe:latitude>
<swe:Quantity>41.8071</swe:Quantity>
</swe:latitude>
<swe:longitude>
<swe:Quantity>-71.4012</swe:Quantity>
</swe:longitude>
</swe:GeoLocation>
</sml:position>
<sml:position name="northwestCorner">
<swe:GeoLocation xmlns:swe="http://www.opengis.net/swe/1.0.2">
<swe:latitude>
<swe:Quantity>41.8071</swe:Quantity>
</swe:latitude>
<swe:longitude>
<swe:Quantity>-71.4012</swe:Quantity>
</swe:longitude>
</swe:GeoLocation>
</sml:position>
</sml:PositionList>
</sml:positions>
New:
<sml:positions>
<sml:PositionList>
<sml:position name="stationPosition">
<swe:Position referenceFrame="http://www.opengis.net/def/crs/EPSG/0/4326">
<swe:location>
<swe:Vector gml:id="STATION_LOCATION" definition="urn:ogc:def:property:OGC:location">
<swe:coordinate name="latitude">
<swe:Quantity axisID="Y">
<swe:uom code="deg" />
<swe:value>41.8071</swe:value>
</swe:Quantity>
</swe:coordinate>
<swe:coordinate name="longitude">
<swe:Quantity axisID="X">
<swe:uom code="deg" />
<swe:value>-71.4012</swe:value>
</swe:Quantity>
</swe:coordinate>
</swe:Vector>
</swe:location>
</swe:Position>
</sml:position>
</sml:PositionList>
</sml:positions>
These changes had been pushed to COOPS-SOS Test version half years ago: http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos-test/
All changes had been pushed to SOS operational version in RIAC project transition (11/8/2015): http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/
I had asked Robert Bassett to inform the IOOS-SOS users before changing SOS test/operational version."
OK. Thanks.
Time to bite the bullet and start re-writing my notebooks and pyoos :disappointed:
Fixed in #228
I am still debugging this but any help is appreciate. (ping @kwilcox and @rsignell-usgs)