ee.Terrain.aspect

  • 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.

Calculates aspect in degrees from a terrain DEM.

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' 
 ); 

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

 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 
Design a Mobile Site
View Site in Mobile | Classic
Share by: