You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ecology and forest management often require information across large areas and through time. Forests change because of seasonal phenology, growth, harvesting, fire, windthrow, insects, flooding, regeneration, and land-use change. Many of these processes leave spatial and temporal signals that can be explored with satellite imagery.
3
+
Ecology and forest management often require information across large areas and through time. Forests change because of phenology, growth, harvesting, fire, windthrow, insects, flooding, regeneration, and land-use change. Many of these changes leave spatial and temporal signals that can be explored with satellite imagery.
4
4
5
-
Google Earth Engine (GEE) provides access to large geospatial datasets and cloud-based processing tools. This makes it possible to explore forest and ecological questions without downloading and processing large image archives locally.
5
+
Google Earth Engine (GEE) provides access to large geospatial datasets and cloud-based processing tools. This makes it possible to filter, analyze, visualize, and export satellite data without downloading large image archives locally.
6
6
7
7
## Why this workshop?
8
8
9
-
This workshop introduces the potential of GEE through practical applications in ecology and forest management.
9
+
This workshop introduces the potential of GEE through practical, beginner-friendly examples.
10
10
11
-
The goal is to show what kinds of analyses are possible, how typical GEE workflows are structured, and how satellite data can support ecological interpretation and forest monitoring.
11
+
The goal is to show how GEE workflows are structured and how satellite data can support ecological analysis and forest monitoring.
12
12
13
13
We move from basic visualization to applied examples:
14
14
15
-
- terrain analysis using elevation data
16
-
- seasonal vegetation dynamics using Sentinel-2 NDVI
17
-
-long-term forest disturbance detection using Landsat NBR
18
-
-supervised classification using Random Forest
15
+
- terrain analysis with SRTM elevation data
16
+
- seasonal vegetation monitoring with Sentinel-2 NDVI
17
+
- forest disturbance detection with Landsat NBR
18
+
-land-cover classification with Random Forest
19
19
20
-
These examples are not meant to cover every detail of GEE. They are designed to provide a clear starting point for understanding the platform and adapting similar workflows to other questions.
20
+
These examples are not meant to cover every detail of GEE. They provide a starting point for adapting similar workflows to other ecological and forest management questions.
21
21
22
22
## Key concepts
23
23
24
-
- Ecological and forest processes often vary across both space and time.
25
-
- Satellite imagery can help describe vegetation condition, terrain context, and landscape change.
26
24
- GEE allows users to access, filter, analyze, visualize, and export large geospatial datasets in the cloud.
25
+
- Satellite imagery can describe vegetation condition, terrain context, and landscape change.
27
26
- Spectral indices such as NDVI and NBR are useful indicators, but they are not direct ecological measurements.
28
-
- Interpretation requires field knowledge, reference data, and validation.
29
-
- The same GEE workflow logic can be adapted to many applications in ecology and forest management.
27
+
- Interpretation requires ecological knowledge, reference data, and validation.
28
+
- The same GEE workflow logic can be adapted to many applications.
30
29
31
30
## Learning questions
32
31
33
32
1. What kinds of ecological and forest management questions can be explored with GEE?
34
-
2. How can satellite imagery help us observe forest conditions and forest change through time?
35
-
3. What is the difference between detecting a spatial pattern and explaining its ecological cause?
36
-
4. How does cloud-based processing make large-scale geospatial analysis easier?
37
-
5. What are the limits of using spectral indices such as NDVI or NBR to interpret ecological and management processes?
38
-
33
+
2. How does GEE make satellite image analysis easier?
34
+
3. What is the difference between detecting a spatial pattern and explaining its cause?
35
+
4. What are the limits of using indices such as NDVI or NBR?
Google Earth Engine (GEE) is a cloud-based platform for geospatial analysis. It provides access to large satellite image archives, environmental datasets, and tools for processing data directly in the cloud.
4
4
5
-
For ecology and forest management, GEE is useful because it allows users to explore spatial patterns, build time series, calculate spectral indices, summarize raster values, and export results without downloading large image collections locally.
6
-
7
-
This section introduces the basic objects and operations that appear throughout the hands-on activities.
5
+
This section introduces the main Earth Engine objects and operations used throughout the workshop.
8
6
9
7
## Core Earth Engine objects
10
8
11
-
### Image
9
+
### `ee.Image`
12
10
13
11
An `ee.Image` is a raster dataset. It can contain one band or many bands.
14
12
15
-
For example, SRTM elevation is loaded as a single image:
16
-
17
13
```javascript
18
14
var srtm =ee.Image("USGS/SRTMGL1_003");
19
15
````
20
16
21
-
An image can represent elevation, reflectance, NDVI, NBR, classification results, or disturbance year.
17
+
Images can represent elevation, reflectance, NDVI, NBR, classification results, or disturbance year.
22
18
23
-
### ImageCollection
19
+
### `ee.ImageCollection`
24
20
25
-
An `ee.ImageCollection` is a set ofimages. Many satellite datasets are stored as image collections because they contain repeated observations through time.
21
+
An `ee.ImageCollection` is a set of images, often representing repeated observations through time.
26
22
27
23
```javascript
28
24
var s2 = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED");
29
25
```
30
26
31
-
For example, a Sentinel-2 image collection contains many images acquired on different dates. Wecan filter the collection by location, date, cloud cover, and other properties.
27
+
Image collections can be filtered by location, date, cloud cover, and other metadata.
32
28
33
29
### Geometry
34
30
@@ -40,7 +36,7 @@ var point = ee.Geometry.Point([-79.3, 48.45]);
40
36
41
37
In this workshop, geometries are used to define the region of interest, select pixels, clip rasters, and summarize values.
42
38
43
-
### Feature and FeatureCollection
39
+
### `ee.Feature` and `ee.FeatureCollection`
44
40
45
41
A feature is a geometry withattributes. A feature collection is a set of features.
46
42
@@ -50,37 +46,27 @@ var waterbody = ee.FeatureCollection(
50
46
);
51
47
```
52
48
53
-
Feature collections can represent waterbodies, forest inventory polygons, training samples, roads, plots, or management units.
54
-
55
-
## Common operations
56
-
57
-
### Filter by region
58
-
59
-
```javascript
60
-
.filterBounds(roi)
61
-
```
62
-
63
-
This keeps images that intersect the region of interest.
49
+
Feature collections can represent waterbodies, roads, plots, training samples, management units, or forest inventory polygons.
64
50
65
-
For example, if the ROI is around Forêt Duparquet, `.filterBounds(roi)` keeps only images that overlap that area.
51
+
## Common GEE operations
66
52
67
-
### Filter by date
53
+
### Filter an image collection
68
54
69
55
```javascript
70
-
.filterDate("2023-01-01", "2023-12-31")
56
+
var s2Filtered = s2
57
+
.filterBounds(roi)
58
+
.filterDate("2023-01-01", "2023-12-31");
71
59
```
72
60
73
-
This keeps images acquired within a specific date range.
74
-
75
-
Date filters are essential for phenology, annual composites, disturbance detection, and before-after comparisons.
61
+
Filtering keeps only the images needed for the study area and time period.
76
62
77
63
### Select bands
78
64
79
65
```javascript
80
66
var nir = image.select("B8");
81
67
```
82
68
83
-
Band selection keeps only the bands needed foranalysis. For example, NDVIrequires near-infrared and red bands, whileNBRrequires near-infrared and shortwave-infrared bands.
69
+
Band selection keeps the variables needed foranalysis. For example, NDVIuses near-infrared and red bands, whileNBRuses near-infrared and shortwave-infrared bands.
84
70
85
71
### Calculate an index
86
72
@@ -101,11 +87,9 @@ var withNDVI = s2.map(function(image) {
101
87
102
88
`.map()` applies the same function to every image in an image collection.
103
89
104
-
In this example, NDVI is calculated for every Sentinel-2 image.
105
-
106
90
### Reduce values
107
91
108
-
Reducers summarize many values into fewer values.
92
+
Reducers summarize many pixel values into a smaller result.
109
93
110
94
```javascript
111
95
var stats = image.reduceRegion({
@@ -115,29 +99,15 @@ var stats = image.reduceRegion({
115
99
});
116
100
```
117
101
118
-
This example calculates the mean value of an image inside the ROI.
119
-
120
-
Common reducers include:
121
-
122
-
```javascript
123
-
ee.Reducer.mean()
124
-
ee.Reducer.minMax()
125
-
ee.Reducer.sum()
126
-
ee.Reducer.stdDev()
127
-
ee.Reducer.count()
128
-
```
129
-
130
-
Reducers are used to summarize elevation, calculate mean NDVI, estimate disturbed area, and assess classification results.
102
+
Reducers are used to calculate summary statistics, mean NDVI, disturbed area, and accuracy metrics.
131
103
132
104
### Display a layer
133
105
134
106
```javascript
135
107
Map.addLayer(image, visParams, "Layer name");
136
108
```
137
109
138
-
`Map.addLayer()` displays data in the Earth Engine Code Editor map. Visualization parameters control the displayed colors and value range.
139
-
140
-
Displaying a layer does not export or save the result. It only shows the data on the map.
110
+
`Map.addLayer()` displays data in the Code Editor map. It does not export or save the result.
141
111
142
112
### Export a result
143
113
@@ -152,111 +122,89 @@ Export.image.toDrive({
152
122
});
153
123
```
154
124
155
-
Exporting creates a task that saves a raster result to Google Drive. Exports are useful when you want to use the result in QGIS, ArcGIS, R, Python, or another workflow.
125
+
Exporting creates a task that saves a raster result outside Earth Engine, for example to Google Drive.
156
126
157
127
## Client-side and server-side thinking
158
128
159
-
Most Earth Engine objects are server-side objects. This means they describe a computation that will be sent to Google’s servers, rather than a value stored directly in your browser. For more details, see the Earth Engine documentation on [client-side and server-side objects](https://developers.google.com/earth-engine/guides/client_server)
129
+
Most Earth Engine objects are server-side objects. They describe computations that run on Google’s servers.
130
+
131
+
A normal JavaScript number is client-side. An `ee.Number` is server-side. A normal JavaScript list is client-side. An `ee.ImageCollection` is server-side.
160
132
161
133
The key rule is:
162
134
163
135
> Use Earth Engine methods for Earth Engine objects.
164
136
165
-
For example, an `ee.Number` is not the same as a normal JavaScript number. An `ee.ImageCollection` is not the same as a normal JavaScript list.
166
-
167
-
This is why direct JavaScript operations sometimes fail on Earth Engine objects. When working with Earth Engine objects, use Earth Engine functions such as `.map()`, `.filterDate()`, `.filterBounds()`, `.select()`, `.addBands()`, and `.reduceRegion()`.
137
+
For example, use `.map()`, `.filterDate()`, `.filterBounds()`, `.select()`, `.addBands()`, and `.reduceRegion()` with Earth Engine objects.
168
138
169
139
## Lazy evaluation
170
140
171
-
Earth Engine uses lazy evaluation. This means it does not immediately run every operation when a line of code is written.
141
+
Earth Engine uses lazy evaluation. This means it does not run every operation immediately.
172
142
173
-
Instead, the script builds a processing plan. Earth Engine executes that plan when a result is requested, such as when you display a layer, print a value, create a chart, or start an export.
143
+
Instead, the script builds a processing plan. Earth Engine executes that plan when an output is requested, such as a map layer, printed value, chart, or export.
174
144
175
-
This makes it possible to describe large computations without downloading or processing everything locally.
145
+
## Why `system:time_start` matters?
176
146
177
-
## Why `system:time_start`matters
147
+
Time series charts need a date for each image. Earth Engine usually stores this date in the `system:time_start`property.
178
148
179
-
Time series charts need a date for each image. Earth Engine usually stores that date in the `system:time_start` property.
180
-
181
-
For derived composites, such as monthly NDVI or annual NBR images, we often assign this property manually:
149
+
For derived composites, such as monthly NDVI or annual NBR images, we often assign it manually:
This places the composite at a specific date in the chart.
188
-
189
-
The date is converted to milliseconds because Earth Engine stores time as milliseconds since 1970-01-01 UTC, also called the Unix epoch.
190
-
155
+
This places each composite correctly on a chart.
191
156
192
157
## Visualizing versus exporting
193
158
194
-
It is important to separate map visualization from data export.
159
+
Map visualization and data export are different.
195
160
196
161
```javascript
197
162
Map.addLayer(image, visParams, "Layer name");
198
163
```
199
164
200
-
This displays an image on the map.
165
+
This displays an image using colors and value ranges.
201
166
202
167
```javascript
203
168
Export.image.toDrive({...});
204
169
```
205
170
206
-
This saves an image as a raster file.
207
-
208
-
A layer may look good on the map because of the visualization parameters, but the exported raster contains the original data values unless you explicitly export a visualized image.
171
+
This saves raster values to a file.
209
172
210
-
## Why this matters for the hands-on activities
173
+
A layer may look good on the map because of the visualization settings, but the exported raster contains the original data values unless you explicitly export a visualized image.
211
174
212
-
The same GEE logic appears throughout the workshop:
175
+
## Basic GEE workflow
213
176
214
-
* define an ROI
215
-
* load an image or image collection
216
-
* filter by date and region
217
-
* mask unwanted pixels
218
-
* calculate indices or terrain products
219
-
* summarize values with reducers
220
-
* display maps and charts
221
-
* export final outputs
177
+
Most workshop examples follow the same structure:
222
178
223
-
Once this workflow is clear, it can be adapted to many ecological and forest management applications.
179
+
1. define a region of interest
180
+
2. load an image or image collection
181
+
3. filter by date and region
182
+
4. mask unwanted pixels
183
+
5. calculate indices or terrain products
184
+
6. summarize values with reducers
185
+
7. display maps and charts
186
+
8. export final outputs
224
187
225
188
## Questions
226
189
227
190
1. What is the difference between an `ee.Image` and an `ee.ImageCollection`?
228
191
2. Why do we filter image collections by date and region?
229
192
3. What does `.map()` do in Earth Engine?
230
-
4. Why is cloud masking important before analysis?
231
-
5. What does a reducer do?
232
-
6. What is the difference between client-side and server-side objects?
233
-
7. Why does Earth Engine use lazy evaluation?
234
-
8. What is the purpose of `system:time_start` in time series analysis?
235
-
9. What is the difference between visualizing a layer and exporting a result?
236
-
10. Why should we define a clear region of interest before analysis?
193
+
4. What does a reducer do?
194
+
5. What is the difference between visualizing a layer and exporting a result?
237
195
238
196
<details>
239
197
<summary>Answers</summary>
240
198
241
199
1. An `ee.Image` is one raster dataset. An `ee.ImageCollection` is a set of images, often representing repeated observations through time.
242
200
243
-
2. Filtering by date and region keeps only the images relevant to the question and study area. This reduces unnecessary processing and focuses the analysis.
201
+
2. Filtering keeps only the images relevant to the study areaand time period.
244
202
245
203
3.`.map()` applies the same function to every image in a collection.
246
204
247
-
4.Cloud masking removes cloud, shadow, snow, or other poor-quality pixels that can distort indices, composites, charts, and change detection.
205
+
4.A reducer summarizes many values into fewer values, such as a mean, sum, minimum, maximum, or count.
248
206
249
-
5. A reducer summarizes many values into fewer values. For example, it can calculate the mean NDVI inside an ROI or the total disturbed area in hectares.
250
-
251
-
6. Client-side objects exist in the browser as normal JavaScript values. Server-side Earth Engine objects describe computations that run on Google’s servers.
252
-
253
-
7. Lazy evaluation allows Earth Engine to build a processing plan and run it only when an output is requested. This makes large-scale analysis more efficient.
254
-
255
-
8.`system:time_start` stores the date of an image. Time series charts use it to place images correctly on the x-axis.
256
-
257
-
9. Visualization displays data on the map using colors and value ranges. Export saves raster data to a file for use outside Earth Engine.
258
-
259
-
10. A clear ROI limits the analysis to the area of interest, reduces unnecessary processing, and makes summaries and exports more meaningful.
207
+
5. Visualization displays data on the map. Export saves raster data to a file for use outside Earth Engine.
260
208
261
209
</details>
262
210
@@ -280,8 +228,6 @@ var s2 = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED");
280
228
.filterDate("2023-01-01", "2023-12-31")
281
229
```
282
230
283
-
4. Why is this not the same as downloading data to your computer?
284
-
285
231
<details>
286
232
<summary>Answers</summary>
287
233
@@ -291,7 +237,5 @@ var s2 = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED");
291
237
292
238
3. It keeps only images acquired between January 1 and December 31, 2023.
293
239
294
-
4. The data remain in Earth Engine’s cloud environment. The script describes and runs computations on the server. Data are only downloaded if you explicitly export or download a result.
0 commit comments