Введение в данные Хансена и др. по глобальным изменениям лесного покрова

Набор данных «Глобальное изменение лесного покрова» Хансена и др. (2013) в Earth Engine отображает изменения лесного покрова в глобальном масштабе с разрешением 30 метров в период с 2000 по 2014 год. Начнём с добавления данных Хансена и др. на карту. Импортируйте данные об изменении лесного покрова в глобальном масштабе ( подробнее о поиске и импорте наборов данных ), выполнив поиск по запросу «Hansen forest» и указав имя импортируемого файла gfc2014 , или скопируйте следующий код в редактор кода:

Редактор кода (JavaScript)

var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015');
Map.addLayer(gfc2014);

Нажмите кнопку «Выполнить» в верхней части редактора кода, и вы увидите что-то похожее на рисунок 1.

изменение леса по умолчанию
Рисунок 1. Визуализация данных об изменении лесного фонда Хансена и др. (2013).

Не волнуйтесь, скоро вы улучшите его. ( Подробнее о визуализации изображений по умолчанию в Earth Engine ). К концу этого раздела у вас будет изображение, похожее на рисунок 2, где зелёный цвет обозначает места, где в ходе исследования был обнаружен лес в 2000 году, красный — предполагаемую потерю лесов за исследуемый период, синий — прирост лесов за этот период, пурпурный — области, где леса как исчезли, так и увеличились, а нелесные участки замаскированы.

обычай изменения леса
Рисунок 2. Пользовательская визуализация данных об изменении лесного фонда Хансена и др. (2013).

Напомним, что при добавлении многоканального изображения на карту первые три канала изображения выбираются как красный, зелёный и синий соответственно и растягиваются в соответствии с типом данных каждого канала. Изображение выглядит красным, поскольку первые три канала — это treecover2000 , loss и gain . Канал treecover2000 выражается в процентах и имеет значения, значительно превышающие значения loss (зелёный) и gain (синий), которые являются двоичными ({0, 1}). Поэтому изображение отображается в подавляющем красном цвете.

Полосы данных по глобальному изменению лесного покрова следующие:

Название группы Описание Диапазон
treecover2000 Процент покрытия деревьев в пикселе. 0 - 100
потеря 1, если в течение периода исследования когда-либо произойдет убыток. 0 или 1
прирост 1, если прирост когда-либо произойдет в течение периода исследования. 0 или 1
убыточный год Год, в котором был понесен убыток, индексируется на единицу с 2001 года или на ноль, если убыток не был понесен. 0 - 12
first_b30 Красный диапазон Landsat 7, созданный на основе первых действительных пикселей в 2000 году (или ранее, если в 2000 году действительных пикселей не было). 0 - 255
first_b40 Ближний инфракрасный диапазон Landsat 7, созданный на основе первых действительных пикселей в 2000 году. 0 - 255
first_b50 Первый коротковолновый инфракрасный диапазон спутника Landsat 7, созданный на основе первых действительных пикселей в 2000 году. 0 - 255
first_b70 Второй коротковолновый инфракрасный диапазон спутника Landsat 7, созданный на основе первых действительных пикселей в 2000 году. 0 - 255
последний_b30 Красный диапазон Landsat 7, созданный на основе последних действительных пикселей в 2012 году. 0 - 255
последний_b40 Ближний инфракрасный диапазон Landsat 7, созданный на основе последних действительных пикселей в 2012 году. 0 - 255
последний_b50 Первый коротковолновый инфракрасный диапазон Landsat 7, созданный на основе последних действующих пикселей 2012 года. 0 - 255
последний_b70 Второй коротковолновый инфракрасный диапазон Landsat 7, созданный на основе последних действительных пикселей 2012 года. 0 - 255
маска данных Данные отсутствуют (0), нанесенная на карту поверхность земли (1) и постоянные водоемы (2). 0, 1, 2

Чтобы отобразить лесной покров 2000 года в виде изображения в оттенках серого, можно использовать канал treecover2000 , указанный во втором аргументе Map.addLayer() :

Редактор кода (JavaScript)

Map.addLayer(gfc2014, {bands: ['treecover2000']}, 'treecover2000');

В результате получится изображение, похожее на показанное на рисунке 3.

древесный покров в США
Рисунок 3. Изображение лесного покрова в США в оттенках серого в 2000 году.

Вот изображение, на котором использованы 3 канала: каналы Landsat 5, 4 и 3 за 2015 год. Эта комбинация каналов показывает здоровую растительность зеленым цветом, а почву — лиловым:

Редактор кода (JavaScript)

Map.addLayer(
    gfc2014, {bands: ['last_b50', 'last_b40', 'last_b30']}, 'false color');

Результат должен выглядеть примерно так, как показано на рисунке 4.

США ложный цвет
Рисунок 4. Композитный снимок США со спутника Landsat 7 в псевдоцветах за 2015 год.

Наглядная визуализация набора данных Global Forest Change показывает площадь лесов в 2000 году зелёным цветом, потерю лесов — красным, а прирост лесов — синим. В частности, loss лесов следует сделать первой полосой (красной), treecover2000 — второй (зелёной), а gain — третьей (синей):

Редактор кода (JavaScript)

Map.addLayer(gfc2014, {bands: ['loss', 'treecover2000', 'gain']}, 'green');

Значения полосы потерь и усиления являются двоичными, поэтому они будут едва заметны на изображении, которое должно выглядеть примерно так, как показано на рисунке 5.

Лесной покров США
Рисунок 5. Лесной покров в США в 2000 году (зеленый).

Мы хотим, чтобы спад леса отображался ярко-красным цветом, а прирост леса — ярко-синим. Чтобы это исправить, можно использовать параметр визуализации max , чтобы задать диапазон, до которого растягиваются данные изображения. Обратите внимание, что параметр визуализации max принимает список значений, соответствующих максимумам для каждого диапазона:

