Page Summary
-
This function calculates aspect in degrees from a terrain Digital Elevation Model (DEM).
-
Missing values will occur around the edges of an image because the local gradient is computed using 4-connected neighbors.
-
The function
ee.Terrain.aspect(input)takes an elevation image as input and returns an Image. -
The returned aspect units are in degrees, where 0 is North, 90 is East, 180 is South, and 270 is West.
The local gradient is computed using the 4-connected neighbors of each pixel, so missing values will occur around the edges of an image.
| Usage | Returns |
|---|---|
ee.Terrain.aspect(input) | Image |
| Argument | Type | Details |
|---|---|---|
input | Image | An elevation image, in meters. |
Examples
Code Editor (JavaScript)
// Demonstrate ee.Terrain functions with single-image and collection DEMs. // DEMs in Earth Engine are often distributed as single images per asset // (e.g., NASA/NASADEM_HGT/001) or as collections of tiled images that need // to be mosaicked (e.g., COPERNICUS/DEM/GLO30). Terrain analysis functions // compute values based on neighboring pixels, so care must be taken to // select and prepare DEM inputs appropriately. // 1. Single DEM image asset. // Assets like NASADEM are presented as single images covering large areas. // They generally have a single projection and can be used in terrain analysis // with no preprocessing. var nasadem = ee.Image('NASA/NASADEM_HGT/001').select('elevation'); // Calculate aspect: degrees, 0=N, 90=E, 180=S, 270=W. var nasademAspect = ee.Terrain.aspect(nasadem); // Visualization parameters. var elevationVis = { min: 0.0, max: 3000.0, palette: ['333399', '00a2e5', '55dd77', 'ffff99', 'aa926b', 'aa928d', 'ffffff'] }; var aspectVis = {min: 0.0, max: 359.99}; // Display layers. Map.setCenter(-121.603, 47.702, 9); Map.addLayer(nasadem, elevationVis, 'NASADEM Elevation', false); Map.addLayer(nasademAspect, aspectVis, 'NASADEM Aspect'); // 2. Mosaicked DEM ImageCollection asset. // In contrast to single-image assets like NASADEM, some DEMs like GLO30 are // provided as a collection of images that need to be mosaicked before use. // We use this mosaicked DEM for the terrain calculations below. var glo30collection = ee.ImageCollection('COPERNICUS/DEM/GLO30'); // When mosaicking a DEM collection that will be used for terrain analysis, // it is best practice to set the mosaic's default projection to the native // projection of the DEM tiles. If you don't, Earth Engine's default // projection for mosaics (EPSG:4326 at 1-degree scale) is used, which is // often too coarse for analysis and can lead to resampling artifacts if // the result is reprojected to a different CRS during computation. // See: // https://developers.google.com/earth-engine/guides/projections#reprojecting var glo30Proj = glo30collection.first().projection(); var glo30Image = glo30collection.select('DEM').mosaic().setDefaultProjection(glo30Proj); // Calculate aspect. var glo30Aspect = ee.Terrain.aspect(glo30Image); // Display layers. Map.addLayer(glo30Image, elevationVis, 'GLO30 Elevation', false); Map.addLayer(glo30Aspect, aspectVis, 'GLO30 Aspect');
import ee import geemap.core as geemap
Colab (Python)
# Demonstrate ee.Terrain functions with single-image and collection DEMs. # DEMs in Earth Engine are often distributed as single images per asset # (e.g., NASA/NASADEM_HGT/001) or as collections of tiled images that need # to be mosaicked (e.g., COPERNICUS/DEM/GLO30). Terrain analysis functions # compute values based on neighboring pixels, so care must be taken to # select and prepare DEM inputs appropriately. # 1. Single DEM image asset. # Assets like NASADEM are presented as single images covering large areas. # They generally have a single projection and can be used in terrain analysis # with no preprocessing. nasadem = ee.Image('NASA/NASADEM_HGT/001').select('elevation') # Calculate aspect: degrees, 0=N, 90=E, 180=S, 270=W. nasadem_aspect = ee.Terrain.aspect(nasadem) # Visualization parameters. elevation_vis = { 'min': 0.0, 'max': 3000.0, 'palette': [ '333399', '00a2e5', '55dd77', 'ffff99', 'aa926b', 'aa928d', 'ffffff', ], } aspect_vis = {'min': 0.0, 'max': 359.99} # Display layers. m = geemap.Map() m.set_center(-121.603, 47.702, 9) m.add_layer(nasadem, elevation_vis, 'NASADEM Elevation', False) m.add_layer(nasadem_aspect, aspect_vis, 'NASADEM Aspect') # 2. Mosaicked DEM ImageCollection asset. # In contrast to single-image assets like NASADEM, some DEMs like GLO30 are # provided as a collection of images that need to be mosaicked before use. # We use this mosaicked DEM for the terrain calculations below. glo30_collection = ee.ImageCollection('COPERNICUS/DEM/GLO30') # When mosaicking a DEM collection that will be used for terrain analysis, # it is best practice to set the mosaic's default projection to the native # projection of the DEM tiles. If you don't, Earth Engine's default # projection for mosaics (EPSG:4326 at 1-degree scale) is used, which is # often too coarse for analysis and can lead to resampling artifacts if # the result is reprojected to a different CRS during computation. # See: # https://developers.google.com/earth-engine/guides/projections#reprojecting glo30_proj = glo30_collection.first().projection() glo30_image = ( glo30_collection.select('DEM').mosaic().setDefaultProjection(glo30_proj) ) # Calculate aspect. glo30_aspect = ee.Terrain.aspect(glo30_image) # Display layers. m.add_layer(glo30_image, elevation_vis, 'GLO30 Elevation', False) m.add_layer(glo30_aspect, aspect_vis, 'GLO30 Aspect') m