Реклассифицировать диапазоны в Google Earth Engine - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы реклассифицировать значения Глобальных данных о лесах, например:

0 - 20% -> 1

21 - 49% -> 0,5

50 - 100% -> 0

Однако я не смог найти, как это сделать для диапазонов в GEE. Объяснение для реклассификации отдельных чисел можно найти здесь:

https://sites.google.com/site/globalsnowobservatory/home/Presentations-and-Tutorials/short-tutorial/remap

, но простую процедуру для диапазонов (без деревьев решений) найти сложно. Может ли кто-нибудь предоставить простое решение для этого?

// Example from https://developers.google.com/earth-engine/resample
// Load a MODIS EVI image.
var modis = ee.Image(ee.ImageCollection('MODIS/006/MOD13A1').first())
    .select('EVI');

// Get information about the MODIS projection.
var modisProjection = modis.projection();

// Load and display forest cover data at 30 meters resolution.
var forest = ee.Image('UMD/hansen/global_forest_change_2015')
    .select('treecover2000');

// Get the forest cover data at MODIS scale and projection.
var forestMean = forest
    // Force the next reprojection to aggregate instead of resampling.
    .reduceResolution({
      reducer: ee.Reducer.mean(),
      maxPixels: 1024,
      bestEffort:true
    })
    // Request the data at the scale and projection of the MODIS image.
    .reproject({
      crs: modisProjection
    });

1 Ответ

0 голосов
/ 22 января 2020

Если вы хотите принимать двоичные решения о значениях пикселей, вы можете использовать алгоритм ee.Image.where () . Требуется изображение с логическими значениями, чтобы указать, где в изображении заменить пиксели другим изображением. Самый простой способ использовать его для этого приложения - использовать синтаксис ee.Image.expression() (вместо указания нескольких логических и постоянных изображений):

var reclassified = forestMean.expression('b(0) <= 20 ? 1 : b(0) < 50 ? 0.5 : 0');

b(0) относится к значению первой полосы входное изображение, а ? ... : - это условный оператор ?: , который возвращает часть между ? и :, если условие слева является истинным, и часть справа от : если условие ложно. Таким образом, вы можете использовать серию ? ... : для краткой записи нескольких условий.

Пример выполнения с этой строкой.

...