Редактор кода (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['loss', 'treecover2000', 'gain'],
  max: [1, 255, 1]
}, 'forest cover, loss, gain');

Результат должен выглядеть примерно так, как показано на рисунке 6.

Изменение лесного фонда США
Рисунок 6. Потеря лесов в США (красный), лесной покров в 2000 году (зеленый) и прирост (синий).

В результате изображение получается зелёным там, где есть лес, красным там, где есть потеря леса, синим там, где есть прирост леса, и пурпурным там, где есть и прирост, и убыль. Однако при более внимательном рассмотрении становится ясно, что это не совсем так. Вместо того, чтобы показывать потерю красным, она становится оранжевой. Это происходит потому, что ярко-красные пиксели смешиваются с нижележащими зелёными пикселями, образуя оранжевые пиксели. Аналогично, пиксели, где есть лес, потеря леса и прирост, розовые — это комбинация зелёного, ярко-красного и ярко-синего. См. иллюстрацию на рисунке 7.

Изменение лесного покрова на северо-западе Тихого океана
Рисунок 7. Потеря лесов на северо-западе Тихого океана США (красный), лесной покров в 2000 году (зеленый) и прирост (синий).

Чтобы получить изображение, обещанное в начале урока, вы можете создать отдельные изображения для леса, потерь, прироста, а также для потерь и прироста. Добавьте каждое из этих изображений на карту в порядке, удобном для отображения.

Палитры

Чтобы отобразить каждое изображение в отдельном цвете, можно использовать параметр palette метода Map.addLayer() для одноканальных изображений. Палитры позволяют задать цветовую схему, в которой будет отображаться изображение ( подробнее о палитрах ). Вспомните руководство по API Earth Engine: цвета в палитре линейно растягиваются до min и max .

Например, чтобы использовать зеленую палитру для отображения изображения территории леса, можно использовать:

Редактор кода (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00']
}, 'forest cover palette');

Результат должен выглядеть примерно так, как показано на рисунке 8.

лесная зона NA
Рисунок 8. Лесной покров Северной Америки в 2000 году.

Увеличение масштаба позволяет лучше оценить разрешение снимка. На рисунке 9 показана местность вокруг Марискаль-Эстигаррибиа в Парагвае.

лесной массив Парагвая
Рисунок 9. Древесный покров вокруг Марискаля Эстигаррибии в Парагвае, 2000 год.

Изображение на рисунке 3 немного тёмное. Проблема в том, что полоса treecover2000 имеет байтовый тип данных ([0, 255]), хотя на самом деле значения представляют собой проценты ([0, 100]). Чтобы сделать изображение светлее, можно задать соответствующие параметры min и/или max . Палитра при этом растягивается между этими экстремумами.

Редактор кода (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover percent');

Результат должен выглядеть примерно так, как показано на рисунке 9. Обратите внимание, что в этом примере задано только max . min по умолчанию равно нулю.

растянутый Парагвай
Рисунок 9. Лесной покров 2000 года вокруг Марискаль Эстигаррибия в Парагвае, растянутый до [0, 100].

Маскировка

На всех представленных изображениях были большие чёрные области, где данные были равны нулю. Например, в океане нет деревьев. Чтобы сделать эти области прозрачными, можно замаскировать их значения. Каждый пиксель в Earth Engine имеет как значение, так и маску. Изображение визуализируется с прозрачностью, заданной маской: ноль соответствует полной прозрачности, а единица — полной непрозрачности.

Вы можете замаскировать изображение самим собой. Например, если замаскировать полосу treecover2000 самим собой, все области с нулевым лесным покровом станут прозрачными:

Редактор кода (JavaScript)

Map.addLayer(gfc2014.mask(gfc2014), {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover masked');

Результат должен выглядеть примерно так, как показано на рисунке 10.

древесный покров Америки
Рисунок 10. Древесный покров 2000 года, растянутый и замаскированный.

Пример

Визуализировать данные Хансена, как в начале урока, практически возможно. В этом примере мы собираем всё вместе, но с одним небольшим отличием. Вместо указания параметра bands в вызове Map.addLayer мы создаём новые изображения с помощью select() :

Редактор кода (JavaScript)

var treeCover = gfc2014.select(['treecover2000']);
var lossImage = gfc2014.select(['loss']);
var gainImage = gfc2014.select(['gain']);

// Add the tree cover layer in green.
Map.addLayer(treeCover.updateMask(treeCover),
    {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover');

// Add the loss layer in red.
Map.addLayer(lossImage.updateMask(lossImage),
            {palette: ['FF0000']}, 'Loss');

// Add the gain layer in blue.
Map.addLayer(gainImage.updateMask(gainImage),
            {palette: ['0000FF']}, 'Gain');

Результат должен выглядеть примерно так, как показано на рисунке 11.

убыток прибыли в Америке
Рисунок 11. Потеря лесов (красный), лесной покров в 2000 году (зеленый) и прирост (синий).

Обратите внимание на три вызова addLayer() . Каждый вызов addLayer() добавляет слой на карту. Наведение курсора на кнопку «Слои» в правом верхнем углу карты позволяет увидеть эти слои. Каждый слой можно включить или отключить с помощью флажка рядом с ним, а его прозрачность можно регулировать с помощью ползунка рядом с именем слоя.

Мы почти смогли создать изображение, показанное в начале урока. Однако слой, показывающий пиксели как с потерями, так и с усилением, отсутствует. Он отсутствует, поскольку нам нужно знать, как выполнять некоторые вычисления над полосами изображения, прежде чем мы сможем определить, какие пиксели демонстрируют как потери, так и усиление. Это тема следующего раздела .