ICESat-2 ATL03 photons to river cross-sections processing scripts
These scripts extract, process and filter ICESat-2 crossing data for cross-section definition in rivers.
Copyright © [2024] DHI A/S
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The methods were developed on a stretch of the Mekong River
- Input files and intermediate products to reproduce the resulting cross-sections are included.
ICESat-2 products are not included, but are available from NSIDC:
https://nsidc.org/data/atl03
https://nsidc.org/data/atl08
https://nsidc.org/data/atl13
Version 5 of the ICESat-2 products were used in the making of this paper. Newer versions are now available.
All example file-paths must be replaced with actual filepaths before scripts are run.
The python scripts require the following modules
shapely - © Copyright 2011-2024, Sean Gillies and Shapely contributors. https://creativecommons.org/licenses/by/3.0/us/
geopandas - © Copyright 2013–2024, GeoPandas developers.
rasterio - Copyright (c) 2016, MapBox All rights reserved.
scipy - Copyright © 2001, 2002 Enthought, Inc. All rights reserved. Copyright © 2003-2019 SciPy Developers. All rights reserved.
pyproj - Copyright (c) 2006-2018, Jeffrey Whitaker. Copyright (c) 2019-2023, Open source contributors.
h5py - Copyright (c) 2008 Andrew Collette and contributors
hampel - Copyright (c) 2018 The Python Packaging Authority
To ensure the required intermediate products are ready when needed, use the following script run order:
- ATL13 00Extract and 01EGM08_HarmSynth in any Python installation
- ATL13 02QGIS_Hub_Processing in the QGIS Python console
- ATL13 03 through 07
- ATL08 00 through 04 (02 in QGIS)
- ATL03 00 through 15 (02 in QGIS)
- ATL13 08 through 14
Some scripts cannot be run without in-situ data from the Mekong River Commission, but intermediate products are available to run subsequent scripts.
Inputs
- ATL03, ATL08 and ATL13 .h5 files in their respective folders
- MekongStrech_4k_Buffer_4326.shp
- 4km buffer on the river chainage line of the stretch. Made in UTM48N, but reprojected to epsg:4326 to subset ICESat-2 data points
- EGM2008 program
- Relevant files downloaded from https://earth-info.nga.mil/php/download.php?file=egm-08spherical should be placed in the folder 'EGM2008_SphericalHarmonics
- MekongStrechChainage1m.gpkg
- River chainage line converted to points at 1 m intervals using the QGIS pluging QChain
- Must be UTM CRS for distancing
- occurrence_100E_20Nv1_3_2020.tif
- Raster of surface water occurance used to filter out points over land. The raster with the relevant AOI is found at https://global-surface-water.appspot.com/download
- EGM08_HarmSynth_1k.tif
- Raster with resolution 1 km x 1 km of EGM08 geoid correction for the area of interest. UTM CRS
- URBS Catchment contributing discharge time series
- Available from MRC upon request
- Discharge Time Series
- Discharge time series from rating curves at 3 gauging stations. Available from MRC upon request
- IRIS_netcdf_v2.nc
- IRIS database of ATL13 slopes, available at https://zenodo.org/record/8202984
- SWORD_MekongStretch_v15.gpkg
- Geopackage of relevant reaches, extracted from the SWORD database found at https://www.swordexplorer.com/
- WSS_07092023_0913.txt
- ICE2WSS r-package export of ATL13 slope estimates from the same set of ATL13 files.
Outputs
- ICESat intermediate products are found in subsequent folders: GPKGs, UTM, HubDist, Referenced, Chained
- ATL13_Collected_GlobalSurface.gpkg
- A combined geopackage of all ATL13 tracks processed so far. Used in subsequent processing
- ATL13WSE.csv
- Table of Water Surface Elevation estimates. Columns: TimeTrack,weightedWSE,STD,Chainage,UTM48N_x,UTM48N_y,Time,Track,ctime
- SlopeFrame.csv
- Table of Water Surface Slope estimates. Columns: Time,ChainMin,ChainMax,Slope
- flowAcc_Chainage.csv
- Table of Upstream Drainage Area increase by river chainage. Columns: cngmeters,HubName,HubDist
- catchmentMeanRunoff.csv
- Table of Catchment mean discharge contribution, area and mean runoff generation. Columns: Catchment,Mean Discharge,Median,Chain_Start,Chain_End,UDA_Start,UDA_End,UDA_tot,Runoff
- Runoff_accum.csv
- Table of Discharge accumulation along river chainage. Columns: cngmeters,Runoff_accum
- insituChainages.csv
- Table of river chainage position of each gauging station
- FirstLastPoint.csv
Table of first and last point position of each ATL03 crossing of the river
- ATL03CrossMap_Available.gpkg
- Geopackage showing ATL03 crossings available for cross-section definition
- ATLPairs.csv
- Table of matching ATL03 and ATL08 crossings
- ATL03_06CrossSectionSheet.csv
- Table of Cross-section parameters needed for definition. Columns: Crosssection,Tracks ATL13Time,Hampel_window,Hampel_n,Rolling_window,PlotLL,PlotUL,Use_ATL08,
ATL08_Window,Shape_Parameter,Bankpairs,xlim
- ATL03_06CrossSectionSheet_Rapids.csv
- Similar table as above, but with an additional cross-section
- ATL03_06CrossSecMakerSheet_DepthCalced_{}.csv
- Filled cross-section definition sheet with depths calculated from Manning's eq. {} indicates the assumed Mannings' n
- ATL03CrossMap_Used.gpkg
- Geopackage showing ATL03 crossings used for cross-section definition. The Parameter 'Used' indicates that the crossing is found in the list for definition of a cross-section
- XS_export_{}.txt
- Text export of the cross-sections. {} indicates the assumed Mannings' n
- ATL03_06CrossSecMakerSheet_DepthCalced_Split_{}_{}.csv
- Filled cross-section definition sheet with depths calculated from Manning's eq. {} indicates the assumed upstream Mannings' n and chainage position
- XS_export_Split_{}_{}.txt
- Text export of the cross-sections. {} indicates the assumed upstream Mannings' n and chainage position
- ATL03_06CrossSecMakerSheet_DepthCalced_Rapids_{}_{}.csv
- Filled cross-section definition sheet with depths calculated from Manning's eq with an additional cross-section. {} indicates the assumed upstream Mannings' n and chainage position
- XS_export_Rapids_{}_{}.txt
- Text export of the cross-sections with an additional cross-section. {} indicates the assumed upstream Mannings' n and chainage position
- ATL13WSE_and_Res_Hydro_Base_Short_ATL3XSs_{}.csv
- ATL13 WSE and corresponding model WSE. {} indicates model name
- model_WL_{}.csv
- WL time series at the river chainage of the gauging stations. {} indicates model name
- errorFrame_ICESat-2_WSE.csv
- Table of model WSE residuals compared to ATL13 WSE estimates
- Hydrostations_WL_Error.csv
- Table of model residuals and performance measures of modelled time series compared to gauging station series
- ErrorFrame_Merged.csv
- Combined table of above residuals
- ICE2WSS_Mekong.csv
- ICE2WSS slope estimates for relevant reaches
- SWORD_IRIS_WSS.csv
- IRIS slope estimates for relevant reaches