make.interpolation

make.interpolation will estimate the geometry of a landslide failure surface by interpolating between the landslide extent and user-defined xyz points. The following is typical usage for make.interpolation.

  1. Prepare a topography file as a geotif.

  2. Prepare a polygon reflecting the landslide extent and a set of points reflected estimated failure surface locations.

  3. Run make.interpolation to generate results. Inspect the output and adjust any input parameters as needed.

A code snippet that uses make.interpolation and a few other digger functions in the context of the 2025 Tracy Arm event (Shugar and othesr, 2026) may be found in the file digger/examples/pre-run/tracy_arm/tracy_arm_reconstruction.py.

"""An example of using multiple tools to reconstruct topography and
estimate a landslide slip surface.
"""

import rasterio
from rasterio.merge import merge

from digger import make
from digger.utils import interpolate

# reconstruct the bathymetry
make.interpolation(
    topo_path="../../../data/tracy_arm_topo.tif",
    mask_path="../../../data/tracy_arm_new_water.geojson",
    points_path="../../../data/tracy_arm_water_points.geojson",
    b_prefix="merged_new_water",
    sense="subtract",
    smooth=True,
    smooth_sigma=7,
    write_tt3=False,
    edge_adjustment=0,
)

interpolate.polygon(
    topo_path="merged_new_water.tif",
    mask_path="../../../data/tracy_arm_interp_shoreline.geojson",
    smooth=True,
    smooth_sigma=5,
    file_out="merged_new_water_shoreline_adj_clipped.tif",
)

# merge this into full extent:
# List the paths to the input raster files
to_merge = [
    "../../../data/tracy_arm_topo.tif",
    "merged_new_water_shoreline_adj_clipped.tif",
]
src_ds = [rasterio.open(f) for f in to_merge]

# Merge the datasets
mosaic, out_transform = merge(src_ds, method="last")

# Get the metadata from the first source dataset and update it for the output
out_meta = src_ds[0].meta.copy()
out_meta.update(
    {
        "driver": "GTiff",
        "height": mosaic.shape[1],
        "width": mosaic.shape[2],
        "transform": out_transform,
        "crs": src_ds[0].crs,
    }
)

# Write the merged raster to a new file
with rasterio.open("merged_new_water_shoreline_adj.tif", "w", **out_meta) as dest:
    dest.write(mosaic)

# Close the source datasets
for src in src_ds:
    src.close()

# Estimate the landslide slip surface
make.interpolation(
    topo_path="merged_new_water_shoreline_adj.tif",
    mask_path="../../../data/tracy_arm_source.geojson",
    points_path="../../../data/tracy_arm_ls_points.geojson",
    sense="subtract",
    write_tt3=False,
    edge_adjustment=-10,
)

After this code runs, it will produce geotif files that specify the modified topobathymetry.

It will also create diagnostic figures.

The standard two diagnostic figures from make.interpolation are

Example digger.make.interpolation summary figure.

Fig. 3 An example of the diagnostic output provided by digger.make.interpolation.

Example digger.make.interpolation summary figure.

Fig. 4 An example of the diagnostic output provided by digger.make.interpolation.

References

Shugar, D.H., Barnhart, K.R., Berdahl, M., Caplan-Auerbach, J., Ekström, G., Fathian, A., Geertsema, M., Hicks, S.P., Higman, B., Jensen, E.K., Karasözen, E., Lynett, P., Lyons, J., Monahan, T., Roe, G., Svennevig, K., Toney, L., Van Wyk De Vries, M., and West, M.E., 2026, A 481-meter-high landslide-tsunami in a cruise ship–frequented Alaska fjord: Science, https://doi.org/10.1126/science.aec3187.