Интенсивность изменения частоты наводнений

Слой данных Water Occurrence Change Intensity (Интенсивность изменения наличия воды) позволяет оценить, как изменилась площадь поверхностных вод между двумя периодами: 1984–1999 и 2000–2015 гг. Слой усредняет изменения по гомологичным парам месяцев, взятых из двух эпох. Дополнительную информацию об этом слое можно найти в руководстве для пользователей данных (версия 2) .

В этом разделе руководства вы узнаете:

  1. добавить стилизованный слой карты для визуализации интенсивности изменения встречаемости воды;
  2. обобщить интенсивность изменений в указанной области интереса с помощью гистограммы.

Визуализация

Как и в случае со слоем встречаемости воды, мы начнем с добавления на карту базовой визуализации интенсивности изменения встречаемости, а затем улучшим ее. Интенсивность изменения частоты возникновения предоставляется двумя способами: в виде абсолютных и нормализованных значений. В этом руководстве мы будем использовать абсолютные значения. Для начала выберите слой абсолютного изменения интенсивности встречаемости из изображения GSW:

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

var change = gsw.select("change_abs");

В разделе Constants (Константы) кода добавьте оператор, который создает новую переменную, определяющую стиль слоя. На этом слое красным и зеленым цветом показаны области, где частота появления поверхностных вод уменьшилась или увеличилась. Области, где наличие поверхностных вод относительно не изменилось, показаны черным цветом.

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

var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};

В конце раздела кода Map Layers добавьте оператор, который добавляет на карту новый слой.

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

Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});
изменить интенсивность
Рисунок 6. Скриншот интенсивности изменения поверхностных вод для реки Укаяли вблизи Пукальпы, города в тропических лесах Амазонки на востоке Перу. Красный и зеленый цвета указывают на уменьшение и увеличение количества поверхностных вод между эпохами.

Как обобщить изменения в интересующем регионе

В этом разделе мы обобщим объем изменений в указанном регионе. Чтобы указать интересующий вас регион, нажмите на инструмент рисования многоугольников, который является одним из инструментов геометрии. Будет создан новый слой импорта геометрии, который по умолчанию называется geometry. Чтобы изменить название, нажмите на значок шестеренки справа от названия слоя. (Возможно, для этого потребуется навести указатель мыши на название слоя.)

Измените название слоя на roi (для интересующего региона). Затем мы можем нажать на ряд точек на карте, чтобы определить интересующую нас область многоугольника.

интересующий регион
Рисунок 7. Скриншот реки Укаяли рядом с городом Пукальпа в Перу. С помощью инструмента рисования многоугольников выделена интересующая область.

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

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

// Calculate a change intensity for the region of interest.
var histogram = change.reduceRegion({
  reducer: ee.Reducer.histogram(),
  geometry: roi,
  scale: 30,
  bestEffort: true,
});
print(histogram);

Первая инструкция вычисляет гистограмму значений интенсивности изменения встречаемости в пределах ROI, выборка в масштабе 30 м. Вторая выводит полученный объект на вкладку Console (Консоль) в редакторе кода. Вы можете развернуть дерево объектов, чтобы посмотреть значения сегментов гистограммы. Числовые данные есть, но есть и лучшие способы визуализации результатов.

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

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

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

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});

Эти инструкции создают объект гистограммы, который заменяет дерево объектов гистограммы на вкладке Console (Консоль) диаграммой. Метод chart содержит несколько аргументов, в том числе scale, который определяет пространственный масштаб в метрах, в котором выбирается интересующий регион, и minBucketWidth, который используется для управления шириной сегментов гистограммы.

гистограмма
Рисунок 9. Результаты на вкладке Console, показывающие гистограмму интенсивности изменения поверхностных вод.

Чтобы посмотреть значения на диаграмме, наведите указатель мыши на столбцы гистограммы.

Окончательный сценарий

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

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

//////////////////////////////////////////////////////////////
// Asset List
//////////////////////////////////////////////////////////////

var gsw = ee.Image('JRC/GSW1_0/GlobalSurfaceWater');
var occurrence = gsw.select('occurrence');
var change = gsw.select("change_abs");
var roi = /* color: 0B4A8B */ee.Geometry.Polygon(
        [[[-74.17213, -8.65569],
          [-74.17419, -8.39222],
          [-74.38362, -8.36980],
          [-74.43031, -8.61293]]]);

//////////////////////////////////////////////////////////////
// Constants
//////////////////////////////////////////////////////////////

var VIS_OCCURRENCE = {
    min:0,
    max:100,
    palette: ['red', 'blue']
};
var VIS_CHANGE = {
    min:-50,
    max:50,
    palette: ['red', 'black', 'limegreen']
};
var VIS_WATER_MASK = {
  palette: ['white', 'black']
};

//////////////////////////////////////////////////////////////
// Calculations
//////////////////////////////////////////////////////////////

// Create a water mask layer, and set the image mask so that non-water areas are transparent.
var water_mask = occurrence.gt(90).mask(1);

// Generate a histogram object and print it to the console tab.
var histogram = ui.Chart.image.histogram({
  image: change,
  region: roi,
  scale: 30,
  minBucketWidth: 10
});
histogram.setOptions({
  title: 'Histogram of surface water change intensity.'
});
print(histogram);

//////////////////////////////////////////////////////////////
// Initialize Map Location
//////////////////////////////////////////////////////////////

// Uncomment one of the following statements to center the map on
// a particular location.
// Map.setCenter(-90.162, 29.8597, 10);   // New Orleans, USA
// Map.setCenter(-114.9774, 31.9254, 10); // Mouth of the Colorado River, Mexico
// Map.setCenter(-111.1871, 37.0963, 11); // Lake Powell, USA
// Map.setCenter(149.412, -35.0789, 11);  // Lake George, Australia
// Map.setCenter(105.26, 11.2134, 9);     // Mekong River Basin, SouthEast Asia
// Map.setCenter(90.6743, 22.7382, 10);   // Meghna River, Bangladesh
// Map.setCenter(81.2714, 16.5079, 11);   // Godavari River Basin Irrigation Project, India
// Map.setCenter(14.7035, 52.0985, 12);   // River Oder, Germany & Poland
// Map.setCenter(-59.1696, -33.8111, 9);  // Buenos Aires, Argentina\
Map.setCenter(-74.4557, -8.4289, 11);  // Ucayali River, Peru

//////////////////////////////////////////////////////////////
// Map Layers
//////////////////////////////////////////////////////////////

Map.addLayer({
  eeObject: water_mask,
  visParams: VIS_WATER_MASK,
  name: '90% occurrence water mask',
  shown: false
});
Map.addLayer({
  eeObject: occurrence.updateMask(occurrence.divide(100)),
  name: "Water Occurrence (1984-2015)",
  visParams: VIS_OCCURRENCE,
  shown: false
});
Map.addLayer({
  eeObject: change,
  visParams: VIS_CHANGE,
  name: 'occurrence change intensity'
});

В следующем разделе вы узнаете, как менялась вода с течением времени, работая со слоем transition класса water.