1 Introduction

In this module, we will discuss the following concepts:

  1. The potential sources of data available in Google Earth Engine.
  2. Use cases for a sampling of datasets as shown through ecological examples.
  3. How Google Earth Engine can be used to access important metadata.

2 Background

To integrate remotely sensed into your research and analysis, it is very important to learn how to parse the large number of raster datasets available on Google Earth Engine. Understanding the how these data are categorized can help begin this process. If you have absolutely no idea where to start, there is a very helpful resource to peruse the general categories of rasters available in Google Earth Engine data catalog. Various levels of data cleaning and image pre-processing are performed on all the rasters available in Google Earth Engine but for this module we will focus on a broader exploration of finding the right dataset for some example ecological applications. More on pre-processing differences and analyses can be found in Module 5.

2.1 Data Category: Climate & Weather

These are rasters that convey information about temperature, precipitation, evapotranspiration, and other atmospheric and meteorological phenomena. These datasets are often used to help understand the ecological niche of a species or community based on a derived range of suitable habitat. It is important to understand that some of these are created from interpolation methods, which estimate values in the geographic space between monitoring sites, as opposed to many other rasters that provide only direct measurements.

Example Collection: CHIRPS
This dataset contains a variety of climate layers, including temperature and precipitation, as developed and monitored by the PRISM group at Oregon State University. A spatial understanding of climatological factors is invaluable when we attempt to understand the potential ecological niche of a species or group of species at the landscape level.

Monthly rainfall total for May, 2018 over central Africa using the CHIRPS dataset.

2.2 Data Category: Imagery

In this group, the rasters capture landscape characteristics as they pertain to passively collected solar energy, often providing enhanced information about the real world elements on the ground, including plants and soils. It is important to note that imagery rasters are usually split into a number of sub-images (bands) which correspond to particular ranges of light wavelengths. Many of the imagery datasets are used to create spectral indices that are accessible through pre-built collections (more on this in Module 8).

Example Collection: MODIS
The MODIS (Moderate Resolution Imaging Spectroradiometer) program collects data from two spaceborne sensors, Aqua and Terra, and a combination of the two. Numerous derived MODIS products are available on Google Earth Engine in addition to the surface reflectance data including snow cover, land surface temperature, leaf area index, and gross primary productivity. Though its spatial resolution is more coarse than some other imagery datasets, many MODIS products have a high temporal resolution, resulting in a dense time-series. The window between images over the same geographic area is as low as eight days.

MODIS-derived leaf area index predictions over the northern Japanese island of Hokkaido.

2.3 Data Category: Geophysical

The rasters in this group cover a wide range of map types. Elevation and topographic index maps are useful for defining the environmental constraints on species habitats, while land cover maps are convenient, pre-packaged layers that can be used as categorical data or comparisons to image classification you may generate yourself (more on this in Module 7).

Example Collection: NED
The National Elevation Dataset (NED) is a high-quality digital elevation model (DEM) that extends across the continental United States and portions of Alaska and Hawaii. The dataset is compiled from disparate elevation data from around the United States and edited to ensure a consistent spatial resolution, elevation units, and coordinate system. Elevation images like the NED can be used to create topographic indices, inform flood models, or classify geomorphological features.

The U.S. National Elevation Dataset over the Washington and Idaho border.

3 Image Collection Exploration

Now that we have a sense for the depth and breadth of datasets at our disposal, we can take a moment explore one collection in detail. We will explore one of the more unique datasets available data in Google Earth Engine: The MODIS Daily Snow Cover collection. These data allow us to view the percent snow cover for a given pixel on any given day of the year. These data also make possible the creation of weekly, monthly, and yearly averages and have been used in previous research to analyze and monitor snow depth, snow cover extent, and snowmelt.

3.1 Finding and Loading a Collection

To begin exploring the MODIS snow cover dataset, you can load the collection in one of two ways. First, using the search bar, start typing “MYD10A1.006 Aqua Snow Cover Daily Global 500m”.

The result from typing the name of the dataset into the search bar.


If we click on the name of the dataset, we are presented with a pop-up window that contains an ‘Import’ button (highlighted in red). Clicking on this button will automatically load the dataset into the script workspace.

Clicking the ‘Import’ button (highlighted in red) will load the MODIS snow cover collection.


While using the import button is convenient, the command to load our dataset is not actually written into our script. The other way in which to import collections is to copy their ‘ImageCollection ID’ (highlighted below) and paste the shorthand name into your script as follows:




// Load the image collection.
var dataset = ee.ImageCollection('MODIS/006/MYD10A1');

3.2 Quick Geographic Searching

Now that we have found and loaded our image collection, run the script below to quickly load some sample data:

// Load the image collection.
var dataset = ee.ImageCollection('MODIS/006/MYD10A1');

// Limit the collection date range to 2018.
var dataset = dataset
.filterDate('2018-01-01', '2018-12-31');

// Select the snow cover layer and compute the mean.
var snowCover = dataset
.select('NDSI_Snow_Cover')
.mean();

