洪水発生の変化の強さ

水発生変化強度データレイヤは、1984 ~ 1999 年と 2000 ~ 2015 年の 2 つの時代で地表水がどのように変化したかの指標を提供します。このレイヤは、2 つのエポックから取得した同月間の変化を平均します。このレイヤの詳細については、 データ ユーザー ガイド(v2) をご覧ください。

このチュートリアルのセクションでは、次のことを行います。

  1. 水発生の変化の強さを可視化するためのスタイル付き地図レイヤを追加し、
  2. ヒストグラムを使用して、指定した関心領域の変化の強度を要約します。

Visualization

水発生レイヤと同様に、まず発生変化の強度の基本的な可視化を地図に追加し、その後改善していきます。発生頻度の変化の強度は、絶対値と正規化された値の両方で 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. ペルー東部のアマゾンの熱帯雨林にあるプカルパ近郊のウカヤリ川の地表水の変化の強度のスクリーンショット。赤/緑は、エポック間の地表水の発生の減少/増加を示します。

関心領域内の変化を要約する

このセクションでは、特定の対象地域内の変化量を要約します。対象領域を指定するには、ポリゴン描画ツール( ジオメトリ ツールの 1 つ)をクリックします。これにより、新しい Geometry Imports レイヤが作成されます。このレイヤは、デフォルトで「geometry」という名前になります。名前を変更するには、レイヤ名の右にある歯車アイコンをクリックします。(レイヤ名にカーソルを合わせると表示される場合があります)。

レイヤ名を roi(関心領域または ROI)に変更します。地図上のポイントを次々とクリックして、ポリゴンの対象地域を定義します。

関心のある地域
図 7. ペルーのプカルパ付近のウカヤリ川のスクリーンショット。ポリゴン描画ツールを使用して作成された対象地域が表示されている。

関心領域が定義され、変数に保存されたので、これを使用して 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 内の発生変化強度値のヒストグラムを 30 m のスケールでサンプリングして計算します。2 つ目は、結果のオブジェクトをコードエディタの [コンソール] タブに出力します。オブジェクト ツリーを展開して、ヒストグラム バケットの値を確認できます。数値データは表示されていますが、結果を可視化するより良い方法があります。

ヒストグラム値
図 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.'
});

これらのステートメントは、ヒストグラム グラフ オブジェクトを作成します。これにより、[Console] タブのヒストグラム オブジェクト ツリーがグラフに置き換えられます。グラフメソッドには、関心領域がサンプリングされる空間スケール(メートル単位)を定義する 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'
});

次のセクションでは、水クラスの遷移レイヤを操作して、水の経時的な変化をさらに詳しく調べます。