Skip to content

pyregence-tree-mortality

Dead trees in the southern Sierras

Pre-processing routines, notebooks & modeling resources for California tree mortality mapping.


Documentation: docs.salo.ai/pyregence-tree-mortality

Source code: salosciences/pyregence-tree-mortality


Introduction

This repository contains notes and notebooks for mapping and modeling tree mortality in California to support the Pyregence project.

All data can be found in the pyregence-tree-mortality GCP bucket: gs://pyregence-tree-mortality/.

This repository uses naming conventions and notebook names that follow routines for processing datasets from multiple authors. These include in-house datasets, drone datasets, airborne imaging spectroscopy datasets, and field measurements, which are all described below.


Data sources

Salo-NAIP

Path to detailed docs.

GCP datasts path: gs://pyregence-tree-mortality/salo-naip/

This dataset includes 2-class estimates, with ones encoding dead trees, which were derived from 2016 NAIP overflights in the area surrounding Bass Lake, California.

We generated our mortality estimates using a multi-step process. First, we applied K-means clustering to the high res NAIP data, selecting the classes that visually aligned with the dead trees. But since many of these clusters included bare ground, we needed a good tree cover mask. So Dave trained two models: a bare ground mask to filter out the bare ground points, then a dense u-net model using the filtered k-means cluster map as the response variable and the NAIP imagery as features.

The result was a fairly clean map of dead tree crowns, but performed well only in certain regions. It also included a few superfluous bare ground predictions. So we manually cropped these datasets to areas where we visually inspected that the model worked well, then we used statewide Forest Observatory Canopy Height data to mask ground points, setting values > 5m as trees.


CalPoly-NEON

Path to detailed docs.

GCP datasts path: gs://pyregence-tree-mortality/calpoly-neon/

This dataset is derived from a 2017 NEON flight collected with coincident crown-level field measurements of 7 tree species and one dead tree class (from Fricker et al., 2019, Remote Sensing). This study published a neural network-based species/dead tree classification. Their raster was generally fine, but a bit imprecise (mapping crowns that were typicaly much larger than the observed trees).

So we used their field data to run a random forest and an SVM model to classify live vs dead trees. These pixel-based models were also imprecise. So we ensembled Fricker's network model and our RF/SVM models, classifying pixels with agreement between all three model estimates into a final 1m classification model.


UCB-Drone

Path to detailed docs.

GCP datasts path: gs://pyregence-tree-mortality/ucb-drone/

This dataset is derived from 2018 drone flights across an elevation gradient in the Sierra Nevada (Koontz et al., 2020 preprint). They generated a series of derivative data products, including crown delineations, species classifications and live/dead detection. We did some preprocessing to put all these data together, and they're rasterized at 1m resolution across 33 sites.


UCB-Field

Path to detailed docs.

GCP datasts path: gs://pyregence-tree-mortality/ucb-field/

There are two field datasets included here. First are point locations for a set of ~30,000 trees across the Sierra Nevada ecoregion, which includes an attribute for the year a tree died.

Second is a set of 0.1 ha circular field plots where they calculated the basal area of live and dead trees in each plot and aggregated to the full area.


Salo-Field

Path to detailed docs.

GCP datasts path: gs://pyregence-tree-mortality/salo-field/

These include point occurrence records for dead trees collected in September 2018. More on this later.


Legacy environments and paths

A mortality conda environment (./environment.yml) is provided containing the packages used to handle the data pre-processing for the array of data sources. However, this uses a series of old packages (like the OrfeoToolBox) that we no longer really work with. You should probably only use this environment if you need to re-run a preprocessing notebook.

Many of the notebooks include old paths. Many of these have been deprecated.

  • We now have a dedicated bucket for this project (was previously stored under gs://cfo-nets/tree-mortality)
  • We no longer store datasets in a data/ folder in thos repository: all data should be managed in the bucket.
  • We no longer download and process local files to an external hard drive. Most of this preprocessing

These legacy paths have not been updated because that would take time and effort that are not particularly worthwhile at the moment. But they don't need to be preserved for posterity. This project work was previously tracked in a Salo Bitbucket repository that we can consider a backup for the original paths. This repo is our attempt at a clean start using our new modeling/geospatial processing tools (myco/titan).

Back to top