The current way to retrieve CyclObs data is to use the getData command line API. The API endpoint is https://cyclobs.ifremer.fr/app/api/getData

Notebook installation

conda create -n cyclobs python=3 cartopy

conda activate cyclobs

pip install xarray netcdf4 geoviews pandas rioxarray tqdm ipywidgets

wget https://gitlab.ifremer.fr/cyclobs/user_manual/-/raw/master/user_manual.ipynb

To start the notebook :

jupyter notebook

getData API usage

This API endpoint is used to retrieve data from our database. The endpoint is aimed to be called from command line as it returns a string in a csv-like format with comma as a separator. The getData API will not download the cyclone acquisitions for you, but it will give you files URLs where they can be downloaded and other useful information about these acquisitions (concerned cyclone, acquisition date, ...)

Various parameters (described further below) are available to modify the output format and filter the results.

Endpoint output example

1 - To retrieve the acquisitions for the cyclones named IDAI :

In [1]:
import pandas as pd
request_url = "https://cyclobs.ifremer.fr/app/api/getData?cyclone_name=IDAI"
pd.read_csv(request_url)
Out[1]:
cyclone_name data_url
0 IDAI https://cyclobs.ifremer.fr/static/cyclobs/data...
1 IDAI https://cyclobs.ifremer.fr/static/cyclobs/data...
2 IDAI https://cyclobs.ifremer.fr/static/sarwing_data...
3 IDAI https://cyclobs.ifremer.fr/static/sarwing_data...
4 IDAI https://cyclobs.ifremer.fr/static/sarwing_data...

2 - To retrieve acquisitions from the SAR instrument for the cyclone with sid wp202019 and sh182019

The include_cols argument is used to configure the output columns

In [2]:
request_url = "https://cyclobs.ifremer.fr/app/api/getData?sid=wp202019,sh182019&instrument=C-Band_Synthetic_Aperture_Radar&include_cols=all"
pd.read_csv(request_url)
Out[2]:
cyclone_name data_url acquisition_start_time instrument mission sid vmax basin
0 IDAI https://cyclobs.ifremer.fr/static/sarwing_data... 2019-03-11 02:43:10 C-Band Synthetic Aperture Radar SENTINEL-1 A sh182019 94.583333 SI
1 HAGIBIS https://cyclobs.ifremer.fr/static/sarwing_data... 2019-10-08 20:30:40 C-Band Synthetic Aperture Radar SENTINEL-1 A wp202019 140.000000 NWP
2 IDAI https://cyclobs.ifremer.fr/static/sarwing_data... 2019-03-14 03:08:15 C-Band Synthetic Aperture Radar SENTINEL-1 A sh182019 107.291667 SI
3 HAGIBIS https://cyclobs.ifremer.fr/static/sarwing_data... 2019-10-10 08:52:39 C-Band Synthetic Aperture Radar SENTINEL-1 B wp202019 135.000000 NWP
4 IDAI https://cyclobs.ifremer.fr/static/sarwing_data... 2019-03-14 16:05:52 C-Band Synthetic Aperture Radar SENTINEL-1 B sh182019 96.666667 SI
5 HAGIBIS https://cyclobs.ifremer.fr/static/sarwing_data... 2019-10-12 08:40:28 C-Band Synthetic Aperture Radar SENTINEL-1 B wp202019 80.416667 NWP

getData endpoint parameters

include_cols : comma separated list to format the csv-like output to include the given columns. Options are: cyclone_name, sid, data_url, acquisition_start_time, instrument, mission, vmax, basin. Defaults to cyclone_name,data_url

cyclone_name : commma separated list to filter wanted cyclones. Defaults to all cyclones.

sid : commma separated list to filter wanted storm id. Defaults to all storm ids.

instrument : commma separated list to filter wanted instruments. Defaults to all instruments. To see available values go to https://cyclobs.ifremer.fr/app/api/allInstruments

mission : comma separated list to filter wanted missions. Defaults to all missions. To see available values go to https://cyclobs.ifremer.fr/app/api/allMissions

