ee.Terrain.hillshade

  • The ee.Terrain.hillshade function computes a simple hillshade from a digital elevation model (DEM) input.

  • It returns an Image and takes an elevation image, illumination azimuth (default 270 degrees), and illumination elevation (default 45 degrees) as arguments.

  • Examples in both JavaScript (Code Editor) and Python (Colab) demonstrate its usage.

Computes a simple hillshade from a DEM.
Usage Returns
ee.Terrain.hillshade(input, azimuth , elevation ) Image
Argument Type Details
input
Image An elevation image, in meters.
azimuth
Float, default: 270 The illumination azimuth in degrees from north.
elevation
Float, default: 45 The illumination elevation in degrees.

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 hillshade: grayscale values representing illumination. 
 var 
  
 nasademHillshade 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 hillshade 
 ( 
 nasadem 
 ); 
 // Visualization parameters. 
 var 
  
 elevationVis 
  
 = 
  
 { 
  
 min 
 : 
  
 0.0 
 , 
  
 max 
 : 
  
 3000.0 
 , 
  
 palette 
 : 
  
 [ 
 '333399' 
 , 
  
 '00a2e5' 
 , 
  
 '55dd77' 
 , 
  
 'ffff99' 
 , 
  
 'aa926b' 
 , 
  
 'aa928d' 
 , 
  
 'ffffff' 
 ] 
 }; 
 var 
  
 hillshadeVis 
  
 = 
  
 { 
 min 
 : 
  
 150.0 
 , 
  
 max 
 : 
  
 255.0 
 }; 
 // Display layers. 
 Map 
 . 
 setCenter 
 ( 
 - 
 121.603 
 , 
  
 47.702 
 , 
  
 9 
 ); 
 Map 
 . 
 addLayer 
 ( 
 nasadem 
 , 
  
 elevationVis 
 , 
  
 'NASADEM Elevation' 
 , 
  
 false 
 ); 
 Map 
 . 
 addLayer 
 ( 
 nasademHillshade 
 , 
  
 hillshadeVis 
 , 
  
 'NASADEM Hillshade' 
 ); 
 // 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 hillshade. 
 var 
  
 glo30Hillshade 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 hillshade 
 ( 
 glo30Image 
 ); 
 // Display layers. 
 Map 
 . 
 addLayer 
 ( 
 glo30Image 
 , 
  
 elevationVis 
 , 
  
 'GLO30 Elevation' 
 , 
  
 false 
 ); 
 Map 
 . 
 addLayer 
 ( 
 glo30Hillshade 
 , 
  
 hillshadeVis 
 , 
  
 'GLO30 Hillshade' 
 ); 

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 hillshade: grayscale values representing illumination. 
 nasadem_hillshade 
 = 
 ee 
 . 
 Terrain 
 . 
 hillshade 
 ( 
 nasadem 
 ) 
 # Visualization parameters. 
 elevation_vis 
 = 
 { 
 'min' 
 : 
 0.0 
 , 
 'max' 
 : 
 3000.0 
 , 
 'palette' 
 : 
 [ 
 '333399' 
 , 
 '00a2e5' 
 , 
 '55dd77' 
 , 
 'ffff99' 
 , 
 'aa926b' 
 , 
 'aa928d' 
 , 
 'ffffff' 
 , 
 ], 
 } 
 hillshade_vis 
 = 
 { 
 'min' 
 : 
 150.0 
 , 
 'max' 
 : 
 255.0 
 } 
 # 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_hillshade 
 , 
 hillshade_vis 
 , 
 'NASADEM Hillshade' 
 ) 
 # 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 hillshade. 
 glo30_hillshade 
 = 
 ee 
 . 
 Terrain 
 . 
 hillshade 
 ( 
 glo30_image 
 ) 
 # Display layers. 
 m 
 . 
 add_layer 
 ( 
 glo30_image 
 , 
 elevation_vis 
 , 
 'GLO30 Elevation' 
 , 
 False 
 ) 
 m 
 . 
 add_layer 
 ( 
 glo30_hillshade 
 , 
 hillshade_vis 
 , 
 'GLO30 Hillshade' 
 ) 
 m 
Design a Mobile Site
View Site in Mobile | Classic
Share by: