Intro to Remote Sensing in Ecology using Google Earth engine

Background: This course was offered at the University of Florida in fall 2020.  I designed it as an introduction to remote sensing for advanced graduate students. It's the first class I ever designed or served as lead instructor, so maybe just keep that in mind. Also, despite my attempts to configure lighting, I apologize for the less-than-ideal lighting (I was sharing my office with a ~6 month-old).

 

Course Description: Ecological processes unfold across virtually all scales, from microbes to the entire globe.  However, consideration of these extreme scales has largely been limited by data resolution, data acquisition, and computational demands.  The development of the Earth Engine environment by Google has transformed the way scientists from across disciplines can access, analyze, and share data to address problems at the global scale. The availability and use of these tools is becoming increasingly relevant to ecology with the advancement of remote sensing technology, particularly in regards to measuring vegetation structure, diversity, and change.

 

Course Goal: This course provides students with the understanding and technical skills to scale their ecology research questions to continental and global scales using freely available remote sensing data.  

 

Course Format. This short-course was designed for a period of 3 weeks. Each week's module (below) consists of a few ~20-min. lectures and some example scripts.

 

Course Objectives:

 Specific objectives are for students to:

  1. Search for and acquire geospatial data

  2. Pre-process and filter spectral imagery

  3. Analyze, summarize, and manipulate spatial data

  4. Write, export, and share datasets and programming scripts

Modules

Week 1

We start with VERY brief introductions to remote sensing and Earth Engine. There are lots of additional resources on these topics for further reading. The third lecture for this week jumps into coding in Earth Engine with an example of how to access, filter, and visualize some Landsat reflectance data.

Week 2

This week's lectures explore cloud-masking, functions, calculating spectral metrics (e.g. NDVI), and exporting analyzed images.  There's also a bonus lecture demonstrating wetland inundation mapping using synthetic aperture radar (SAR). Links to scripts can be found below, as well as the link to the SAR webinar I mention.

Sentinel NDVI script

https://code.earthengine.google.com/23775a78cb6f378b5db79176f60854df

 

SAR script

https://code.earthengine.google.com/80605ef3e49bf403a668eee539e1989c 

 

MODIS script

https://code.earthengine.google.com/9414358b1c43cd7a1442182fe4f16999

SAR webinar video

https://www.youtube.com/watch?v=4Y2giuRPCuc

Week 3

In this final series of lectures we cover classification, which is one of the more common remote sensing analyses across disciplines. In addition we cover reducers, which are the way we summarize imagery within a given region or at a series of points.  This sort of thing is often necessary when we want to relate features of the image to animal locations, study sites, etc.

Reducing a collection to annual composites

https://code.earthengine.google.com/252feaf68a1932875d1fb07947878102 

 

 

Calculating a time series at points

This code is a bit more advanced. It is largely based on one of the GEE developer's webinars on Table and Vectors in Earth Engine (easily searched for more info on that)

https://code.earthengine.google.com/1b3e1288236f88466fb9fbd14997d2d5 

 

 

Linear Regression script and video upon which script is based.

At the end I’ve added some code to summarize the extent of mangrove loss (i.e., calculate the area of pixels that meet a certain threshold) within the various countries of the study region, and exports these stats (in general, you could also simply print mangroveLoss to the console, but there is too much data in this analysis to compute on the fly, and thus you need to submit it as a task).  This code would be very similar for calculating the area of a specific land cover type resulting from a classification, as we discussed in class.

https://code.earthengine.google.com/20bad986547bdab9ea4f1385063b93df

Conclusion

If you made it this far, congrats! I hope you learned some things and that there are enough materials here to get you started analyzing imagery in Earth Engine.  I'm happy to answer questions and would be interested in discussing potential collaborations. My info is on the contact page.