ee.Terrain.products

Menghitung kemiringan, aspek, dan hillshade sederhana dari DEM medan.

Mengharapkan gambar yang berisi satu band elevasi, yang diukur dalam meter, atau jika ada lebih dari satu band, satu band bernama 'elevasi'. Menambahkan band output bernama 'kemiringan' dan 'aspek' yang diukur dalam derajat ditambah band output byte yang tidak ditandatangani bernama 'hillshade' untuk visualisasi. Semua band dan metadata lainnya disalin dari gambar input. Gradien lokal dihitung menggunakan 4 tetangga yang terhubung dari setiap piksel, sehingga nilai yang tidak ada akan muncul di sekitar tepi gambar.

PenggunaanHasil
ee.Terrain.products(input)Gambar
ArgumenJenisDetail
inputGambarGambar elevasi, dalam meter.

Contoh

Editor Kode (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 slope, aspect, and hillshade simultaneously using products().
var nasademProducts = ee.Terrain.products(nasadem);

// Visualization parameters.
var elevationVis = {
  min: 0.0,
  max: 3000.0,
  palette:
      ['333399', '00a2e5', '55dd77', 'ffff99', 'aa926b', 'aa928d', 'ffffff']
};
var slopeVis = {min: 0.0, max: 60.0};
var aspectVis = {min: 0.0, max: 359.99};
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(nasademProducts.select('slope'), slopeVis, 'NASADEM Slope');
Map.addLayer(nasademProducts.select('aspect'), aspectVis, 'NASADEM Aspect');
Map.addLayer(
    nasademProducts.select('hillshade'), 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 slope, aspect, and hillshade simultaneously using products().
var glo30Products = ee.Terrain.products(glo30Image);

// Display layers.
Map.addLayer(glo30Image, elevationVis, 'GLO30 Elevation', false);
Map.addLayer(glo30Products.select('slope'), slopeVis, 'GLO30 Slope');
Map.addLayer(glo30Products.select('aspect'), aspectVis, 'GLO30 Aspect');
Map.addLayer(
    glo30Products.select('hillshade'), hillshadeVis, 'GLO30 Hillshade');

Penyiapan Python

Baca halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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 slope, aspect, and hillshade simultaneously using products().
nasadem_products = ee.Terrain.products(nasadem)

# Visualization parameters.
elevation_vis = {
    'min': 0.0,
    'max': 3000.0,
    'palette': [
        '333399',
        '00a2e5',
        '55dd77',
        'ffff99',
        'aa926b',
        'aa928d',
        'ffffff',
    ],
}
slope_vis = {'min': 0.0, 'max': 60.0}
aspect_vis = {'min': 0.0, 'max': 359.99}
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_products.select('slope'), slope_vis, 'NASADEM Slope')
m.add_layer(nasadem_products.select('aspect'), aspect_vis, 'NASADEM Aspect')
m.add_layer(
    nasadem_products.select('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 slope, aspect, and hillshade simultaneously using products().
glo30_products = ee.Terrain.products(glo30_image)

# Display layers.
m.add_layer(glo30_image, elevation_vis, 'GLO30 Elevation', False)
m.add_layer(glo30_products.select('slope'), slope_vis, 'GLO30 Slope')
m.add_layer(glo30_products.select('aspect'), aspect_vis, 'GLO30 Aspect')
m.add_layer(
    glo30_products.select('hillshade'), hillshade_vis, 'GLO30 Hillshade'
)
m