basin : commma separated list to filter wanted basins. Defaults to all basins. To see available values go to https://cyclobs.ifremer.fr/app/api/allBasins

startdate : returned acquisitions returned will have acquisition start time above or equal to startdate. Format : YYYY-MM-DD. Defaults to no time limit

stopdate : returned acquisitions returned will have acquisition stop time below or equal to stopdate. Format : YYYY-MM-DD. Defaults to no time limit

cat_min : minimum category (including the catMin given limit) wanted for cyclone's acquisitions. Can be : dep, storm or cat-X with X from 1 to 5. Defaults to no category lower limit

cat_max : maximum category (excluding the catMax given limit) wanted for cyclone's acquisitions. Can be : dep, storm or cat-X with X from 1 to 5. Defaults to no category higher limit catMax must be above catMin

nopath : if set (no value needed) only the filenames will be returned in the column data_url

noheader : if set (no value needed) the csv header line will not be set in the ouput

Download the data (shell version)

The getData API helps you finding the URLs to the data you are interested in. A simple bash command can be used to request the getData API and then use the results to download the data files.

Example

In [3]:
# Retrieving the data_url for cyclone IDAI
!wget -O- "https://cyclobs.ifremer.fr/app/api/getData?sid=sh182019&include_cols=data_url&noheader"
--2020-06-19 10:57:52--  https://cyclobs.ifremer.fr/app/api/getData?sid=sh182019&include_cols=data_url&noheader
Résolution de cyclobs.ifremer.fr (cyclobs.ifremer.fr)… 134.246.142.39
Connexion à cyclobs.ifremer.fr (cyclobs.ifremer.fr)|134.246.142.39|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 1007 [text/html]
Enregistre : «STDOUT»

-                     0%[                    ]       0  --.-KB/s               https://cyclobs.ifremer.fr/static/cyclobs/data/smos/SMOS_201903101516_SH18_IDAI_FIX.mat
https://cyclobs.ifremer.fr/static/cyclobs/data/smos/SMOS_201903131500_SH18_IDAI_FIX.mat
https://cyclobs.ifremer.fr/static/sarwing_datarmor/processings/75295ea/default/sentinel-1a/L2C/EW/S1A_EW_OWIM_1S/2019/070/S1A_EW_OWIM_CC_20190311T024310_20190311T024514_026284_02F003/post_processing/nclight_L2M/s1a-ew-owi-cm-20190311t024310-20190311t024514-000003-02F003_sw.nc
https://cyclobs.ifremer.fr/static/sarwing_datarmor/processings/75295ea/default/sentinel-1a/L2C/IW/S1A_IW_OWIH_1S/2019/073/S1A_IW_OWIH_CC_20190314T030815_20190314T030955_026328_02F196/post_processing/nclight_L2M/s1a-iw-owi-cm-20190314t030815-20190314t030955-000003-02F196_sw.nc
https://cyclobs.ifremer.fr/static/sarwing_datarmor/processings/75295ea/default/sentinel-1b/L2C/IW/S1B_IW_OWIH_1S/2019/073/S1B_IW_OWIH_CC_20190314T160552_20190314T160801_015352_01CBEE/post_processing/nclight_L2M/s1b-iw-owi-cm-20190314t160552-20190314t160801-000003-01CBEE_sw.nc
-                   100%[===================>]    1007  --.-KB/s    ds 0s      

2020-06-19 10:57:52 (103 MB/s) — envoi vers sortie standard [1007/1007]

Retrieving the data_url for cyclone IDAI and downloading the satellite acquisition files

wget -O- "https://cyclobs.ifremer.fr/app/api/getData?sid=sh182019&include_cols=data_url&noheader" | xargs -n1 wget -N

Download the data (python version)

The getData API helps you finding the URLs to the data you are interested in. As the API return data in csv format, it's can be dowloaded as a pandas dataframe

Example

