IVERT
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).
Capabilities
- 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.
Installation
Available on PyPI:
pip install ivert
or on conda-forge:
conda install ivert
For 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.
Quick start
1. Set up IVERT's data directories and credentials (run once on a new machine):
ivert setup
This 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.0
3. Validate your DEM:
ivert validate mydem.tif
4. Check the output directory for mydem_results.h5, a validation plot (.png), and error exports (.tif, .gpkg).
Documentation
| 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 |
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ivert-0.6.6.tar.gz.
File metadata
- Download URL: ivert-0.6.6.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6166520423bc733f97747a8438c84f2683e14ec40c101996ebd25b4fcb906e89
|
|
| MD5 |
1c81bf3a3b66138c4501a612e62fe56c
|
|
| BLAKE2b-256 |
7851ce03c8fe09017249cfd136be745b22bcd8da4e2637b8331ca6f1bc18bf7e
|
Provenance
The following attestation bundles were made for ivert-0.6.6.tar.gz:
Publisher:
publish-to-pypi.yml on continuous-dems/ivert
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ivert-0.6.6.tar.gz -
Subject digest:
6166520423bc733f97747a8438c84f2683e14ec40c101996ebd25b4fcb906e89 - Sigstore transparency entry: 2209902572
- Sigstore integration time:
-
Permalink:
continuous-dems/ivert@662e3214a1b12ba08613635c0ac8fa919a6c2b50 -
Branch / Tag:
refs/tags/0.6.6 - Owner: https://github.com/continuous-dems
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@662e3214a1b12ba08613635c0ac8fa919a6c2b50 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ivert-0.6.6-py3-none-any.whl.
File metadata
- Download URL: ivert-0.6.6-py3-none-any.whl
- Upload date:
- Size: 131.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f202ff3d454e6b82b8120613a59063d4b3fbcacdebc27efa0d6dd66a67e98fa9
|
|
| MD5 |
2ba9545ac6b3f56f43240c64ce0994e1
|
|
| BLAKE2b-256 |
9f5dfb9172871ae868969f0c60aae6a406771b1e08e359eddc572e0ebcc71488
|
Provenance
The following attestation bundles were made for ivert-0.6.6-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on continuous-dems/ivert
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ivert-0.6.6-py3-none-any.whl -
Subject digest:
f202ff3d454e6b82b8120613a59063d4b3fbcacdebc27efa0d6dd66a67e98fa9 - Sigstore transparency entry: 2209902579
- Sigstore integration time:
-
Permalink:
continuous-dems/ivert@662e3214a1b12ba08613635c0ac8fa919a6c2b50 -
Branch / Tag:
refs/tags/0.6.6 - Owner: https://github.com/continuous-dems
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@662e3214a1b12ba08613635c0ac8fa919a6c2b50 -
Trigger Event:
release
-
Statement type: