ee.Terrain.products

地形 DEM から傾斜、斜面方位、単純な陰影を計算します。

標高の単一バンド(メートル単位)を含む画像、または複数のバンドがある場合は「elevation」という名前のバンドを含む画像を想定しています。度単位で測定された「slope」と「斜面方位」という名前の出力バンドと、可視化用の「hillshade」という名前の符号なしバイト出力バンドを追加します。他のすべてのバンドとメタデータは、入力画像からコピーされます。ローカル グラデーションは各ピクセルの 4 連結近傍を使用して計算されるため、画像のエッジ付近で欠損値が発生します。

用途戻り値
ee.Terrain.products(input)画像
引数タイプ詳細
input画像標高画像(メートル単位)。

コードエディタ(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');

Python の設定

Python API とインタラクティブな開発での geemap の使用については、 Python 環境ページをご覧ください。

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