Uses a 52North SOS service hosting IOOS data (http://ioossos.axiomalaska.com)
%matplotlib inline
from owslib.sos import SensorObservationService
from owslib.swe.observation.sos200 import SOSGetObservationResponse
#service = SensorObservationService('http://geoviqua.dev.52north.org/SOS-Q/sos/kvp',version='2.0.0')
service = SensorObservationService('http://ioossos.axiomalaska.com/52n-sos-ioos-stable/sos/kvp',version='2.0.0')
service.contents
{'urn:ioos:network:test:all': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119d6f50>, 'urn:ioos:station:test:0': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119db590>, 'urn:ioos:station:test:1': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119db710>, 'urn:ioos:station:test:2': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119db810>, 'urn:ioos:station:test:3': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119db910>, 'urn:ioos:station:test:4': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dba10>, 'urn:ioos:station:test:5': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dbb10>, 'urn:ioos:station:test:6': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dbc10>, 'urn:ioos:station:test:7': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dbd10>, 'urn:ioos:station:test:8': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dbe10>, 'urn:ioos:station:test:9': <owslib.swe.observation.sos200.SosObservationOffering at 0x1119dbf10>}
response = service.get_observation(responseFormat='http://www.opengis.net/waterml/2.0', offerings=['urn:ioos:station:test:8'], observedProperties=['http://mmisw.org/ont/cf/parameter/sea_water_temperature'])
from owslib.etree import etree
import pandas as pd
from pandas import Series
et = etree.fromstring(response)
parsed_response = SOSGetObservationResponse(et)
parsed_response.observations[0]
<owslib.swe.observation.waterml2.MeasurementTimeseriesObservation at 0x11274ded0>
for o in parsed_response.observations[0:2]:
series = o.get_result()
dates = [p.datetime for p in series]
values = [p.value for p in series]
series = pd.Series(values, index=dates)
series.plot()
response = service.get_observation(responseFormat='http://www.opengis.net/om/2.0', offerings=['urn:ioos:station:test:8'], observedProperties=['http://mmisw.org/ont/cf/parameter/sea_water_temperature'])
et = etree.fromstring(response)
parsed_response = SOSGetObservationResponse(et)
parsed_response.observations[0]
<owslib.swe.observation.om.OM_MeasurementObservation at 0x1126c2550>