{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "NQK68g77TJhn"
},
"source": [
"# **Mapping Ocean Observation Platforms in the Souther Ocean** #"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For an interactive version of this page please visit the Google Colab: \n",
"[ Open in Google Colab ](https://colab.research.google.com/drive/1PPNry7Te5d7yA_pbA7BUJ-3peevFC8QD)
\n",
"(To open link in new tab press Ctrl + click)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively this notebook can be opened with Binder by following the link:\n",
"[Mapping Ocean Observation Platforms in the Souther Ocean](https://mybinder.org/v2/gh/s4oceanice/literacy.s4oceanice/main?urlpath=%2Fdoc%2Ftree%2Fnotebooks_binder%2Foceanice_platforms.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MmOcZSrnTK7t"
},
"source": [
"**Purpose**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6lHiae4YTN3N"
},
"source": [
"This notebook provides tools to explore, filter and visualize ocean observation platforms using metadata from the OCEAN ICE ERDDAP server.\n",
"\n",
"Users can:\n",
"\n",
"* **Select specific datasets or view all available platforms.**\n",
"* **Filter platforms by temporal coverage (start and end years).**\n",
"* **Analyze the number of active platforms per year.**\n",
"* **Map the geospatial footprints and centroids of platforms on an Antarctic base map.**\n",
"\n",
"The goal is to provide a clear overview of when and where observational platforms have been active, supporting both data discovery and scientific analysis in polar and global ocean studies."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_MIX26Z-TQss"
},
"source": [
"**Data sources**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "G0sEsPjSTVq_"
},
"source": [
"The notebook uses the PLATFORMS_METADATA table from the OCEAN ICE ERDDAP server.\n",
"\n",
"This metadata collection provides:\n",
"\n",
"* Dataset identifiers (e.g., ARGO floats, moorings, CTDs).\n",
"* Temporal coverage (`time_coverage_start` and `time_coverage_end`) for each dataset.\n",
"* Geospatial extent (`latitude_min/max`, `longitude_min/max`).\n",
"* Platform information (name, type and related metadata).\n",
"\n",
"By combining the time and spatial metadata, the notebook reconstructs each platform’s active period and operating area, enabling tracking of observational efforts through time and across regions."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MpzMj4u9Td4s"
},
"source": [
"**Instructions to use this Notebook**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "s66FwUgvTeZf"
},
"source": [
"Run each code cell by clicking the **Play button** (▶️) on the left side of each grey code block. This will execute the code in order and allow all features to work properly."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wddzRj8PTlW0"
},
"source": [
"**Explaining the code**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TME9pm28Tn_D"
},
"source": [
"**1. Install required libraries**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fZp8EtsUTuOF"
},
"source": [
"This section sets up the notebook for map-based analysis and plotting. Libraries enable drawing maps, overlaying geometric shapes (bounding boxes) and building interactive controls:\n",
"\n",
"* **Geospatial and mapping:** shapely.geometry.box, geopandas, cartopy.crs, cartopy.feature, matplotlib.pyplot.\n",
"* **Interactive widgets:** ipywidgets, IPython.display.display.\n",
"* **Data Handling:** pandas, requests, io."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"collapsed": true,
"id": "bAZpYPc46Kw3"
},
"outputs": [],
"source": [
"# @title\n",
"%%capture\n",
"!pip install cartopy\n",
"from shapely.geometry import box\n",
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"import matplotlib.pyplot as plt\n",
"import cartopy.crs as ccrs\n",
"import cartopy.feature as cfeature\n",
"import matplotlib.pyplot as plt\n",
"import geopandas as gpd\n",
"import pandas as pd\n",
"import requests\n",
"import io"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ml69koCqTwX1"
},
"source": [
"**2. Load and inspect platform metadata from ERDDAP**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sPI9XJvHT0Kf"
},
"source": [
"Retrieve the metadata of all available ocean platforms, prepare it for queries and extract key information such as dataset names and temporal coverage."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "vaDeAV8mvoMV",
"outputId": "aaf2b39f-a333-455e-ebc1-b462a4dfb2f0"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"repr_error": "0",
"type": "dataframe",
"variable_name": "platforms_meta_df"
},
"text/html": [
"\n",
"
\n", " | platform | \n", "dataset | \n", "time_coverage_start | \n", "time_coverage_end | \n", "geospatial_latitude_min | \n", "geospatial_latitude_max | \n", "geospatial_longitude_min | \n", "geospatial_longitude_max | \n", "
---|---|---|---|---|---|---|---|---|
1 | \n", "AM83_CoreB | \n", "AAD_ASPeCt-Bio_historical | \n", "1983-11-15T00:00:00Z | \n", "1983-11-15T00:00:00Z | \n", "-62.1800 | \n", "-62.1800 | \n", "-36.5900 | \n", "-36.5900 | \n", "
2 | \n", "AM83_CoreC | \n", "AAD_ASPeCt-Bio_historical | \n", "1983-11-15T00:00:00Z | \n", "1983-11-15T00:00:00Z | \n", "-62.1800 | \n", "-62.1800 | \n", "-36.5900 | \n", "-36.5900 | \n", "
3 | \n", "AM83_CoreF | \n", "AAD_ASPeCt-Bio_historical | \n", "1983-11-16T00:00:00Z | \n", "1983-11-16T00:00:00Z | \n", "-61.5900 | \n", "-61.5900 | \n", "-36.2700 | \n", "-36.2700 | \n", "
4 | \n", "AM83_CoreG | \n", "AAD_ASPeCt-Bio_historical | \n", "1983-11-16T00:00:00Z | \n", "1983-11-16T00:00:00Z | \n", "-61.5900 | \n", "-61.5900 | \n", "-36.2700 | \n", "-36.2700 | \n", "
5 | \n", "AM83_CoreH | \n", "AAD_ASPeCt-Bio_historical | \n", "1983-11-16T00:00:00Z | \n", "1983-11-16T00:00:00Z | \n", "-61.5900 | \n", "-61.5900 | \n", "-36.2700 | \n", "-36.2700 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
18210 | \n", "990004 | \n", "NPI_Iceberg_database | \n", "2000-02-23T10:00:00Z | \n", "2000-03-17T03:15:00Z | \n", "-68.4833 | \n", "-62.7333 | \n", "-69.6333 | \n", "-60.1500 | \n", "
18211 | \n", "990005 | \n", "NPI_Iceberg_database | \n", "1999-11-26T12:00:00Z | \n", "2000-04-03T12:00:00Z | \n", "-77.2000 | \n", "-52.0000 | \n", "-66.0000 | \n", "-5.0000 | \n", "
18212 | \n", "990006 | \n", "NPI_Iceberg_database | \n", "2000-01-14T06:00:00Z | \n", "2000-04-08T06:00:00Z | \n", "-65.6167 | \n", "-39.7000 | \n", "-69.3333 | \n", "-29.0000 | \n", "
18213 | \n", "990007 | \n", "NPI_Iceberg_database | \n", "2000-01-12T18:00:00Z | \n", "2000-03-07T06:00:00Z | \n", "-70.4333 | \n", "-52.1167 | \n", "-18.7000 | \n", "25.4167 | \n", "
18214 | \n", "990008 | \n", "NPI_Iceberg_database | \n", "1999-12-09T01:25:00Z | \n", "2000-03-11T23:57:00Z | \n", "-68.8833 | \n", "-58.7000 | \n", "38.7333 | \n", "149.9167 | \n", "
18214 rows × 8 columns
\n", "