Esempio n. 1
0
class NdbcSosTest(unittest.TestCase):
    def setUp(self):
        self.c = NdbcSos()

    def test_ndbc_server_id(self):
        assert (
            self.c.server.identification.title
            == "National Data Buoy Center SOS"
        )
        assert self.c.server.identification.service == "OGC:SOS"
        assert self.c.server.identification.version == "1.0.0"
        assert (
            self.c.server.identification.abstract
            == "National Data Buoy Center SOS"
        )
        assert self.c.server.identification.fees == "NONE"
        assert self.c.server.identification.accessconstraints == "NONE"

    def test_ndbc_describe_sensor(self):
        self.c.features = ["41012"]
        response = self.c.metadata(
            output_format='text/xml;subtype="sensorML/1.0.1"'
        )
        assert isinstance(response, list)
        assert isinstance(response[0], SensorML)

    def test_raw_ndbc_get_observation(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features = ["41012"]
        self.c.variables = ["air_pressure_at_sea_level"]

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)
        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"  # noqa
        urn:ioos:station:wmo:41012,urn:ioos:sensor:wmo:41012::baro1,30.04,-80.55,2012-10-01T00:50:00Z,0.00,1009.8
        """
        data = list(csv.DictReader(io.StringIO(response)))
        assert data[0]["station_id"] == "urn:ioos:station:wmo:41012"
        assert data[0]["sensor_id"] == "urn:ioos:sensor:wmo:41012::baro1"
        assert data[0]["date_time"] == "2012-10-01T00:50:00Z"
        assert data[0]["depth (m)"] == "0.00"
        assert data[0]["air_pressure_at_sea_level (hPa)"] == "1009.8"

    def test_raw_ndbc_get_observation_all_stations(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        # TODO: This should not return all stations in the future.  We should make multiple requests.
        self.c.features = ["32st0", "41012"]  # Triggers network-all
        self.c.variables = ["air_pressure_at_sea_level"]

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list({x["station_id"] for x in data})
        # 264 stations measured air_pressure that day
        assert len(stations) == 264

        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"  # noqa
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]["station_id"] == "urn:ioos:station:wmo:32st0"
        assert data[0]["sensor_id"] == "urn:ioos:sensor:wmo:32st0::baro1"
        assert data[0]["date_time"] == "2012-10-01T00:00:00Z"
        assert data[0]["depth (m)"] == "-2.44"
        assert data[0]["air_pressure_at_sea_level (hPa)"] == "1019.0"

    def test_raw_ndbc_get_observation_no_stations(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features = []  # Triggers network-all
        self.c.variables = ["air_pressure_at_sea_level"]

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list({x["station_id"] for x in data})
        # 264 stations measured air_pressure that day
        assert len(stations) == 264

        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"  # noqa
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]["station_id"] == "urn:ioos:station:wmo:32st0"
        assert data[0]["sensor_id"] == "urn:ioos:sensor:wmo:32st0::baro1"
        assert data[0]["date_time"] == "2012-10-01T00:00:00Z"
        assert data[0]["depth (m)"] == "-2.44"
        assert data[0]["air_pressure_at_sea_level (hPa)"] == "1019.0"
Esempio n. 2
0
class NdbcSosTest(unittest.TestCase):

    def setUp(self):
        self.c = NdbcSos()

    def test_ndbc_server_id(self):
        assert self.c.server.identification.title == "National Data Buoy Center SOS"
        assert self.c.server.identification.service == 'OGC:SOS'
        assert self.c.server.identification.version == '1.0.0'
        assert self.c.server.identification.abstract == 'National Data Buoy Center SOS'
        # assert self.c.server.identification.keywords == ['Weather', 'Ocean Currents', 'Air Temperature', 'Water Temperature', 'Conductivity', 'Salinity', 'Barometric Pressure', 'Water Level', 'Waves', 'Winds', 'NDBC']
        assert self.c.server.identification.fees == 'NONE'
        assert self.c.server.identification.accessconstraints == 'NONE'

    def test_ndbc_describe_sensor(self):
        self.c.features = ['41012']
        response = self.c.metadata(output_format='text/xml;subtype="sensorML/1.0.1"')
        assert isinstance(response, list)
        assert isinstance(response[0], SensorML)

    def test_raw_ndbc_get_observation(self):
        self.c.start_time   = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time     = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features     = ['41012']
        self.c.variables    = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)
        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:41012,urn:ioos:sensor:wmo:41012::baro1,30.04,-80.55,2012-10-01T00:50:00Z,0.00,1009.8
        """
        data = list(csv.DictReader(io.StringIO(response)))
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:41012'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:41012::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:50:00Z"
        assert data[0]['depth (m)'] == "0.00"
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1009.8"

    def test_raw_ndbc_get_observation_all_stations(self):
        self.c.start_time   = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time     = datetime.strptime("2012-10-02", "%Y-%m-%d")
        # TODO: This should not return all stations in the future.  We should make multiple requests.
        self.c.features     = ['32st0', '41012']  # Triggers network-all
        self.c.variables    = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list(set([x['station_id'] for x in data]))
        # 265 stations measured air_pressure that day
        assert len(stations) == 265

        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:32st0'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:32st0::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:00:00Z"
        assert data[0]['depth (m)'] == ""
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1019.0"

    def test_raw_ndbc_get_observation_no_stations(self):
        self.c.start_time   = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time     = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features     = []  # Triggers network-all
        self.c.variables    = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list(set([x['station_id'] for x in data]))
        # 265 stations measured air_pressure that day
        assert len(stations) == 265

        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:32st0'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:32st0::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:00:00Z"
        assert data[0]['depth (m)'] == ""
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1019.0"
Esempio n. 3
0
class NdbcSosTest(unittest.TestCase):
    def setUp(self):
        self.c = NdbcSos()

    def test_ndbc_server_id(self):
        assert self.c.server.identification.title == "National Data Buoy Center SOS"
        assert self.c.server.identification.service == 'OGC:SOS'
        assert self.c.server.identification.version == '1.0.0'
        assert self.c.server.identification.abstract == 'National Data Buoy Center SOS'
        # assert self.c.server.identification.keywords == ['Weather', 'Ocean Currents', 'Air Temperature', 'Water Temperature', 'Conductivity', 'Salinity', 'Barometric Pressure', 'Water Level', 'Waves', 'Winds', 'NDBC']
        assert self.c.server.identification.fees == 'NONE'
        assert self.c.server.identification.accessconstraints == 'NONE'

    def test_ndbc_describe_sensor(self):
        self.c.features = ['41012']
        response = self.c.metadata(
            output_format='text/xml;subtype="sensorML/1.0.1"')
        assert isinstance(response, list)
        assert isinstance(response[0], SensorML)

    def test_raw_ndbc_get_observation(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features = ['41012']
        self.c.variables = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)
        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:41012,urn:ioos:sensor:wmo:41012::baro1,30.04,-80.55,2012-10-01T00:50:00Z,0.00,1009.8
        """
        data = list(csv.DictReader(io.StringIO(response)))
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:41012'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:41012::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:50:00Z"
        assert data[0]['depth (m)'] == "0.00"
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1009.8"

    def test_raw_ndbc_get_observation_all_stations(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        # TODO: This should not return all stations in the future.  We should make multiple requests.
        self.c.features = ['32st0', '41012']  # Triggers network-all
        self.c.variables = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list(set([x['station_id'] for x in data]))
        # 265 stations measured air_pressure that day
        assert len(stations) == 265
        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:32st0'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:32st0::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:00:00Z"
        assert data[0]['depth (m)'] == ""
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1019.0"

    def test_raw_ndbc_get_observation_no_stations(self):
        self.c.start_time = datetime.strptime("2012-10-01", "%Y-%m-%d")
        self.c.end_time = datetime.strptime("2012-10-02", "%Y-%m-%d")
        self.c.features = []  # Triggers network-all
        self.c.variables = ['air_pressure_at_sea_level']

        response = self.c.raw(responseFormat="text/csv").decode()
        assert isinstance(response, string_types)

        data = list(csv.DictReader(io.StringIO(response)))
        stations = list(set([x['station_id'] for x in data]))
        # 265 stations measured air_pressure that day
        assert len(stations) == 265
        """
        station_id,sensor_id,"latitude (degree)","longitude (degree)",date_time,"depth (m)","air_pressure_at_sea_level (hPa)"
        urn:ioos:station:wmo:32st0,urn:ioos:sensor:wmo:32st0::baro1,-19.713,-85.585,2012-10-01T00:00:00Z,,1019.0
        """
        assert data[0]['station_id'] == 'urn:ioos:station:wmo:32st0'
        assert data[0]['sensor_id'] == 'urn:ioos:sensor:wmo:32st0::baro1'
        assert data[0]['date_time'] == "2012-10-01T00:00:00Z"
        assert data[0]['depth (m)'] == ""
        assert data[0]['air_pressure_at_sea_level (hPa)'] == "1019.0"