ICESat-2 Validation of Elevations Reporting Tool
IVERT validates Digital Elevation Models (DEMs) by comparing their elevations against ICESat-2 satellite photon data. It supports topographic, bathymetric, and mixed coastal DEMs, runs fully offline on any machine, and handles vertical datum conversions automatically.
Developed by the continuous-dems team. Primary authors: Mike MacFerrin (IVERT) and Matthew Love (continuous-dems utilities).
- Validate topographic, bathymetric, and mixed coastal DEMs against ICESat-2 photons — a single DEM, or a whole directory/glob of DEMs with combined collection-level summaries.
- Classifies photons by surface type — ground, canopy, land ice, buildings, seafloor, and water surfaces — by combining multiple ICESat-2 products (ATL03, ATL06, ATL08, ATL12, ATL13, ATL24) with a Bing-derived building-footprint mask to flag built structures.
- Coastline/water filtering to minimize false-positive "ground" photons appearing offshore over water and unreasonably-shallow "bathy floor" photons with large errors over deep water.
- Automatic vertical datum conversion (NAVD88, EGM2008, MLLW, ellipsoid, and many more, by EPSG code or short name) — no manual reprojection needed.
- Configurable photon filtering at both download and validation: signal confidence, bathymetry confidence, photon class selection, and outlier rejection.
- Statistical outputs: mean bias, RMSE, standard deviation, a full percentile breakdown of per-cell errors, and optional per-cell photon coverage.
- Automatically-generated validation plots (per-DEM and collection-wide).
- Export per-cell errors to GeoTIFF, GeoPackage, Shapefile, or XYZ text.
- Local, spatially-indexed photon database — download once, validate many times — with commands to list, size, rebuild, and delete cached data.
- Export classified photons from the database to GeoPackage, Shapefile, or XYZ text.
- Runs fully offline on any machine, with configurable data directories and per-project config profiles.
Available on PyPI:
pip install ivertor on conda-forge:
conda install ivertFor development (editable install from this repo):
git clone https://github.com/continuous-dems/ivert.git
cd ivert
pip install -e .Three dependencies — fetchez, globato, and transformez — are pulled automatically from the continuous-dems GitHub organization and do not need to be installed separately.
1. Set up IVERT's data directories and credentials (run once on a new machine):
ivert setupThis creates the local ~/.ivert data directories and checks your ~/.netrc for NASA Earthdata Login credentials, offering to save them if they are not already present. Earthdata credentials are required to download ICESat-2 data (register for a free account).
2. Download ICESat-2 photon data for your area (bounding box in W/E/S/N order):
ivert database download -- -74.0/-73.0/40.5/41.03. Validate your DEM:
ivert validate mydem.tif4. Check the output directory for mydem_results.h5, a validation plot (.png), and error exports (.tif, .gpkg).
| Command | Description |
|---|---|
| ivert setup | Create data directories and set up NASA Earthdata credentials |
| ivert validate | Validate DEMs against ICESat-2 data |
| ivert database | Download, export, and manage the local photon database |
| ivert classes | List the ICESat-2 photon classification codes |
| ivert cache | View and clear the local file cache |
| ivert options | View and change configuration settings |