// Define the visualization parameters and add the collection to the map.
var snowCoverVis = {min: 0.0, max: 100.0, palette: ['black', '0dffff', '0524ff', 'ffffff']};
Map.addLayer(snowCover, snowCoverVis, 'Snow Cover');

Feel free to zoom around to various global locations to compare the data in different parts of the world. An easy way to do this is simply by using the search bar. Type in ‘Aleutian Islands’ or ‘Iceland’ or ‘Nepal’ and you will see a list of potential geographic locations. Click on any name to be automatically redirected to that location. Keep in mind that your script may contain code to zoom to a particular geography. So be careful about re-clicking that run button!

three images of different locations In the search bar, type “Nepal” and zoom in to see an image similar to this one.

3.3 Exploring Collection Attributes

Having found and loaded our collection, it is important to understand the image collection metadata available to ecologists interested in using remotely sensed data. Metadata is important to how we determine the appropriateness of an image or image collection given a particular study system or area of interest. The following topics discuss some essential information found in the metadata of image collections in Google Earth Engine.

3.3.1 Spatial Resolution

One of the most important aspects of studying ecological processes is an understanding of scale. In the context of remote sensing, this is referred to as resolution. Specifically, in raster datasets, this is the base Euclidean measurement of the size of a pixel often reported as the length of one side of a pixel in the raster. Understanding relationship between spatial resolution and the physical scale of your ecological application is important and can quickly help you narrow your search for the appropriate datasets.

To find the spatial resolutions of our dataset, once again type the dataset name and click on the results in the search bar (i.e. “MYD10A1.006 Aqua Snow Cover Daily Global 500m”). Sometimes this information (along with the unit of scale) will be displayed under a heading if all the bands in the raster are the same resolution. If there are multiple resolutions within the dataset, there will usually be a table indicating the spatial resolution for each band.

The spatial resolution of the MODIS dataset, indicated in meters. This is a relatively low resolution better suited for regional or global analyses.

3.3.2 Temporal Resolution

In the world of remote sensing, there are many datasets that represent the opportunity to analyze and interpret values over multiple days, months, or years. Temporal resolution is the way we describe the revisit period for sensors. If a satellite has an established orbital pattern, we can determine the day and even the time at which to expect it to pass over the same geographic location. For example, the Landsat program revisits the same location in two week periods, with a specific temporal resolution of 16 days between data acquisitions. Some datasets available in Google Earth Engine are available for daily measurements (i.e. MODIS) while others may be monthly (i.e. WorldClim).

Determining whether or not the date range of the available/usable imagery in your study area lines up with your observations or counting how many images fall within your AOI + date range can be important first steps in gathering data for potential analysis. Appending our script from above with the code below, we will print out this information. To find your own coordinates, click on the ‘Inspector’ tab and then click on the map. The inspector will then grab the coordinates for that point (highlighted in red below).


With the “Inspector” tab active, clicking on the map gives us a coordinate pairing in latitude and longitude.

Your results will vary depending on the coordinates you use (try a few different ones!) but the following code should print the total number of records (“Count”) and the date range of your records to your “Console” tab. Your results may differ depending on your coordinates but the formatting should look similar to the image below.

var dataset = dataset
.filterBounds(ee.Geometry.Point(27.5487, 41.2568)); // Use your own coordinates here!

// Print the number of images in the collection
print('Count: ', dataset.size());

// Print the whole date range of the filtered collection.
var range = dataset.reduceColumns(ee.Reducer.minMax(), ["system:time_start"])
print('Date range: ', ee.Date(range.get('min')), ee.Date(range.get('max')));


Output in the ‘Console’ tab of Google Earth Engine indicating the number of images in our collection and the range of dates that they cover.

4 Conclusion

In summary, we have just started to explore the wealth of data that lies at your fingertips with Google Earth Engine. We also covered several important pieces of metadata that can enhance your search and help find out if your image collection is analysis ready. Chances are the right dataset for your field of study is out there. But do not worry if you cannot find the right one! Just jump to Module 4 to learn about bringing your own data into the Google Earth Engine ecosystem.

4.1 Complete Image Collection Exploration Script

// Load the image collection.
var dataset = ee.ImageCollection('MODIS/006/MYD10A1');

// Limit the collection date range to 2018.
var dataset = dataset
.filterDate('2018-01-01', '2018-12-31');

// Select the snow cover layer and compute the mean.
var snowCover = dataset
.select('NDSI_Snow_Cover')
.mean();

// Define the visualization parameters and add the collection to the map.
var snowCoverVis = {min: 0.0, max: 100.0, palette: ['black', '0dffff', '0524ff', 'ffffff']};
Map.addLayer(snowCover, snowCoverVis, 'Snow Cover');

var dataset = dataset
.filterBounds(ee.Geometry.Point(27.5487, 41.2568)); // Use your own coordinates here!

// Print the number of images in the collection
print('Count: ', dataset.size());

// Print the whole date range of the filtered collection.
var range = dataset.reduceColumns(ee.Reducer.minMax(), ["system:time_start"])
print('Date range: ', ee.Date(range.get('min')), ee.Date(range.get('max')));