수면 발생 변화 강도 데이터 레이어는 1984~1999년과 2000~2015년이라는 두 시대 사이에 수면이 어떻게 변화했는지 측정합니다. 이 레이어는 두 에포크에서 가져온 상동 월 쌍의 변화를 평균화합니다. 이 레이어에 관한 자세한 내용은 데이터 사용자 가이드 (v2) 를 참고하세요.
튜토리얼의 이 섹션에서는 다음을 수행합니다.
- 물 발생 변화 강도를 시각화하기 위한 스타일 지정 지도 레이어를 추가합니다.
- 히스토그램을 사용하여 지정된 관심 영역의 변화 강도를 요약합니다.
시각화
물 발생 레이어와 마찬가지로 발생 변화 강도의 기본 시각화를 지도에 추가한 후 이를 개선할 예정입니다. 발생 변경 강도는 절대값과 정규화된 값의 두 가지 방식으로 제공됩니다. 이 튜토리얼에서는 절대값을 사용합니다. 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' });

관심 지역 내 변화 요약
이 섹션에서는 관심 있는 지정된 지역 내의 변화량을 요약합니다. 관심 영역을 지정하려면 다각형 그리기 도구를 클릭합니다. 이 도구는 기하학 도구 중 하나입니다. 이렇게 하면 기본적으로 'geometry'라는 새 Geometry Imports 레이어가 생성됩니다. 이름을 변경하려면 레이어 이름 오른쪽에 있는 톱니바퀴 아이콘을 클릭합니다. (레이어 이름을 표시하려면 레이어 이름에 커서를 올려야 할 수도 있습니다.)
레이어 이름을 roi
(관심 영역 또는 ROI)로 변경합니다. 그런 다음 지도에서 일련의 점을 클릭하여 관심 영역의 다각형을 정의할 수 있습니다.

관심 영역이 정의되고 변수에 저장되었으므로 이를 사용하여 ROI의 변화 강도 히스토그램을 계산할 수 있습니다. 스크립트의 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 내에서 발생 변경 강도 값의 히스토그램을 계산하며 30m 규모로 샘플링합니다. 두 번째는 결과 객체를 코드 편집기 콘솔 탭에 출력합니다. 객체 트리를 펼쳐 히스토그램 버킷의 값을 볼 수 있습니다. 숫자 데이터는 있지만 결과를 시각화하는 더 나은 방법이 있습니다.

이를 개선하기 위해 히스토그램 차트를 대신 생성할 수 있습니다. 히스토그램 객체를 정의하는 문을 다음 문으로 바꿉니다.
코드 편집기 (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.' });
이러한 문은 히스토그램 차트 객체를 만들어 콘솔 탭의 히스토그램 객체 트리를 차트로 대체합니다. 차트 메서드에는 관심 영역이 샘플링되는 공간 규모(미터)를 정의하는 scale
와 히스토그램 버킷의 너비를 제어하는 데 사용되는 minBucketWidth
를 비롯한 여러 인수가 포함되어 있습니다.

히스토그램 막대 위로 커서를 가져가면 차트 값을 대화형으로 살펴볼 수 있습니다.
최종 스크립트
이 섹션의 전체 스크립트는 아래에 나열되어 있습니다. 스크립트에는 다각형 지오메트리 (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' });
다음 섹션에서는 물 클래스 전환 레이어를 사용하여 시간이 지남에 따라 물이 어떻게 변했는지 자세히 알아봅니다.