SECOORA / skill_score

Prototypes for the SECOORA skill score
MIT License
7 stars 1 forks source link

Unable to run SECOORA notebooks #225

Closed ocefpaf closed 8 years ago

ocefpaf commented 8 years ago

I am still debugging this but any help is appreciate. (ping @kwilcox and @rsignell-usgs)

---------------------------------------------------------------------------
ConnectionError                           Traceback (most recent call last)
<ipython-input-9-55d2ac2eaae3> in <module>()
      1 from pyoos.collectors.coops.coops_sos import CoopsSos
      2 
----> 3 collector = CoopsSos()
      4 
      5 datum = 'NAVD'

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/pyoos-0.6.2-py2.7.egg/pyoos/collectors/coops/coops_sos.pyc in __init__(self, **kwargs)
      4     def __init__(self, **kwargs):
      5         kwargs["url"] = 'http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS'
----> 6         super(CoopsSos,self).__init__(**kwargs)
      7         self._datum = None
      8         self._dataType = None

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/pyoos-0.6.2-py2.7.egg/pyoos/collectors/ioos/swe_sos.pyc in __init__(self, url, xml)
      8     def __init__(self, url, xml=None):
      9         super(IoosSweSos,self).__init__()
---> 10         self.server = Sos(url, xml=xml)
     11 
     12     def metadata(self, output_format=None, feature_name_callback=None, **kwargs):

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/owslib/sos.pyc in SensorObservationService(url, version, xml)
     20     """sos factory function, returns a version specific SensorObservationService object"""
     21     if version in  ['1.0', '1.0.0']:
---> 22         return sos100.SensorObservationService_1_0_0.__new__(sos100.SensorObservationService_1_0_0, url, version, xml)
     23     elif version in ['2.0', '2.0.0']:
     24         return sos200.SensorObservationService_2_0_0.__new__(sos200.SensorObservationService_2_0_0, url, version, xml)

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/owslib/swe/observation/sos100.pyc in __new__(self, url, version, xml, username, password)
     31         """overridden __new__ method"""
     32         obj=object.__new__(self)
---> 33         obj.__init__(url, version, xml, username, password)
     34         return obj
     35 

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/owslib/swe/observation/sos100.pyc in __init__(self, url, version, xml, username, password)
     56             self._capabilities = reader.read_string(xml)
     57         else:  # read from server
---> 58             self._capabilities = reader.read(self.url)
     59 
     60         # Avoid building metadata if the response is an Exception

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/owslib/swe/observation/sos100.pyc in read(self, service_url)
    318         getcaprequest = self.capabilities_url(service_url)
    319         spliturl=getcaprequest.split('?')
--> 320         u = openURL(spliturl[0], spliturl[1], method='Get', username=self.username, password=self.password)
    321         return etree.fromstring(u.read())
    322 

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/owslib/util.py in openURL(url_base, data, method, cookies, username, password, timeout)
    184                            url_base,
    185                            headers=headers,
--> 186                            **rkwargs)
    187 
    188     if req.status_code in [400, 401]:

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/requests/api.py in request(method, url, **kwargs)
     48 
     49     session = sessions.Session()
---> 50     response = session.request(method=method, url=url, **kwargs)
     51     # By explicitly closing the session, we avoid leaving sockets open which
     52     # can trigger a ResourceWarning in some cases, and look like a memory leak

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    466         }
    467         send_kwargs.update(settings)
--> 468         resp = self.send(prep, **send_kwargs)
    469 
    470         return resp

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/requests/sessions.py in send(self, request, **kwargs)
    574 
    575         # Send the request
--> 576         r = adapter.send(request, **kwargs)
    577 
    578         # Total elapsed time of the request (approximately)

/home/filipe/miniconda/envs/secoora-skill/lib/python2.7/site-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    421                 raise RetryError(e, request=request)
    422 
--> 423             raise ConnectionError(e, request=request)
    424 
    425         except ClosedPoolError as e:

ConnectionError: HTTPConnectionPool(host='opendap.co-ops.nos.noaa.gov', port=80): Max retries exceeded with url: /ioos-dif-sos/SOS?service=SOS&request=GetCapabilities&acceptVersions=1.0.0 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f25a81e01d0>: Failed to establish a new connection: [Errno 111] Connection refused',))
rsignell-usgs commented 8 years ago

Hmm, I don't know. Seems like the service is working:

http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?service=SOS&request=GetObservation&version=1.0.0&observedProperty=air_temperature&offering=urn:ioos:station:NOAA.NOS.CO-OPS:8454000&responseFormat=text%2Fcsv&unit=Celsius

ocefpaf commented 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:)

rsignell-usgs commented 8 years ago

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
ocefpaf commented 8 years ago

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
rsignell-usgs commented 8 years ago

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."

ocefpaf commented 8 years ago

I Yep. But I should find some stations with water_surface_height_above_reference_datum, right? Or maybe the variable named changed?

ocefpaf commented 8 years ago

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"

ocefpaf commented 8 years ago

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?

vembus commented 8 years ago

Not sure, may be contact IOOS.Webmaster@noaa.gov as to this??

rsignell-usgs commented 8 years ago

@dpsnowden , do you know who to contact here on these frustrating changing SOS services at CO-OPS?

kwilcox commented 8 years ago

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>
rsignell-usgs commented 8 years ago

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."

ocefpaf commented 8 years ago

OK. Thanks.

Time to bite the bullet and start re-writing my notebooks and pyoos :disappointed:

ocefpaf commented 8 years ago

Fixed in #228