import fiona
import xarray as xr
import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
import hvplot.xarray
import earthaccess
import warnings
warnings.filterwarnings("ignore", category=FutureWarning, module="earthaccess")
pd.set_option('display.max_columns', None) #make sure all columns displayed for shapefiles
From the PO.DAAC Cookbook, to access the GitHub version of the notebook, follow this link.
SWOT Hydrology Science Application Tutorial on the Cloud
Retrieving SWOT attributes (WSE, width, slope) and plotting a longitudinal profile along a river or over a basin
Requirement
This tutorial can only be run in an AWS cloud instance running in us-west-2: NASA Earthdata Cloud data in S3 can be directly accessed via earthaccess python library; this access is limited to requests made within the US West (Oregon) (code: us-west-2) AWS region.
Earthdata Login
An Earthdata Login account is required to access data, as well as discover restricted data, from the NASA Earthdata system. Thus, to access NASA data, you need Earthdata Login. Please visit https://urs.earthdata.nasa.gov to register and manage your Earthdata Login account. This account is free to create and only takes a moment to set up.
This code runs using SWOT Level 2 Data Products (Version D).
Notebook Authors: Arnaud Cerbelaud, Jeffrey Wade, NASA Jet Propulsion Laboratory - California Institute of Technology (Mar 2024)
Last updated: November 2026
Learning Objectives
- Retrieve SWOT hydrological attributes on river reaches within the AWS cloud (Cal/Val data). Query reaches by:
- River name
- Spatial bounding box
- Downstream tracing from reach id (e.g. headwater to outlet) for river longitudinal profiles
- Upstream tracing from reach id (e.g. outlet to full river network) for watershed analysis
- Plot a time series of WSE, width, slope data on the filtered data
- Visualize an interactive map of WSE, width, slope data on the filtered data
Import Packages
Authenticate
Authenticate your Earthdata Login (EDL) information using the earthaccess python package as follows:
earthaccess.login() # Login with your EDL credentials if asked<earthaccess.auth.Auth at 0x7f32f211f8c0>
1. Retrieve SWOT hydrological attributes on river reaches within the AWS cloud (Cal/Val data)
What data should we download?
- Optional step: Get the .kmz file of SWOT passes/swaths for the and import it into Google Earth for visualization
- Determine which pass number corresponds to the river/basin you want to look at! #### Search for multiple days of data
# Enter pass number
pass_number = ["341", "576", "298"] #e.g. 341, 576, 298 for Connecticut in NA, "236", "514", "542", "085", "363", "057", "335", "029" for Rhine in EU
# Enter continent code
continent_code = "NA" # e.g. "AF", "NA", "EU", "SI", "AS", "AU", "SA", "AR", "GR"
# Retrieves granulev and links list from the passes we want, in this case by passing to `earthdata.search_data` function the data collection shortname and temporal bounds
links_list = []
for p in range(len(pass_number)):
river_results = earthaccess.search_data(short_name = 'SWOT_L2_HR_RiverSP_D',
temporal = ('2024-01-25 00:00:00', '2024-03-29 23:59:59'),
granule_name = "*Reach*_" + pass_number[p] + "_" + continent_code + "*")
for r in range(len(river_results)):
river_link = earthaccess.results.DataGranule.data_links(river_results[r], access='direct')[0]
links_list.append(river_link)
print(f"Found {len(river_results)} granules")Found 3 granules
# Create fiona session to read data from zip files without download and extraction
fs_s3 = earthaccess.get_s3_filesystem(results=river_results)
fiona_session=fiona.session.AWSSession(
aws_access_key_id=fs_s3.storage_options["key"],
aws_secret_access_key=fs_s3.storage_options["secret"],
aws_session_token=fs_s3.storage_options["token"]
)links_list['s3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_010_341_NA_20240206T041926_20240206T043456_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_011_341_NA_20240227T010431_20240227T012002_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_012_341_NA_20240318T214934_20240318T220504_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_010_576_NA_20240214T133056_20240214T134204_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_011_576_NA_20240306T101600_20240306T102708_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_012_576_NA_20240327T070054_20240327T071215_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_010_298_NA_20240204T150846_20240204T151306_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_011_298_NA_20240225T115352_20240225T115812_PGD0_01.zip',
's3://podaac-swot-ops-cumulus-protected/SWOT_L2_HR_RiverSP_D/SWOT_L2_HR_RiverSP_Reach_012_298_NA_20240317T083854_20240317T084314_PGD0_01.zip']
Unzip selected files in Fiona session
# Initialize list of shapefiles containing all dates
SWOT_HR_shps = []
# Loop through queried granules to stack all acquisition dates
for j in range(len(links_list)):
# We use the zip+ prefix so fiona knows that we are operating on a zip file
river_shp_url = f"zip+{links_list[j]}"
# Read shapefile
with fiona.Env(session=fiona_session):
SWOT_HR_shps.append(gpd.read_file(river_shp_url)) Aggregate unzipped files into dataframe
# Combine granules from all acquisition dates into one dataframe
SWOT_HR_df = gpd.GeoDataFrame(pd.concat(SWOT_HR_shps, ignore_index=True))
# Sort dataframe by reach_id and time
SWOT_HR_df = SWOT_HR_df.sort_values(['reach_id', 'time'])
SWOT_HR_df| reach_id | time | time_tai | time_str | p_lat | p_lon | river_name | wse | wse_u | wse_r_u | wse_c | wse_c_u | slope | slope_u | slope_r_u | slope2 | slope2_u | slope2_r_u | width | width_u | width_c | width_c_u | area_total | area_tot_u | area_detct | area_det_u | area_wse | d_x_area | d_x_area_u | layovr_val | node_dist | loc_offset | xtrk_dist | dschg_c | dschg_c_u | dschg_csf | dschg_c_q | dschg_gc | dschg_gc_u | dschg_gcsf | dschg_gc_q | dschg_m | dschg_m_u | dschg_msf | dschg_m_q | dschg_gm | dschg_gm_u | dschg_gmsf | dschg_gm_q | dschg_b | dschg_b_u | dschg_bsf | dschg_b_q | dschg_gb | dschg_gb_u | dschg_gbsf | dschg_gb_q | dschg_h | dschg_h_u | dschg_hsf | dschg_h_q | dschg_gh | dschg_gh_u | dschg_ghsf | dschg_gh_q | dschg_o | dschg_o_u | dschg_osf | dschg_o_q | dschg_go | dschg_go_u | dschg_gosf | dschg_go_q | dschg_s | dschg_s_u | dschg_ssf | dschg_s_q | dschg_gs | dschg_gs_u | dschg_gssf | dschg_gs_q | dschg_i | dschg_i_u | dschg_isf | dschg_i_q | dschg_gi | dschg_gi_u | dschg_gisf | dschg_gi_q | dschg_q_b | dschg_gq_b | reach_q | reach_q_b | dark_frac | ice_clim_f | ice_dyn_f | partial_f | n_good_nod | obs_frac_n | xovr_cal_q | geoid_hght | geoid_slop | solid_tide | load_tidef | load_tideg | pole_tide | dry_trop_c | wet_trop_c | iono_c | xovr_cal_c | n_reach_up | n_reach_dn | rch_id_up | rch_id_dn | p_wse | p_wse_var | p_width | p_wid_var | p_n_nodes | p_dist_out | p_length | p_maf | p_dam_id | p_n_ch_max | p_n_ch_mod | p_low_slp | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4784 | 72120300181 | -1.000000e+12 | -1.000000e+12 | no_data | 50.353258 | -77.284955 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 12582912 | 12582912 | 3 | 469762048 | -1.000000e+12 | 2 | -999 | 1 | -999 | -1.000000e+12 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 72120300196, no_data, no_data, no_data | 72120300173, no_data, no_data, no_data | 248.199997 | 0.031587 | 45.0 | 217.523 | 86 | 209848.884 | 17136.597233 | -1.000000e+12 | 0 | 1 | 1 | 0 | LINESTRING (-77.37319 50.31698, -77.37277 50.3... |
| 5502 | 72120300181 | -1.000000e+12 | -1.000000e+12 | no_data | 50.353258 | -77.284955 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 12582912 | 12582912 | 3 | 469762048 | -1.000000e+12 | 2 | -999 | 1 | -999 | -1.000000e+12 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 72120300196, no_data, no_data, no_data | 72120300173, no_data, no_data, no_data | 248.199997 | 0.031587 | 45.0 | 217.523 | 86 | 209848.884 | 17136.597233 | -1.000000e+12 | 0 | 1 | 1 | 0 | LINESTRING (-77.37319 50.31698, -77.37277 50.3... |
| 6220 | 72120300181 | -1.000000e+12 | -1.000000e+12 | no_data | 50.353258 | -77.284955 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 12582912 | 12582912 | 3 | 469762048 | -1.000000e+12 | 2 | -999 | 1 | -999 | -1.000000e+12 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 72120300196, no_data, no_data, no_data | 72120300173, no_data, no_data, no_data | 248.199997 | 0.031587 | 45.0 | 217.523 | 86 | 209848.884 | 17136.597233 | -1.000000e+12 | 0 | 1 | 1 | 0 | LINESTRING (-77.37319 50.31698, -77.37277 50.3... |
| 4785 | 72120400051 | -1.000000e+12 | -1.000000e+12 | no_data | 49.866603 | -76.958900 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 12582912 | 12582912 | 3 | 469762048 | -1.000000e+12 | 2 | -999 | 1 | -999 | -1.000000e+12 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 72120400063, no_data, no_data, no_data | 72120400043, no_data, no_data, no_data | 256.399994 | 2.569541 | 291.0 | 19982.483 | 91 | 308648.446 | 18234.622619 | -1.000000e+12 | 0 | 3 | 1 | 0 | LINESTRING (-77.06133 49.85771, -77.06092 49.8... |
| 5503 | 72120400051 | -1.000000e+12 | -1.000000e+12 | no_data | 49.866603 | -76.958900 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 12582912 | 12582912 | 3 | 469762048 | -1.000000e+12 | 2 | -999 | 1 | -999 | -1.000000e+12 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 72120400063, no_data, no_data, no_data | 72120400043, no_data, no_data, no_data | 256.399994 | 2.569541 | 291.0 | 19982.483 | 91 | 308648.446 | 18234.622619 | -1.000000e+12 | 0 | 3 | 1 | 0 | LINESTRING (-77.06133 49.85771, -77.06092 49.8... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 4168 | 76500000111 | -1.000000e+12 | -1.000000e+12 | no_data | 18.214094 | -65.999696 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 5.381931e+00 | 1.708323e+00 | -1.000000e+12 | -1.000000e+12 | 4.289900e+03 | 8.220090e+02 | 2.589700e+03 | 8.220000e+02 | 0.000000e+00 | -1.000000e+12 | -1.000000e+12 | 0.000000e+00 | 1.312333e+02 | 5.362288e+01 | -1.001659e+04 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 29360570 | 29360570 | 3 | 167805952 | 0.000000e+00 | 0 | -999 | 1 | 0 | 0.000000e+00 | 2 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1 | 1 | 76500000121, no_data, no_data, no_data | 76500000101, no_data, no_data, no_data | 63.100002 | 20.898301 | 30.0 | 415.706 | 4 | 44510.176 | 797.084050 | -1.000000e+12 | 0 | 1 | 1 | 0 | LINESTRING (-66.00022 18.21743, -65.99988 18.2... |
| 4782 | 76500000111 | 7.648387e+08 | 7.648388e+08 | 2024-03-27T07:12:06Z | 18.214094 | -65.999696 | no_data | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | 1.050136e+02 | 5.887500e+00 | -1.000000e+12 | -1.000000e+12 | 8.370460e+04 | 1.859891e+03 | 3.317430e+04 | 1.859900e+03 | 1.099200e+04 | -1.000000e+12 | -1.000000e+12 | 0.000000e+00 | 8.057854e+01 | 2.287622e+01 | -9.566129e+03 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 29360570 | 29360570 | 3 | 167822346 | 0.000000e+00 | 0 | -999 | 1 | 0 | 0.000000e+00 | 2 | -4.162080e+01 | -1.000000e+12 | 7.616775e-02 | 1.816489e-03 | 2.868717e-03 | 1.951058e-03 | -2.288368e+00 | -1.447217e-01 | -6.110484e-03 | 1.135712e-01 | 1 | 1 | 76500000121, no_data, no_data, no_data | 76500000101, no_data, no_data, no_data | 63.100002 | 20.898301 | 30.0 | 415.706 | 4 | 44510.176 | 797.084050 | -1.000000e+12 | 0 | 1 | 1 | 0 | LINESTRING (-66.00022 18.21743, -65.99988 18.2... |
| 3557 | 76500000141 | 7.612333e+08 | 7.612334e+08 | 2024-02-14T13:41:59Z | 18.197974 | -65.966375 | no_data | 8.343050e+01 | 1.320800e-01 | 9.667000e-02 | -1.000000e+12 | -1.000000e+12 | -1.743150e-03 | 6.174656e-05 | 6.167364e-05 | -2.599585e-03 | 1.931517e-05 | 1.908077e-05 | 1.981202e+02 | 1.617387e+00 | -1.000000e+12 | -1.000000e+12 | 1.700321e+06 | 1.293682e+04 | 1.584683e+06 | 1.293680e+04 | 2.523898e+05 | -1.000000e+12 | -1.000000e+12 | 7.045200e+00 | 1.175871e+02 | -7.604584e+01 | -1.280353e+04 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 25166265 | 25166265 | 1 | 18446 | 0.000000e+00 | 0 | -999 | 0 | 23 | 5.348837e-01 | 0 | -4.157200e+01 | -1.154650e-05 | -1.459779e-01 | -1.319069e-02 | -9.707801e-03 | 3.038016e-03 | -2.302595e+00 | -1.840162e-01 | -9.136316e-03 | 1.154844e-01 | 1 | 1 | 76500000136, no_data, no_data, no_data | 76500000121, no_data, no_data, no_data | 73.500000 | 54.921901 | 48.0 | 277.916 | 43 | 53297.124 | 8582.267791 | -1.000000e+12 | 0 | 2 | 1 | 0 | LINESTRING (-66.00009 18.20822, -66 18.20795, ... |
| 4169 | 76500000141 | 7.630360e+08 | 7.630361e+08 | 2024-03-06T10:27:03Z | 18.197974 | -65.966375 | no_data | 8.410640e+01 | 1.308600e-01 | 9.499000e-02 | -1.000000e+12 | -1.000000e+12 | 1.133056e-03 | 5.397657e-05 | 5.389314e-05 | 2.740521e-03 | 1.123223e-05 | 1.082419e-05 | 1.888985e+02 | 1.582039e+00 | -1.000000e+12 | -1.000000e+12 | 1.621177e+06 | 1.324083e+04 | 1.580981e+06 | 1.324080e+04 | 2.817057e+05 | -1.000000e+12 | -1.000000e+12 | 7.344700e+00 | 1.254368e+02 | -5.885571e+01 | -1.313328e+04 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 8389049 | 8389049 | 1 | 34830 | 0.000000e+00 | 0 | -999 | 1 | 20 | 4.651163e-01 | 0 | -4.157211e+01 | -4.823000e-07 | -1.097062e-01 | -7.916918e-03 | -9.235167e-03 | 2.664745e-03 | -2.291559e+00 | -2.168627e-01 | -2.814074e-03 | 5.986552e-01 | 1 | 1 | 76500000136, no_data, no_data, no_data | 76500000121, no_data, no_data, no_data | 73.500000 | 54.921901 | 48.0 | 277.916 | 43 | 53297.124 | 8582.267791 | -1.000000e+12 | 0 | 2 | 1 | 0 | LINESTRING (-66.00009 18.20822, -66 18.20795, ... |
| 4783 | 76500000141 | 7.648387e+08 | 7.648388e+08 | 2024-03-27T07:12:07Z | 18.197974 | -65.966375 | no_data | 8.450200e+01 | 1.285600e-01 | 9.180000e-02 | -1.000000e+12 | -1.000000e+12 | -9.365186e-04 | 4.203354e-05 | 4.192635e-05 | -2.301596e-03 | 9.526120e-06 | 9.041410e-06 | 2.025074e+02 | 1.723306e+00 | -1.000000e+12 | -1.000000e+12 | 1.737973e+06 | 1.436756e+04 | 1.688347e+06 | 1.436760e+04 | 3.487453e+05 | -1.000000e+12 | -1.000000e+12 | 8.666000e+00 | 1.322138e+02 | -7.806812e+01 | -1.305011e+04 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | -1.000000e+12 | -1.000000e+12 | -1.000000e+12 | -999 | 25166265 | 25166265 | 1 | 2062 | 0.000000e+00 | 0 | -999 | 0 | 27 | 6.279070e-01 | 0 | -4.157457e+01 | -9.902700e-06 | 7.608656e-02 | 1.759067e-03 | 2.789320e-03 | 1.949312e-03 | -2.284623e+00 | -1.427195e-01 | -6.109832e-03 | 1.668351e-01 | 1 | 1 | 76500000136, no_data, no_data, no_data | 76500000121, no_data, no_data, no_data | 73.500000 | 54.921901 | 48.0 | 277.916 | 43 | 53297.124 | 8582.267791 | -1.000000e+12 | 0 | 2 | 1 | 0 | LINESTRING (-66.00009 18.20822, -66 18.20795, ... |
6938 rows × 127 columns
Exploring the dataset
What acquisition dates and rivers do our downloaded files cover?
print('Available dates are:')
print(np.unique([i[:10] for i in SWOT_HR_df['time_str']]))
print('Available rivers are:')
print(np.unique([i for i in SWOT_HR_df['river_name']]))Available dates are:
['2024-02-04' '2024-02-06' '2024-02-14' '2024-02-25' '2024-02-27'
'2024-03-06' '2024-03-17' '2024-03-18' '2024-03-27' 'no_data']
Available rivers are:
['Androscoggin River' 'Batten Kill' 'Bras Saint-Victor' 'Bras du Nord'
'Concord River' 'Connecticut River' 'Deerfield River' 'Farmington River'
'Grasse River' 'Hoosic River' 'Housatonic River' 'Hudson River'
'Indian River' 'Komaktorvik River' 'La Grande River' 'Lac Saint-Louis'
'Lamoille River' 'Magalloway River' 'Merrimack River' 'Missisquoi River'
'Mohawk River' 'Otter Creek' 'Passumsic River' 'Quinebaug River'
'Racquette River' 'Sacandaga River' 'Saguenay River'
'Saint Lawrence River' 'Saint Regis River' 'Shetucket River'
'South Nation River' 'Thames River' 'Vieux-Comptoir River' 'West River'
'White River' 'Winooski River' 'no_data']
Filter dataframe by river name of interest and plot selected reaches:
Note: Some rivers have multiple names, hence using the contains function
# Enter river name
river = "Connecticut River" # e.g. "Rhine", "Connecticut River"
## Filter dataframe
SWOT_HR_df_river = SWOT_HR_df[(SWOT_HR_df.river_name.str.contains(river))]
# Plot geopandas dataframe with 'explore' by reach id
SWOT_HR_df_river[['reach_id','river_name','geometry']].explore('reach_id', style_kwds=dict(weight=6))Filter dataframe by latitude/longitude of interest:
lat_start = {"Connecticut River": 41,
"Rhine": 46.5
}
lat_end = {"Connecticut River": 45,
"Rhine": 52
}
lon_start = {"Connecticut River": -73,
"Rhine": 6
}
lon_end = {"Connecticut River": -71,
"Rhine": 10
}
## Filter dataframe
SWOT_HR_df_box = SWOT_HR_df[(SWOT_HR_df.p_lat > lat_start[river]) & (SWOT_HR_df.p_lat < lat_end[river]) & (SWOT_HR_df.p_lon > lon_start[river]) & (SWOT_HR_df.p_lon < lon_end[river])]
# Plot geopandas dataframe with 'explore' by river name
SWOT_HR_df_box[['reach_id','river_name','geometry']].explore('river_name', style_kwds=dict(weight=6))