Слой данных «Интенсивность изменения количества воды» позволяет оценить изменения поверхностных вод между двумя эпохами: 1984–1999 и 2000–2015. Этот слой усредняет изменения по гомологичным парам месяцев, взятым из двух эпох. Дополнительную информацию об этом слое см. в Руководстве пользователя данных (версия 2) .
This section of the tutorial will:
- добавить стилизованный слой карты для визуализации интенсивности изменения количества воды и
- суммировать интенсивность изменений в указанной интересующей области с помощью гистограммы.
Визуализация
Подобно слою встречаемости воды, мы начнём с добавления базовой визуализации интенсивности изменения встречаемости на карту, а затем улучшим её. Интенсивность изменения встречаемости представлена двумя способами: в виде абсолютных и нормализованных значений. В этом руководстве мы будем использовать абсолютные значения. Начнём с выбора слоя абсолютной интенсивности изменения встречаемости на изображении GSW:
Редактор кода (JavaScript)
var change = gsw.select("change_abs");
В разделе «Константы» кода добавьте оператор, создающий новую переменную, определяющую стиль слоя. Этот стиль отображает области, где уровень поверхностной воды уменьшился/увеличился, красным/зелёным цветом. Области, где уровень поверхностной воды относительно не изменился, показаны чёрным цветом.
Редактор кода (JavaScript)
var VIS_CHANGE = { min:-50, max:50, palette: ['red', 'black', 'limegreen'] };
В конце раздела кода «Слои карты» добавьте оператор, который добавляет новый слой на карту.
Редактор кода (JavaScript)
Map.setCenter(-74.4557, -8.4289, 11); // Ucayali River, Peru Map.addLayer({ eeObject: change, visParams: VIS_CHANGE, name: 'occurrence change intensity' });

Summarizing Change within a Region of Interest
В этом разделе мы подведем итоги изменений в указанной интересующей области. Чтобы указать интересующую область, щелкните инструмент рисования многоугольников, который входит в набор инструментов геометрии . Это создаст новый слой импорта геометрии, который по умолчанию называется «geometry». Чтобы изменить имя, щелкните значок шестеренки, расположенный справа от имени слоя. (Обратите внимание, что для его отображения может потребоваться навести курсор на имя слоя.)
Измените название слоя на roi
(область интереса, ROI). Затем можно щелкнуть по ряду точек на карте, чтобы определить полигональную область интереса.

Теперь, когда наша область интереса определена и сохранена в переменной, мы можем использовать её для расчета гистограммы интенсивности изменений в области интереса. Добавьте следующий код в раздел «Расчеты» скрипта.
Редактор кода (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);
Первый оператор вычисляет гистограмму значений интенсивности изменения встречаемости в пределах области интереса с масштабом выборки 30 м. Второй оператор выводит полученный объект на вкладку консоли редактора кода. Вы можете развернуть дерево объектов, чтобы просмотреть значения в сегментах гистограммы. Числовые данные присутствуют, но есть более эффективные способы визуализации результатов.

Чтобы улучшить этот результат, мы можем создать гистограмму. Замените оператор, определяющий объект гистограммы, следующими операторами:
Редактор кода (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.' });
Эти операторы создают объект гистограммы, который заменяет дерево объектов гистограммы на вкладке «Консоль» диаграммой. Метод chart содержит несколько аргументов, включая scale
, определяющий пространственный масштаб (в метрах), в котором производится выборка интересующей области, и minBucketWidth
, используемый для управления шириной контейнеров гистограммы.

Вы можете интерактивно изучать значения диаграммы, наводя курсор на столбцы гистограммы.
Final Script
Полный скрипт для этого раздела приведён ниже. Обратите внимание, что скрипт включает операторы для определения геометрии полигона ( 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' });
В следующем разделе вы более подробно изучите, как вода менялась с течением времени, работая со слоем перехода классов воды.