Overview
This quickstart guide will walk you through a complete land use and cover change (LUCC) analysis workflow using OpenLand. You’ll learn how to load data, run intensity analysis, and create visualizations.Prerequisites
Before starting, make sure you have:- R version 3.4.0 or higher installed
- OpenLand package installed (installation guide)
- Basic familiarity with R programming
Complete Example Workflow
We’ll use the São Lourenço Basin dataset, which comes bundled with OpenLand. This dataset contains five land use maps (2002, 2008, 2010, 2012, and 2014) covering approximately 22,400 km² in Brazil’s Pantanal wetland region.Load the OpenLand package
Start by loading the package and accessing the sample dataset:
The
SL_2002_2014 dataset has already been processed with contingencyTable(). For your own raster data, see the Raster Input Guide.Customize category names and colors
Edit the legend table to use meaningful category names and colors:
Run intensity analysis
Perform three-level intensity analysis, specifying categories of interest:
Choose
category_n as a category that experienced significant gains and category_m as one with notable losses. This focuses the transition-level analysis on the most relevant patterns.Visualize interval-level results
Plot the interval-level analysis to see change rates over time:This plot shows whether change is accelerating, decelerating, or remaining steady across time intervals.
Visualize transition-level results
Understand which categories Pasture (Ap) is gaining from, and where Gramineous Savannah (SG) is losing to:
Working with Your Own Data
To analyze your own raster time series:Understanding the Output
TheintensityAnalysis() function returns an S4 object with six components:
| Component | Type | Description |
|---|---|---|
lulc_table | data.frame | Contingency table of all transitions |
interval_lvl | Interval S4 | Interval-level analysis comparing change rates across time periods |
category_lvlGain | Category S4 | Category-level analysis of gross gains |
category_lvlLoss | Category S4 | Category-level analysis of gross losses |
transition_lvlGain_n | Transition S4 | Transition-level analysis: sources of gains for category n |
transition_lvlLoss_m | Transition S4 | Transition-level analysis: destinations of losses from category m |
- Slot 1:
lookupcolor- Color mapping for categories - Slot 2: Data table with analysis results
- Slot 3: Stationarity test results
Interpreting Results
Stationarity Tests
Each analysis level includes stationarity tests that determine if patterns are consistent across time intervals:- “Y” (Yes): Pattern is stationary - consistent across time
- “N” (No): Pattern is non-stationary - varies across time
Key Metrics
- St (Interval level): Observed annual rate of change in an interval
- U (Uniform rate): Expected rate if change was uniform across all intervals
- Gtj / Lti (Category level): Observed gain/loss intensity for a category
- Rtin / Qtmj (Transition level): Observed transition intensity between specific categories
When observed intensity > uniform intensity, the change is considered “active” or “targeted”. When observed < uniform, it’s “dormant” or “avoided”.
Next Steps
Core Concepts
Dive deeper into the intensity analysis methodology
Visualization Guide
Learn about all visualization options and customization
API Reference
Explore detailed function documentation
Examples
See complete real-world case studies
Common Issues
Error: 'From' and 'To' columns not found
Error: 'From' and 'To' columns not found
Make sure your contingency table was created with
contingencyTable(). This error occurs when using incorrectly formatted data.Plot shows no arrows or annotations
Plot shows no arrows or annotations
Check that your
marginplot parameter provides enough space. Try marginplot = c(.3, .3) or larger values.Category names appear as numbers
Category names appear as numbers
You need to edit the
tb_legend$categoryName column with factor levels. See Step 2 above.Colors don't match categories
Colors don't match categories
Ensure colors are in the same order as the factor levels in
categoryName, not the original category values.