In [2]:
import geoviews as gv
import geoviews.feature as gf
gv.extension('bokeh','matplotlib')
import pandas as pd
import xarray as xr
import rasterio as rio
import rioxarray # geospatial extension for xarray
import os
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy
from tqdm.auto import tqdm


download_path="/tmp/cyclobs"
os.makedirs(download_path,exist_ok = True)
In [3]:
request_url="https://cyclobs.ifremer.fr/app/api/getData?sid=al122017&instrument=C-Band_Synthetic_Aperture_Radar&include_cols=all"
df_request = pd.read_csv(request_url)


# FIXME : _gd instead of _sw by default
#df_request['data_url'] = df_request['data_url'].map(lambda x : x.replace("_sw","_gd"))

# add download path
df_request['path'] = df_request['data_url'].map(lambda x : os.path.join(download_path,os.path.basename(x)))
df_request
Out[3]:
cyclone_name data_url acquisition_start_time instrument mission sid vmax basin path
0 JOSE https://cyclobs.ifremer.fr/static/sarwing_data... 2017-09-06 21:15:19 C-Band Synthetic Aperture Radar RADARSAT-2 al122017 67.708333 NaN /tmp/cyclobs/rs2--owi-cm-20170906t211519-20170...
1 JOSE https://cyclobs.ifremer.fr/static/sarwing_data... 2017-09-08 22:02:17 C-Band Synthetic Aperture Radar SENTINEL-1 A al122017 133.333333 NaN /tmp/cyclobs/s1a-iw-owi-cm-20170908t220217-201...
In [5]:
# download 'data_url' to 'path' with wget, and read files

datasets = []
for idx,entry in tqdm(df_request.iterrows(),total=df_request.shape[0]):
    ret = os.system('cd %s ; wget -N  %s' % (os.path.dirname(entry['path']),entry['data_url']))
    if ret == 0 : 
        ds = xr.open_dataset(entry['path'])
        datasets.append(ds)
        #datasets.append( ds.rio.reproject(projection.proj4_params))
        
    else:
        datasets.append(None) # error fetching file
df_request['dataset'] = datasets

