There are three examples below to help you manipulating the eddy files.
The examples can be downloaded here.
1: Allowing you the extraction of one eddy trajectory and store it in another file:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xarray as xr
import numpy as np
from datetime import datetime
# Load dataset with xarray
with xr.open_dataset('eddy_trajectory_nrt_3.0exp_cyclonic_20180101_20190828.nc', decode_cf=False) as h: lon_min, lon_max, lat_min, lat_max = 1, 5, -28, -27 t = 25150 # Select a specific eddy with date and area, only some observations subset = h.sel(obs=(h.longitude > lon_min) & (h.longitude < lon_max) & (h.latitude > lat_min) & (h.latitude < lat_max) & (h.time == 25147)) # Extract full track subset = h.isel(obs=np.in1d(h.track, subset.track)) # Store selected data print(subset) subset.to_netcdf('output_eddy.nc')
2: Allowing you plotting the selected eddy trajectory:
#!/usr/bin/env python # -*- coding: utf-8 -*- import xarray as xr from matplotlib import pyplot as plt # Load dataset with xarray ax = plt.subplot(111) with xr.open_dataset('output_eddy.nc') as h: N = 20 # plot contour every N ax.plot((h.speed_contour_longitude[::N].T + 180) % 360 - 180, h.speed_contour_latitude[::N].T, 'r') # plot path ax.plot((h.longitude + 180) % 360 - 180, h.latitude, 'b', label='eddy path') ax.set_aspect('equal') ax.legend() ax.grid() plt.show()
3: More advanced: Allowing you plotting a given eddy filtered track superimposed to its real track, and selecting all eddies on an area and having lifespan more than 500 days or amplitude >40cm:


