Earth Engine の Hansen et al.(2013 年)
地球規模の森林変化データセットは、2000 年から 2014 年までの地球規模の森林変化を 30 メートルの解像度で表しています。まず、Hansen らのデータを地図に追加しましょう。「Hansen forest」を検索してグローバルな森林の変化データをインポート(データセットの検索とインポートの詳細を参照)し、インポートに gfc2014
という名前を付けるか、次のコードをコードエディタにコピーします。
コードエディタ(JavaScript)
var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015'); Map.addLayer(gfc2014);
コードエディタの上部にある [実行] ボタンをクリックすると、図 1 のような画面が表示されます。

ご心配なく。すぐに見た目を改善できます。(Earth Engine のデフォルトの画像可視化の詳細をご覧ください)。このセクションの終わりまでに、図 2 のような画像が作成されます。緑色は 2000 年に森林が検出された場所、赤色は調査期間中に推定された森林の減少、青色はその期間中の森林の増加、マゼンタは森林の減少と増加の両方があった地域、非森林地域はマスクされています。

マルチバンド画像をマップに追加すると、画像の最初の 3 つのバンドがそれぞれ赤、緑、青として選択され、各バンドのデータ型に従ってストレッチされることを思い出してください。画像が赤く見えるのは、最初の 3 つのバンドが treecover2000
、loss
、gain
であるためです。treecover2000
バンドはパーセントで表され、バイナリ({0, 1})である loss
(緑)と gain
(青)よりもはるかに高い値になります。そのため、画像は圧倒的に赤く表示されます。
Global Forest Change データのバンドは次のとおりです。
帯域名 | 説明 | 範囲 |
---|---|---|
treecover2000 | ピクセル内の樹木被覆率。 | 0 - 100 |
損失 | 調査期間中に損失が発生した場合は 1。 | 0 または 1 |
ゲイン | 調査期間中に体重が増加した場合は 1。 | 0 または 1 |
lossyear | 損失が発生した年。2001 年を 1 とするインデックス。損失が発生しなかった場合は 0。 | 0 ~ 12 |
first_b30 | 2000 年(または 2000 年に有効なピクセルがない場合はそれ以前)の最初の有効なピクセルから構築された Landsat 7 の赤色バンド。 | 0~255 |
first_b40 | 2000 年の最初の有効なピクセルから作成された Landsat 7 の近赤外線バンド。 | 0~255 |
first_b50 | 2000 年の最初の有効なピクセルから構築された最初の Landsat 7 短波赤外線バンド。 | 0~255 |
first_b70 | 2000 年の最初の有効なピクセルから構築された 2 番目の Landsat 7 短波赤外線バンド。 | 0~255 |
last_b30 | 2012 年の最新の有効なピクセルから作成された Landsat 7 の赤色バンド。 | 0~255 |
last_b40 | 2012 年の最新の有効なピクセルから作成された Landsat 7 近赤外線バンド。 | 0~255 |
last_b50 | 最新の有効なピクセル 2012 から構築された最初の Landsat 7 短波赤外線バンド。 | 0~255 |
last_b70 | 最新の有効なピクセル 2012 から構築された 2 番目の Landsat 7 短波赤外線バンド。 | 0~255 |
datamask | データなし(0)、マッピングされた地表面(1)、恒久的な水域(2)。 | 0、1、2 |
2000 年の森林被覆をグレースケール画像として表示するには、Map.addLayer()
の 2 番目の引数で指定された treecover2000
バンドを使用します。
コードエディタ(JavaScript)
Map.addLayer(gfc2014, {bands: ['treecover2000']}, 'treecover2000');
結果として、図 3 のような画像が生成されます。

次の画像は、2015 年の Landsat 帯域 5、4、3 の 3 つの帯域を使用しています。このバンドの組み合わせでは、健全な植生は緑色、土壌はモーブ色で表示されます。
コードエディタ(JavaScript)
Map.addLayer( gfc2014, {bands: ['last_b50', 'last_b40', 'last_b30']}, 'false color');
結果は図 4 のようになります。

Global Forest Change データセットの優れた可視化の 1 つに、2000 年の森林面積を緑、森林損失を赤、森林増加を青で示すものがあります。具体的には、loss
を最初のバンド(赤)、treecover2000
を 2 番目のバンド(緑)、gain
を 3 番目のバンド(青)にします。
コードエディタ(JavaScript)
Map.addLayer(gfc2014, {bands: ['loss', 'treecover2000', 'gain']}, 'green');
損失帯域とゲイン帯域の値はバイナリであるため、画像ではほとんど見えません。図 5 のようになります。

森林の減少は明るい赤色で、森林の増加は明るい青色で表示されるようにします。この問題を解決するには、可視化パラメータ max
を使用して、画像データが引き伸ばされる範囲を設定します。max
可視化パラメータは、各帯域の最大値に対応する値のリストを受け取ります。
コードエディタ(JavaScript)
Map.addLayer(gfc2014, { bands: ['loss', 'treecover2000', 'gain'], max: [1, 255, 1] }, 'forest cover, loss, gain');
結果は図 6 のようになります。

これにより、森林がある場所は緑、森林が減少した場所は赤、森林が増加した場所は青、森林の増加と減少の両方があった場所はマゼンタで表示されます。ただし、よく見ると、正しくありません。損失が赤ではなくオレンジでマークされます。これは、明るい赤色のピクセルが下にある緑色のピクセルと混ざり、オレンジ色のピクセルが生成されるためです。同様に、森林、損失、増加があるピクセルはピンク色(緑、明るい赤、明るい青の組み合わせ)で表示されます。図 7 を参照してください。

チュートリアルの冒頭で説明した画像を取得するには、フォレスト、損失、利得、損失と利得の両方の画像を作成します。これらの画像を、表示に最適な順序で地図に追加します。
パレット
各画像を異なる色で表示するには、単一バンド画像に Map.addLayer()
の palette
パラメータを使用します。パレットを使用すると、画像を表示する配色を設定できます(パレットの詳細)。Earth Engine API チュートリアルで説明したように、パレットの色は min
と max
に線形に引き伸ばされます。
たとえば、緑のパレットを使用して森林の範囲の画像を表示するには、次のようにします。
コードエディタ(JavaScript)
Map.addLayer(gfc2014, { bands: ['treecover2000'], palette: ['000000', '00FF00'] }, 'forest cover palette');
結果は図 8 のようになります。

拡大すると、画像の解像度をより正確に把握できます。図 9 は、パラグアイの Mariscal Estigarribia 周辺のエリアを示しています。

図 3 に示す画像は少し暗いです。問題は、実際には値がパーセンテージ([0, 100])であるにもかかわらず、treecover2000
バンドのデータ型がバイト([0, 255])であることです。画像を明るくするには、min
パラメータや max
パラメータを適宜設定します。パレットは、これらの極値の間で引き伸ばされます。
コードエディタ(JavaScript)
Map.addLayer(gfc2014, { bands: ['treecover2000'], palette: ['000000', '00FF00'], max: 100 }, 'forest cover percent');
結果は図 9 のようになります。この例では、max
のみが設定されています。min
のデフォルトは 0 です。

マスキング
これまで表示した画像には、データがゼロの大きな黒い領域がありました。たとえば、海には木がありません。これらの領域を透明にするには、値をマスクします。Earth Engine のすべてのピクセルには、値とマスクの両方が含まれています。画像は、マスクで設定された透明度でレンダリングされます。0 は完全に透明、1 は完全に不透明です。
画像自体で画像をマスクできます。たとえば、treecover2000
バンドをそれ自体でマスクすると、森林被覆率がゼロの領域はすべて透明になります。
コードエディタ(JavaScript)
Map.addLayer(gfc2014.mask(gfc2014), { bands: ['treecover2000'], palette: ['000000', '00FF00'], max: 100 }, 'forest cover masked');
結果は図 10 のようになります。

例
チュートリアルの冒頭にあるような Hansen データの可視化をほぼ実現できます。この例では、すべてをまとめていますが、1 つだけ小さな違いがあります。Map.addLayer
呼び出しで bands
パラメータを指定する代わりに、select()
を使用して新しいイメージを作成しています。
コードエディタ(JavaScript)
var treeCover = gfc2014.select(['treecover2000']); var lossImage = gfc2014.select(['loss']); var gainImage = gfc2014.select(['gain']); // Add the tree cover layer in green. Map.addLayer(treeCover.updateMask(treeCover), {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover'); // Add the loss layer in red. Map.addLayer(lossImage.updateMask(lossImage), {palette: ['FF0000']}, 'Loss'); // Add the gain layer in blue. Map.addLayer(gainImage.updateMask(gainImage), {palette: ['0000FF']}, 'Gain');
結果は図 11 のようになります。

addLayer()
呼び出しが 3 つあることに注目してください。addLayer()
を呼び出すたびに、地図にレイヤが追加されます。マップの右上にある [レイヤ] ボタンにカーソルを合わせると、これらのレイヤが表示されます。各レイヤのオンとオフは、その横にあるチェックボックスで切り替えることができます。レイヤの不透明度は、レイヤ名の横にあるスライダーで調整できます。
チュートリアルの冒頭に表示されている画像とほぼ同じ画像を作成できます。ただし、損失とゲインの両方があるピクセルを示すレイヤがありません。これは、損失とゲインの両方を示すピクセルを計算する前に、画像バンドで計算を実行する方法を知る必要があるためです。これについては、次のセクションで説明します。