Page Summary
-
The
ee.Terrain.hillshadefunction 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.
| 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' );
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

