Topographic differencing reveals surface change from a variety of tectonic, geomorphic, and anthropogenic processes including earthquakes, volcanic eruptions, river erosion, landslides, sand dune migration, and urban development. Differencing techniques have grown in popularity over the past decade as the number of multi-temporal topographic datasets has increased. Below, we present resources that we have developed on topographic differencing.
Vertical differencing showing sand dune migration in New Mexico.
- Measuring change at Earth’s surface: On-demand vertical and three- dimensional topographic differencing implemented in OpenTopography This publication discusses the on-demand differencing tools, including advances required to streamline the differencing, algorithm choice and the ideal resolution for the derived displacements. For 3D differencing, we show that the resolution depends on the point density, landscape characteristics, and the dataset quality.
- Statewide USGS 3DEP Lidar Topographic Differencing Applied to Indiana, USA: This publication presents meter-scale topographic differencing for the full state of Indiana as well as the insights, challenges, and lessons learned from conducting large-scale differencing.
- Topographic differencing error analysis workflow Jupyter notebook and supporting Python modules for a geostatistically-grounded workflow to quantify spatial uncertainty in lidar-derived topographic differencing.
- Matlab code for performing a windowed implementation of the Iterative Closest Point (ICP) algorithm using additional Matlab functions for ICP and reading las files that are available from MathWorks. The example datasets from the 2016 Kumamoto, Japan, earthquake are hosted by OpenTopography and can be downloaded here . This tutorial is designed to be relatively straightforward.
- Vertical Topographic Differencing: Here is the vertical differencing code as implemented in OpenTopography.
- LIBICP C++ Code for 3D Differencing : This code performs a windowed implementation of 3D ICP differencing in C++ and is forked from Geiger et al. (2012). We implement this code to perform 3D differencing in OpenTopography.
- 3D Differencing Helper Functions: These Python codes performs the post-processing for the 3D ICP differencing, including making the displayed graphical outputs and geotiff files.. We implement this code to perform 3D differencing in OpenTopography.
- Vertical differencing (starting with point clouds)
- Vertical differencing (starting with raster data)
- 3D differencing
- Interpreting Errors in Topographic Differencing Results
- Using Lidar to Understand the Impacts of the 2025 Palisades and Eaton Fires, Los Angeles, CA
- Vertical or 3D Topographic Differencing See when to use each type of differencing
- Horizontal Georeferencing Errors: See how horizontal georeferencing errors in either dataset lead to artifacts in topographic differencing
- Vertical Differencing on OpenTopography: Perform vertical change on over 20% of the mainland US and many international datasets.
- 3D Differencing on OpenTopography: Perform 3D differencing on OpenTopography with the ICP algorithm.
- 3D Topographic Differencing on Matlab: Perform 3D differencing in Matlab with this script from GitHub.
- 3D Differencing on CloudCompare: Perform 3D differencing using CloudCompare.
- Principles of topographic change detection: by Dr. Joe Wheaton
- Change detection & introduction to PIV (Particle Image Velocimetry): by Dr. Craig Glennie
- 3D Topographic Differencing of Meter-Scale Topography: by Dr. Chelsea Scott
In this undergraduate-oriented exercise, students are geologists working for the United States Geological Survey (USGS) and must respond to a recent pretend but realistic earthquake along the Wasatch Fault. They aid in the response by mapping the surface rupture and calculating the surface displacement, coseismic slip, and earthquake magnitude from lidar topography acquired before and after the earthquake. The exercise is available here.