ee.Terrain.products

Tính toán độ dốc, hướng và bóng đổ đơn giản từ DEM địa hình.

Yêu cầu một hình ảnh chứa một dải độ cao (tính bằng mét) hoặc nếu có nhiều dải thì một dải có tên là "độ cao". Thêm các dải đầu ra có tên là "độ dốc" và "hướng" (tính bằng độ) cùng với một dải đầu ra byte không dấu có tên là "bóng đổ" để trực quan hoá. Tất cả các dải và siêu dữ liệu khác đều được sao chép từ hình ảnh đầu vào. Độ dốc cục bộ được tính bằng cách sử dụng 4 điểm lân cận được kết nối của mỗi pixel, vì vậy, các giá trị bị thiếu sẽ xuất hiện xung quanh các cạnh của hình ảnh.

Cách sử dụngGiá trị trả về
ee.Terrain.products(input)Hình ảnh
Đối sốLoạiThông tin chi tiết
inputHình ảnhHình ảnh độ cao, tính bằng mét.

Ví dụ

Trình soạn thảo mã (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');

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về Python API và cách sử dụng geemap cho quá trình phát triển có tính tương tác.

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