This introductory workshop presents Google Earth Engine (GEE) as a practical platform for geospatial analysis in ecology and forest management.
Using simple examples from the Forêt Duparquet region in northwestern Québec, the workshop introduces core GEE concepts through terrain analysis, vegetation monitoring, disturbance mapping, land-cover classification, and result sharing with a simple GEE app.
Although the examples focus on Forêt Duparquet, the workflows can be adapted to other ecological, forestry, and land-management contexts.
Workshop objectives¶
By the end of the workshop, you will have been introduced to:
running Earth Engine workflows with JavaScript in the GEE Code Editor and Python in Google Colab
accessing public datasets such as Sentinel-2, Landsat, and SRTM
filtering image collections by location, date, and metadata
creating image composites for a region of interest
calculating and interpreting vegetation indices such as NDVI and NBR
deriving terrain products from SRTM elevation data
exploring pixel-level phenology with Sentinel-2 NDVI
detecting possible forest disturbance with Landsat NBR time series
mapping land cover with Random Forest classification
sharing results through maps, charts, exports, and a simple GEE app
recognizing the strengths and limitations of GEE
Workshop structure¶
The workshop is organized into three main sections.
1. Introduction to GEE¶
This section introduces GEE as a cloud-based platform for geospatial analysis.
We discuss what GEE is, how it differs from desktop GIS workflows, and why it is useful for working with large satellite and environmental datasets.
Guiding questions:
What is GEE?
What can GEE be used for?
What datasets are available in the Earth Engine Data Catalog?
How does cloud-based geospatial analysis work?
What are the main strengths and limitations of GEE?
2. GEE fundamentals¶
This section introduces the GEE work environment and the logic of common GEE workflows.
Topics include:
the GEE Code Editor
basic JavaScript syntax used in GEE
geometries and regions of interest
ee.Imageee.ImageCollectionee.Featureee.FeatureCollectionspatial filters
temporal filters
metadata filters
cloud, shadow, snow, and water masking
band selection
spectral indices
reducers
charts
map visualization
exports
running Earth Engine workflows in Python and Google Colab
Guided demonstrations show how Earth Engine scripts are structured and how basic analysis steps fit together.
Guiding questions:
What is the difference between an image and an image collection in GEE?
Why do we filter image collections by date, location, and metadata?
What is the role of a region of interest?
How do we calculate new image bands and spectral indices?
What does a reducer do in GEE?
What is the difference between displaying a layer, charting a result, and exporting an output?
3. Hands-on GEE workflows¶
The second half of the workshop presents guided examples that combine core GEE operations into complete workflows.
Hands-on: Reading the landscape with SRTM terrain data¶
This module introduces raster processing in GEE using SRTM elevation data.
You will load an elevation dataset from the Earth Engine Data Catalog, clip it to a region of interest, derive terrain products, display map layers, calculate summary statistics, and export results.
Main GEE operations:
load an
ee.Imagedefine an ROI
clip a raster
calculate slope, aspect, and hillshade
set visualization parameters
add layers to the map
summarize raster values with
reduceRegionexport an image
Main outputs:
elevation
slope
aspect
hillshade visualization
elevation summary statistics
Guiding questions:
How do we load and display an image in GEE?
How do we clip raster data to a region of interest?
How do we derive new raster layers from an input image?
How do visualization parameters affect map display?
How do we summarize and export raster outputs?
Hands-on: Following forest greenness through the year¶
This module introduces image collections, temporal filtering, cloud masking, compositing, and charting in GEE.
You will load Sentinel-2 imagery, calculate NDVI, create monthly composites, display monthly NDVI maps, and inspect pixel-level time series.
Main GEE operations:
load an
ee.ImageCollectionfilter by date, location, and cloud metadata
apply a cloud and water mask
calculate NDVI
create monthly composites
map a function over a list
build an
ee.ImageCollectionfrom imagesdisplay multiple map layers
create pixel-level and ROI-level charts
Main outputs:
monthly NDVI maps
pixel-level NDVI time series
whole-ROI NDVI summary curve
Guiding questions:
How do we filter an image collection in GEE?
How do we calculate NDVI?
How do we create monthly composites?
How do we display time-varying image layers?
How do we inspect pixel values through time?
How does cloud masking affect the result?
Hands-on: Detecting forest disturbance through time¶
This module introduces long-term time series analysis in GEE using Landsat imagery from 2000 to 2025.
You will harmonize Landsat sensors, calculate annual summer NBR composites, estimate year-to-year NBR drops, map possible canopy disturbance, chart disturbance area, and inspect pixel-level time series.
Main GEE operations:
merge Landsat image collections
harmonize band names across sensors
apply cloud, shadow, snow, and saturation masks
calculate NBR
create annual composites
calculate year-to-year change
apply a disturbance threshold
mask water pixels
use
qualityMosaicto identify the strongest disturbance yearestimate area with pixel area and reducers
create charts
export disturbance maps
Main outputs:
annual NBR composites
annual disturbance maps
pixel-level NBR time series
pixel-level NBR-change time series
strongest disturbance year map
possible disturbed area by year
Guiding questions:
How do we combine Landsat sensors in GEE?
Why do we harmonize band names across sensors?
How do we create annual image composites?
How do we calculate year-to-year spectral change?
How does a threshold affect the mapped output?
How do we summarize disturbed area by year?
Hands-on: Mapping land cover with Random Forest classification¶
This module introduces supervised classification in GEE.
You will create or load training samples, build predictor variables, train a Random Forest classifier, classify the ROI, assess accuracy, and inspect variable importance.
Main GEE operations:
create or load training samples as an
ee.FeatureCollectionbuild a predictor image stack
sample raster values at training locations
split samples into training and validation sets
train
ee.Classifier.smileRandomForestclassify an image
calculate a confusion matrix
assess accuracy metrics
inspect classifier variable importance
export a classified raster
Main outputs:
training sample dataset
predictor image stack
classified map
confusion matrix
accuracy metrics
variable importance results
Guiding questions:
How do we prepare training samples in GEE?
How do we build a predictor stack?
How do we train a Random Forest classifier?
How do we classify an image?
How do we assess classification accuracy?
How do we interpret variable importance?
Important interpretation note¶
GEE makes it easy to process and visualize large volumes of satellite data, but the results still need careful interpretation.
For example, the disturbance workflow detects spectral canopy change, not harvesting directly. A strong decrease in NBR may indicate harvesting, but it may also result from fire, windthrow, insect damage, road construction, flooding, wetland change, residual cloud or shadow, or sensor artifacts.
Earth Engine outputs should therefore be interpreted as indicators. They require ecological knowledge, validation data, and careful consideration of uncertainty.
Before the workshop¶
You should have:
a Google Earth Engine account
access to the Earth Engine Code Editor
a modern web browser
basic familiarity with GIS, remote sensing, or ecological spatial data
No local installation is required for the main Earth Engine Code Editor exercises. Google Colab notebooks are provided as optional Python versions.
How to use this website¶
Each module includes:
a short explanation of the GEE workflow
JavaScript code for the GEE Code Editor and optional Python code for Google Colab
expected outputs
interpretation notes
guiding questions
You can copy the code into the GEE Code Editor, open the provided links, run the examples, inspect the outputs, and discuss what the results show.
Workshop scope¶
This is an introductory workshop. The emphasis is on understanding GEE concepts, reading and adapting scripts, and connecting basic operations into practical workflows.
After the workshop, you should be better prepared to:
understand what GEE can do
navigate the GEE Code Editor and Data Catalog
read and adapt simple Earth Engine scripts
work with images, image collections, features, and feature collections
create maps, charts, summaries, and exports
recognize the strengths and limitations of GEE
continue learning through documentation, examples, and applied projects
Suggested citation¶
If you use or adapt these materials, please cite:
Kabuanga, J. M., Verabhadraswamy, N., Vega Escobar, A., and Valeria, O. 2026. Introductory workshop to Google Earth Engine: fundamentals and applications in ecology and forest management. Workshop materials, CEF 2026 Workshop, Université Laval, Québec City, May 27, 2026. https://forestcguy.github.io/cef2026-gee-workshop/