def get_coops(start, end, sos_name, units, bbox, verbose=False): collector = CoopsSos() collector.set_bbox(bbox) collector.end_time = end collector.start_time = start collector.variables = [sos_name] ofrs = collector.server.offerings title = collector.server.identification.title config = dict(units=units, sos_name=sos_name,) data = collector2table( collector=collector, config=config, col="{} ({})".format(sos_name, units.format(cf_units.UT_ISO_8859_1)), ) # Clean the table. table = dict( station_name=[s._metadata.get("station_name") for s in data], station_code=[s._metadata.get("station_code") for s in data], sensor=[s._metadata.get("sensor") for s in data], lon=[s._metadata.get("lon") for s in data], lat=[s._metadata.get("lat") for s in data], depth=[s._metadata.get("depth", "NA") for s in data], ) table = pd.DataFrame(table).set_index("station_name") if verbose: print("Collector offerings") print("{}: {} offerings".format(title, len(ofrs))) return data, table
def get_coops(start, end, sos_name, units, bbox, verbose=False): """ function to read COOPS data We need to retry in case of failure b/c the server cannot handle the high traffic during hurricane season. """ print(' >> Get CO-OPS information') collector = CoopsSos() collector.set_bbox(bbox) collector.end_time = end collector.start_time = start collector.variables = [sos_name] ofrs = collector.server.offerings title = collector.server.identification.title config = dict( units=units, sos_name=sos_name, datum='MSL', ###Saeed added ) data = collector2table( collector=collector, config=config, col='{} ({})'.format(sos_name, units.format(cf_units.UT_ISO_8859_1)) ) # Clean the table. table = dict( station_name = [s._metadata.get('station_name') for s in data], station_code = [s._metadata.get('station_code') for s in data], sensor = [s._metadata.get('sensor') for s in data], lon = [s._metadata.get('lon') for s in data], lat = [s._metadata.get('lat') for s in data], depth = [s._metadata.get('depth', 'NA') for s in data], ) table = pd.DataFrame(table).set_index('station_name') if verbose: print('Collector offerings') print('{}: {} offerings'.format(title, len(ofrs))) return data, table
config = dict( units=units, sos_name=sos_name, datum='MSL', ###Saeed added ) data = collector2table( collector=collector, config=config, col='{} ({})'.format(sos_name, units.format(cf_units.UT_ISO_8859_1)) ) # Clean the table. table = dict( station_name = [s._metadata.get('station_name') for s in data], station_code = [s._metadata.get('station_code') for s in data], sensor = [s._metadata.get('sensor') for s in data], lon = [s._metadata.get('lon') for s in data], lat = [s._metadata.get('lat') for s in data], depth = [s._metadata.get('depth', 'NA') for s in data], ) table = pd.DataFrame(table).set_index('station_name') if verbose:
collector_coops.start_time = config["date"]["start"] collector_coops.variables = [config["sos_name"]] ofrs = collector_coops.server.offerings title = collector_coops.server.identification.title print(fmt(" Collector offerings ")) print("{}: {} offerings".format(title, len(ofrs))) To make it easier to work with the data we extract the time-series as pandas tables and interpolate them to a common 1-hour interval index. import pandas as pd from ioos_tools.ioos import collector2table data = collector2table( collector=collector_coops, config=config, col="water_surface_height_above_reference_datum (m)", ) df = dict( station_name=[s._metadata.get("station_name") for s in data], station_code=[s._metadata.get("station_code") for s in data], sensor=[s._metadata.get("sensor") for s in data], lon=[s._metadata.get("lon") for s in data], lat=[s._metadata.get("lat") for s in data], depth=[s._metadata.get("depth") for s in data], ) pd.DataFrame(df).set_index("station_code") index = pd.date_range(
collector_ndbc.set_bbox(config["region"]["bbox"]) collector_ndbc.end_time = config["date"]["stop"] collector_ndbc.start_time = config["date"]["start"] collector_ndbc.variables = [config["sos_name"]] ofrs = collector_ndbc.server.offerings title = collector_ndbc.server.identification.title print(fmt(" NDBC Collector offerings ")) print("{}: {} offerings".format(title, len(ofrs))) import pandas as pd from ioos_tools.ioos import collector2table ndbc = collector2table( collector=collector_ndbc, config=config, col="sea_water_temperature (C)" ) if ndbc: data = dict( station_name=[s._metadata.get("station_name") for s in ndbc], station_code=[s._metadata.get("station_code") for s in ndbc], sensor=[s._metadata.get("sensor") for s in ndbc], lon=[s._metadata.get("lon") for s in ndbc], lat=[s._metadata.get("lat") for s in ndbc], depth=[s._metadata.get("depth") for s in ndbc], ) table = pd.DataFrame(data).set_index("station_code") table
collector_ndbc.set_bbox(config["region"]["bbox"]) collector_ndbc.end_time = config["date"]["stop"] collector_ndbc.start_time = config["date"]["start"] collector_ndbc.variables = [config["sos_name"]] ofrs = collector_ndbc.server.offerings title = collector_ndbc.server.identification.title print(fmt(" NDBC Collector offerings ")) print("{}: {} offerings".format(title, len(ofrs))) import pandas as pd from ioos_tools.ioos import collector2table ndbc = collector2table( collector=collector_ndbc, config=config, col="sea_surface_wave_significant_height (m)", ) if ndbc: data = dict( station_name=[s._metadata.get("station_name") for s in ndbc], station_code=[s._metadata.get("station_code") for s in ndbc], sensor=[s._metadata.get("sensor") for s in ndbc], lon=[s._metadata.get("lon") for s in ndbc], lat=[s._metadata.get("lat") for s in ndbc], depth=[s._metadata.get("depth") for s in ndbc], ) table = pd.DataFrame(data).set_index("station_code") table