Science Examples
In this chapter you will find a variety of real-world examples that may help you create a custom Jupyter Notebook for your research. These notebooks have dataset specific analysis and visualization examples, and will also provide examples of analysis, data access, tabulation and map-visualization.
AGB reference maps in R using airborne laser scanning (ALS)
This workflow is a demonstration of one possible approach for creating aboveground biomass reference maps in R using airborne laser scanning (ALS) and field plot inventory data collected over plots located across the Canal Zone in central Panama. This version tests the approach over two flightlines of ALS collected at Panama Pacifico.
It is highly recommended to run this tutorial within the "Rtools add-on" environment, which already includes useful R packages, such as lidR. Running this tutorial outside of this environment may lead to errors.
Using local relationships between forest inventory data and ALS, this workflow demonstrates ALS processing and generation of some illustratory plots for ALS, canopy products, and plot shapefiles. Users of this workflow will:
- Prepare the workspace.
- Access the ALS data and read it into a workspace.
- Process the ALS data to produce terrain and canopy products and ALS metrics.
- Access the field plot data and associated geospatial data.
- Generate figures illustrating the datasets.
Prepare the workspace
- Load the necessary packages in R:
Access the ALS data and read it into the workspace as a LAScatalog
Process the ALS data to produce terrain and canopy products
This workflow produces five levels of products, including two transformations of the point cloud and three categories of raster data:
Classified_points
In the first step, read in the ALS flightlines from their source; performing some filtering on read. Only read one point per 2x2 cm voxel, drop points below the lowest elevation expected at the site, only read points with scan angles +/- 15 degrees from nadir, and drop likely noise points with very high numbers of returns or return numbers. Next, classify isolated points occurring above or below the canopy as noise. These points will affect canopy metrics downstream, and should be removed. They can represent real returns from birds or aerosols or can be artifacts, especially near water features. Next, classify ground returns using a cloth simulation filter algorithm. Ground classification is necessary to model terrain because point cloud Z values represent absolute elevation rather than canopy height. To quantify canopy height, it is necessary to subtract the elevation of terrain.
DTM_raster
From classified ground returns, produce a raster of terrain elevations by producing a triangualted irregular network (TIN) from the lowest value within each pixel. Also perform some smoothing to produce a realistic model for canopy height normalization.
Normalized_points
Subtract the terrain value from the Z values in the point cloud to produce a new point cloud where Z represents normalized canopy height.
CHM_raster
Subtract the terrain value from the Z values in the point cloud to produce a new point cloud where Z represents normalized canopy height.
Metrics_raster
Generate canopy metrics as predictors for modeling of aboveground biomass at a pixel resolution of 50 m:
- z_p99: the height below which 99% of returns occur,
- z_mean: the mean height of returns,
- z_cv: the coefficient of variation of return heights,
- z_above5: canopy cover above 5 m,
- a_mean: mean absolute scan angle,
- z_count: the number of returns.
Then generate derived metrics:
- slope: the mean slop derived from the DTM,
- elevation: the mean elevation from the DTM,
- volume: canopy volume as the sum of pixel heights from the smoothed CHM,
- LAI: leaf area index above 5 m; derived from canopy cover adjusted for scan angle


![]()
Access the field plot data and associated geospatial data
Read in plot shapefiles as sf (simple feature) object in the sf package.
Generate figures illustrating the datasets

A cross section of a point cloud illustrating points classified as ground with the cloth simulation filter.

A cross section of a point cloud illustrating points with Z values representing canopy height, after normalization to a digital terrain model.

A subset of the digital terrain model and the canopy height model; plot outline shown in white; transect shown as white dotted line.
Biomass and NISAR Datasets Overlap
In this example it is showed how you can query ESA Biomass and NASA NISAR granules to plot the footprint polygons into an interactive Folium map, as two toggleable layers.
It is recommended to use the MAAP environment.
Pre-requisites
Inputs Configuration
In the next cell you need to define the parameters to search both catalogs (ESA catalog and NASA catalog) and compute overlaps.
-
BBOX defines the area of interest as (min_lon, min_lat, max_lon, max_lon) and can be used to spatially filter both datasets.
-
NISAR_DT sets the datetime range for the NISAR STAC search (tighten this first to avoid timeouts).
-
BIOMASS_DT sets the datetime range for the BIOMASS STAC search.
-
NISAR_STAC_URL is the STAC endpoint used to query NISAR items (CMR-STAC / ASF).
-
NISAR_COLLECTION is the NISAR collection ID used in the STAC search (e.g.,
NISAR_L2_GSLC_BETA_V1_1). -
BIOMASS_STAC_URL is the STAC endpoint used to query BIOMASS items (ESA MAAP STAC).
-
BIOMASS_COLLECTION is the BIOMASS collection name used in the STAC search (e.g.,
BiomassLevel1b).
Perform the query to the catalogs and convert the returned items into a GeoDataFrame
Here the returned STAC items are converted into gdf_nisar and gdf_biomass, a GeoDataFrame whose geometry columns contain the true NISAR and Biomass footprint polygons and whose ID/title field is kept for labeling and later joins.
No data files are downloaded: only metadata footprints are used.
Biomass and NISAR Footprint Layers
Here it is created an interactive Folium map and an overlay of the two GeoDataFrames.
Find the overlap
To identify which Biomass footprint polygons intersect which NISAR footprint polygons, you can use GeoPandas spatial join. Then, the total number of intersection pairs found is printed out.
Finally, you need to create the actual overlap polygons and then visualise only those overlaps on a map.





No comments to display
No comments to display