Water Occurrence Change Intensity(물 발생 빈도 변화 강도)

Water Occurrence Change Intensity 데이터 레이어는 1984~1999년과 2000~2015년의 두 기간 사이에 지표수가 어떻게 변화했는지를 측정합니다. 이 레이어는 두 기간에서 가져온 상동 월 쌍의 변화를 평균합니다. 이 레이어에 관한 자세한 내용은 데이터 사용자 가이드 (v2) 를 참고하세요.

이 튜토리얼 섹션에서는 다음을 수행합니다.

  1. 수면 발생 변화 강도를 시각화하기 위한 스타일 지정 지도 레이어를 추가하고,
  2. 히스토그램을 사용하여 지정된 관심 영역의 변화 강도를 요약합니다.

시각화

수면 발생 레이어와 마찬가지로 먼저 발생 변화 강도의 기본 시각화를 지도에 추가한 다음 이를 개선합니다. 발생 변경 강도는 절대값과 정규화된 값의 두 가지 방식으로 제공됩니다. 이 튜토리얼에서는 절댓값을 사용합니다. 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'
});
강도 변경
그림 6. 페루 동부 아마존 열대우림의 도시인 푸칼파 근처 우카얄리강의 지표수 변화 강도 스크린샷 빨간색/녹색은 기간 간 지표수 발생의 감소/증가를 나타냅니다.

관심 지역 내 변화 요약

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

레이어 이름을 roi (관심 영역 또는 ROI)로 변경합니다. 그런 다음 지도에서 일련의 지점을 클릭하여 관심 있는 다각형 영역을 정의할 수 있습니다.

관심 지역
그림 7. 페루 푸칼파 근처의 우카얄리강 스크린샷으로, 다각형 그리기 도구를 사용하여 만든 관심 영역이 표시되어 있습니다.

이제 관심 영역이 정의되고 변수에 저장되었으므로 이를 사용하여 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);

첫 번째 문은 ROI 내에서 발생 변화 강도 값의 히스토그램을 계산하여 30m 규모로 샘플링합니다. 두 번째는 결과 객체를 코드 편집기 콘솔 탭에 출력합니다. 객체 트리를 펼쳐 히스토그램 버킷의 값을 볼 수 있습니다. 숫자 데이터가 있지만 결과를 시각화하는 더 좋은 방법이 있습니다.

히스토그램 값
그림 8. 지표수 변화 강도의 히스토그램 값을 보여주는 콘솔 탭 결과

이를 개선하기 위해 대신 히스토그램 차트를 생성할 수 있습니다. 히스토그램 객체를 정의하는 문을 다음 문으로 바꿉니다.

코드 편집기(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를 비롯한 여러 인수가 포함되어 있습니다.

히스토그램 차트
그림 9. 지표수 변화 강도의 히스토그램 차트를 보여주는 콘솔 탭 결과

히스토그램 막대 위에 커서를 올려놓으면 차트 값을 대화형으로 탐색할 수 있습니다.

최종 스크립트

이 섹션의 전체 스크립트는 다음과 같습니다. 스크립트에는 코드 편집기의 도형 도구를 사용하여 만든 도형과 유사한 다각형 도형 (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'
});

다음 섹션에서는 물 클래스 전환 레이어를 사용하여 시간이 지남에 따라 물이 어떻게 변화했는지 자세히 알아봅니다.