IOC¶
The Sea level station monitoring facility website is focused on operational monitoring of sea level measuring stations across the globe on behalf of the Intergovernmental Oceanographic Commission (IOC) aggregating data from more than 170 providers.
A list of IOC stations is provided with the get_ioc_stations() function with various subsetting options.
- searvey.ioc.get_ioc_stations(region: Polygon | MultiPolygon | None = None, lon_min: float | None = None, lon_max: float | None = None, lat_min: float | None = None, lat_max: float | None = None) GeoDataFrame¶
Return IOC station metadata from: http://www.ioc-sealevelmonitoring.org/list.php?showall=all
If region is defined then the stations that are outside of the region are filtered out.. If the coordinates of the Bounding Box are defined then stations outside of the BBox are filtered out. If both
regionand the Bounding Box are defined, then an exception is raised.Note: The longitudes of the IOC stations are in the [-180, 180] range.
- Parameters:
region –
PolygonorMultiPolygondenoting region of interestlon_min – The minimum Longitude of the Bounding Box.
lon_max – The maximum Longitude of the Bounding Box.
lat_min – The minimum Latitude of the Bounding Box.
lat_max – The maximum Latitude of the Bounding Box.
- Returns:
pandas.DataFramewith the station metadata
The station data can be retrieved with
- searvey.ioc.get_ioc_data(ioc_metadata: ~pandas.core.frame.DataFrame, endtime: str | ~datetime.date | ~datetime.datetime | ~pandas._libs.tslibs.timestamps.Timestamp = 'now', period: float = 1, truncate_seconds: bool = True, rate_limit: ~searvey.rate_limit.RateLimit = <searvey.rate_limit.RateLimit object>, disable_progress_bar: bool = False) Dataset¶
Return the data of the stations specified in
ioc_metadataas anxr.Dataset.truncate_secondsneeds some explaining. IOC has more than 1000 stations. When you retrieve data from all (or at least most of) these stations, you end up with thousands of timestamps that only contain a single datapoint. This means that the returnedxr.Datasetwill contain a huge number ofNaNwhich means that you will need a huge amount of RAM.In order to reduce the amount of the required RAM we reduce the number of timestamps by truncating the seconds. This is how this works:
2014-01-03 14:53:02 -> 2014-01-03 14:53:00 2014-01-03 14:53:32 -> 2014-01-03 14:53:00 2014-01-03 14:53:48 -> 2014-01-03 14:53:00 2014-01-03 14:54:09 -> 2014-01-03 14:54:00 2014-01-03 14:54:48 -> 2014-01-03 14:54:00
Nevertheless this approach has a downside. If a station returns multiple datapoints within the same minute, then we end up with duplicate timestamps. When this happens we only keep the first datapoint and drop the subsequent ones. So potentially you may not retrieve all of the available data.
If you don’t want this behavior, set
truncate_secondstoFalseand you will retrieve the full data.- Parameters:
ioc_metadata – A
pd.DataFramereturned byget_ioc_stationsendtime – The date of the “end” of the data. Defaults to
datetime.date.today()period – The number of days to be requested. IOC does not support values greater than 30
truncate_seconds – If
Truethen timestamps are truncated to minutes (seconds are dropped)rate_limit – The default rate limit is 5 requests/second.
disable_progress_bar – If
Truethen the progress bar is not displayed.