In [7]:
df_request['dataset'].iloc[0]
Out[7]:
Show/Hide data repr Show/Hide attributes
xarray.Dataset
    • time: 1
    • x: 420
    • y: 886
    • x
      (x)
      float64
      -6.723e+06 ... -6.285e+06
      long_name :
      x coordinate of projection
      standard_name :
      projection_x_coordinate
      array([-6722830.301149, -6721784.499737, -6720738.698326, ..., -6286731.11248 ,
             -6285685.311068, -6284639.509657])
    • y
      (y)
      float64
      2.364e+06 2.363e+06 ... 1.438e+06
      long_name :
      y coordinate of projection
      standard_name :
      projection_y_coordinate
      array([2363837.184637, 2362791.383226, 2361745.581814, ..., 1440394.538127,
             1439348.736715, 1438302.935303])
    • time
      (time)
      datetime64[ns]
      2017-09-08T22:03:19
      standard_name :
      time
      array(['2017-09-08T22:03:19.000000000'], dtype='datetime64[ns]')
    • spatial_ref
      ()
      int64
      0
      crs_wkt :
      PROJCS["unknown",GEOGCS["unknown",DATUM["Unknown based on WGS84 ellipsoid",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]
      semi_major_axis :
      6378137.0
      semi_minor_axis :
      6356752.314245179
      inverse_flattening :
      298.257223563
      reference_ellipsoid_name :
      WGS 84
      longitude_of_prime_meridian :
      0.0
      prime_meridian_name :
      Greenwich
      geographic_crs_name :
      unknown
      horizontal_datum_name :
      Unknown based on WGS84 ellipsoid
      projected_crs_name :
      unknown
      grid_mapping_name :
      mercator
      standard_parallel :
      0.0
      longitude_of_projection_origin :
      0.0
      false_easting :
      0.0
      false_northing :
      0.0
      scale_factor_at_projection_origin :
      1.0
      spatial_ref :
      PROJCS["unknown",GEOGCS["unknown",DATUM["Unknown based on WGS84 ellipsoid",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]
      array(0)
    • lon
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Longitude at wind cell center
      units :
      degrees_east
      standard_name :
      longitude
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • lat
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Latitude at wind cell center
      units :
      degrees_north
      standard_name :
      latitude
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • wind_streaks_orientation
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Estimation of wind direction in meteorologic convention [degrees] from wind streaks at 200m, corrected using neighboring cells and with direction ambiguity removed using ECMWF wind at 200 in meteorologic convention
      units :
      degrees
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • incidence_angle
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Incidence angle at wind cell center
      units :
      degrees
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • nrcs_co
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Normalized Radar Cross Section
      units :
      m^2 / m^2
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • mask_flag
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Mask of data
      valid_range :
      [0 3]
      flag_values :
      [0 1 2 3]
      flag_meanings :
      0:valid 1:land 2:ice 3:no_valid
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • wind_speed
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Ocean 10m Wind speed from co- and cross- polarization
      units :
      m/s
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • nrcs_detrend_cr
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Nice display at 200m-pixel
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • elevation_angle
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Elevation Angle at wind cell center
      units :
      degrees
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • heterogeneity_mask
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Filter tresholded at 0.8 binary at 400m-pixel
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • wind_to_direction
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Wind to direction (oceanographic convention)
      units :
      degrees
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • nrcs_detrend_co
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Nice display at 200m-pixel
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • wind_streaks_orientation_stddev
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Not yet impemented
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
    • nrcs_cr
      (time, y, x)
      float32
      nan nan nan nan ... nan nan nan nan
      long_name :
      Normalized Radar Cross Section
      units :
      m^2 / m^2
      grid_mapping :
      spatial_ref
      transform :
      (1045.8014116765646, 0.0, -6723353.201854893, 0.0, -1045.8014116765646, 2364360.0853430787)
      array([[[nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              ...,
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan],
              [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
  • Conventions :
    CF-1.6
    title :
    SAR ocean surface wind field
    institution :
    IFREMER/CLS
    reference :
    Mouche Alexis, Chapron Bertrand, Knaff John, Zhao Yuan, Zhang Biao, Combot Clement (2019). Copolarized and Cross‐Polarized SAR Measurements for High‐Resolution Description of Major Hurricane Wind Structures: Application to Irma Category 5 Hurricane. Journal Of Geophysical Research-oceans, 124(6), 3905-3922. https://doi.org/10.1029/2019JC015056
    measurementDate :
    2017-09-08T22:03:19Z
    sourceProduct :
    S1A_IW_GRDH_1SDV_20170908T220217_20170908T220242_018290_01EC26_58B7.SAFE S1A_IW_GRDH_1SDV_20170908T220242_20170908T220307_018290_01EC26_B4A8.SAFE S1A_IW_GRDH_1SDV_20170908T220307_20170908T220332_018290_01EC26_BAF5.SAFE S1A_IW_GRDH_1SDV_20170908T220332_20170908T220357_018290_01EC26_6284.SAFE S1A_IW_GRDH_1SDV_20170908T220357_20170908T220421_018290_01EC26_8D25.SAFE
    missionName :
    SENTINEL-1 A
    polarisation :
    VV
    footprint :
    POLYGON((-58.796684 12.911622, -56.534523 13.348675, -57.999783 20.861143, -60.357006 20.441448, -58.796684 12.911622))
    l2ProcessingUtcTime :
    20-Apr-2020 21:36:23.662359
    grid_mapping :
    spatial_ref
In [12]:
projection=ccrs.PlateCarree()
gv_list=[gf.coastline.opts(projection=projection)]
for ds in df_request['dataset']:
    gv_list.append(gv.QuadMesh(ds['wind_speed'].squeeze()[::5,::5],crs=projection).opts(cmap='jet',tools=['hover']))
    
gv.Overlay(gv_list).options(width=800, height=500)
Out[12]: