Baltic Sea Drift – Preparation#
We’ll download a subset of the Baltic Sea Physics Analysis and Forecast dataset dataset which only covers a few days at 3 hour resolution.
import copernicusmarine
import xarray as xr
/miniconda3/envs/jupyter/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
from .autonotebook import tqdm as notebook_tqdm
copernicusmarine.login()
INFO - 2025-06-28T15:56:04Z - Downloading Copernicus Marine data requires a Copernicus Marine username and password, sign up for free at: https://data.marine.copernicus.eu/register
Copernicus Marine username:
Copernicus Marine password:
INFO - 2025-06-28T15:56:17Z - Credentials file stored in /home/jovyan/.copernicusmarine/.copernicusmarine-credentials.
True
ds = copernicusmarine.open_dataset(dataset_id="cmems_mod_bal_phy_anfc_PT1H-i")
ds
INFO - 2025-06-28T15:56:19Z - Selected dataset version: "202411"
INFO - 2025-06-28T15:56:19Z - Selected dataset part: "default"
<xarray.Dataset> Size: 15TB
Dimensions: (depth: 56, latitude: 774, longitude: 763, time: 22668)
Coordinates:
* depth (depth) float32 224B 0.5016 1.516 2.548 ... 663.9 688.0 712.0
* latitude (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
* longitude (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
* time (time) datetime64[ns] 181kB 2022-12-02T13:00:00 ... 2025-07-04
Data variables:
bottomT (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
mlotst (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
siconc (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
sithick (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
sla (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
so (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
sob (time, latitude, longitude) float32 54GB dask.array<chunksize=(2, 774, 763), meta=np.ndarray>
thetao (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
uo (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
vo (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
wo (time, depth, latitude, longitude) float32 3TB dask.array<chunksize=(2, 56, 774, 763), meta=np.ndarray>
Attributes:
references: https://marine.copernicus.eu/
comment: Data on cropped native product grid. Horizontal velocities ...
title: CMEMS NEMO hourly model fields
contact: servicedesk.cmems@mercator-ocean.eu
source: CMEMS BAL MFC NEMO model output converted to NetCDF
Conventions: CF-1.0
institution: Baltic MFC, PU Swedish Meteorological and Hydrological Inst...ds_uv = (
ds
[["uo", "vo"]]
.sel(time=slice("2023-01-01T00:00:00", "2023-01-10T00:00:00"))
.isel(time=slice(None, None, 3))
.sel(depth=5, method="nearest")
.rename({"uo": "u", "vo": "v"})
)
ds_uv
<xarray.Dataset> Size: 345MB
Dimensions: (time: 73, latitude: 774, longitude: 763)
Coordinates:
depth float32 4B 4.684
* latitude (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
* longitude (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
* time (time) datetime64[ns] 584B 2023-01-01 ... 2023-01-10
Data variables:
u (time, latitude, longitude) float32 172MB dask.array<chunksize=(1, 774, 763), meta=np.ndarray>
v (time, latitude, longitude) float32 172MB dask.array<chunksize=(1, 774, 763), meta=np.ndarray>
Attributes:
references: https://marine.copernicus.eu/
comment: Data on cropped native product grid. Horizontal velocities ...
title: CMEMS NEMO hourly model fields
contact: servicedesk.cmems@mercator-ocean.eu
source: CMEMS BAL MFC NEMO model output converted to NetCDF
Conventions: CF-1.0
institution: Baltic MFC, PU Swedish Meteorological and Hydrological Inst...ds_uv.nbytes / 1e6
344.894944
%%time
ds_uv = ds_uv.compute()
CPU times: user 2min 44s, sys: 19.8 s, total: 3min 4s
Wall time: 4min 48s
!mkdir -p /home/jovyan/shared_materials/projects_data/
ds_uv.drop_encoding().to_netcdf("/home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc")
ds_uv = xr.open_dataset("/home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc")
ds_uv
<xarray.Dataset> Size: 345MB
Dimensions: (time: 73, latitude: 774, longitude: 763)
Coordinates:
depth float32 4B ...
* latitude (latitude) float32 3kB 53.01 53.02 53.04 ... 65.86 65.87 65.89
* longitude (longitude) float32 3kB 9.042 9.069 9.097 ... 30.15 30.18 30.21
* time (time) datetime64[ns] 584B 2023-01-01 ... 2023-01-10
Data variables:
u (time, latitude, longitude) float32 172MB ...
v (time, latitude, longitude) float32 172MB ...
Attributes:
references: https://marine.copernicus.eu/
comment: Data on cropped native product grid. Horizontal velocities ...
title: CMEMS NEMO hourly model fields
contact: servicedesk.cmems@mercator-ocean.eu
source: CMEMS BAL MFC NEMO model output converted to NetCDF
Conventions: CF-1.0
institution: Baltic MFC, PU Swedish Meteorological and Hydrological Inst...!ls -lah /home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc
-rw-r--r-- 1 jovyan jovyan 329M Jun 28 18:01 /home/jovyan/shared_materials/projects_data/01_baltic_sea_particle_drift_flow.nc