画像と画像バンドの可視化

Earth Engine JavaScript の記述を開始する準備が整いました。まず、次のコードをコードエディタにコピーします。

コードエディタ(JavaScript)

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

コードエディタの上部にある [実行] ボタンをクリックすると、地図に非常にグレーの画像が表示されます。ご心配なく。すぐに見た目を改善できます。この例の構文でわからない部分がある場合は、Earth Engine の JavaScript チュートリアルをご覧ください。

Image Constructor

この例の最初の新しい点は、イメージ コンストラクタ ee.Image() です。コンストラクタに渡される引数は、Earth Engine データカタログ内の画像の文字列 ID です。(コードエディタの左側にある [Docs] タブで、画像コンストラクタに渡すことができる引数の完全なリストを確認できます。[Docs] タブには、Earth Engine でできることに関する最新情報が表示されます。

画像 ID を見つけるには、コードエディタの上部にある検索ツールを使用して、Earth Engine データカタログを検索します。たとえば、検索フィールドに「標高」と入力すると、ラスタのリストが返されます。[SRTM Digital Elevation Data Version 4] エントリをクリックすると、そのデータセットの詳細が表示されます。データセットの説明の右側に [画像 ID] フィールドがあります。この例のイメージ ID は、データセットの説明に示されているイメージ ID からコピーされたものです。

画像 ID をコピーして貼り付ける代わりに、データセットの説明にある [インポート] ボタンまたは検索結果の右側にある [インポート] リンクを使用することもできます。インポート リンクまたはボタンをクリックすると、スクリプトの先頭にある 「Imports」という名前の特別なセクションに、変数が自動的に作成されます。変数の名前を変更するには、インポート セクションでその名前をクリックします。

地図の構成

この例の 2 つ目の新しい部分は、Map.setCenter() 呼び出しです。このメソッドは、コードエディタの地図表示を表す Map オブジェクトで、指定された経度、緯度(10 進数)およびズームレベルで地図の中心を設定します。ズームレベル 1 は、地図に地球の表面全体が表示されるようにズームアウトします。数値が大きいほど、そこから拡大されます。コードエディタの左側にある [Docs] タブの [Map] セクションを確認して、Map オブジェクトのすべてのメソッドを確認します。

地図にレイヤを追加する

例の最後の行は、Map オブジェクトの addLayer() メソッドを使用して、コードエディタの地図表示に画像を追加することを意味します。

これで最初の Earth Engine スクリプトを作成しました。次のセクションでは、その画像を少し見栄えよくする方法について説明します。

補足: Earth Engine の画像

Earth Engine の画像(詳しくはこちらのページをご覧ください)は、1 つ以上のバンドで構成されています。画像内の各バンドには、独自の名前、ピクセル値、ピクセル解像度、投影法があります。すぐにわかるように、SRTM 画像には 1 つのバンド(標高)があります。

Map.addLayer() を使用してマップに画像を追加する場合、Earth Engine は画像バンドの値をディスプレイの色にマッピングする方法を決定する必要があります。単一バンドの画像を地図に追加すると、デフォルトで Earth Engine はバンドをグレースケールで表示します。最小値は黒、最大値は白に割り当てられます。最小値と最大値を指定しない場合、Earth Engine はデフォルト値を使用します。たとえば、地図に追加した画像は、データの全範囲に引き伸ばされたグレースケール画像、または符号付き 16 ビット整数 [-32768, 32767] として表示されます。(float バンドは [0, 1] に、byte バンドは [0, 255] にデフォルトでストレッチされます)。

画像を出力して、[コンソール] タブで画像オブジェクトを検査すると、画像のデータ型を確認できます。たとえば、前のコードの後に次のコードを貼り付けます。

コードエディタ(JavaScript)

print('SRTM image', image);

実行をクリックすると、コンソールにオブジェクトが表示されます。オブジェクトのプロパティを調べるには、オブジェクトまたはプロパティの左にあるジッピー()をクリックして展開します。画像オブジェクト、bands プロパティ、インデックス 0 の elevation バンド、elevation バンドの data_type プロパティを開くと、signed int16 データ型であることがわかります。

レイヤの可視化をカスタマイズする

データの拡大方法を変更するには、Map.addLayer() 呼び出しに別のパラメータを指定します。具体的には、2 番目のパラメータ visParams を使用して、表示する最小値と最大値を指定できます。使用する値を確認するには、[インスペクタ] タブを有効にして、地図をクリックしてピクセル値の範囲を確認します。または、レイヤ マネージャーを使用してデータをインタラクティブにストレッチし、パーセンタイルまたは標準偏差のストレッチに対応する最小値と最大値を観察します。このようなテストを通じて、データを [0, 3000] にストレッチする必要があると判断したとします。この範囲を使用して画像を表示するには、次のコマンドを使用します。

コードエディタ(JavaScript)

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

visParams パラメータは、minmax を指定するプロパティを持つオブジェクトです。(JavaScript オブジェクトの詳細については、JavaScript チュートリアルまたはこの外部リファレンスをご覧ください)。Map.addLayer() の 3 番目のパラメータは、レイヤ マネージャーに表示されるレイヤの名前です。結果は図 1 のようになります。右側の [レイヤ] ボックスにマウスを合わせると、そのレイヤの名前を変更した場合の効果を確認できます。

Tutorial_api_01_elevation.png
図 1. 標高画像をグレースケールで [0, 3000] にストレッチします。

カラーパレットを使用して単一の帯を表示するには、visParams オブジェクトに palette プロパティを追加します。

コードエディタ(JavaScript)

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

結果は図 2 のようになります。

Tutorial_api_02_palette.png
図 2. 標高画像。青から赤へのカラーランプとして [0, 3000] に引き伸ばされています。

余談: パレット

パレットを使用すると、単一バンド画像の配色を設定できます。パレットは、視覚化パラメータの最大値と最小値の間で線形補間されるカラー文字列のカンマ区切りリストです(または、前述のように、帯域の種類に応じたデフォルト)。たとえば、最小値以下のピクセルはリストの最初の色で表示され、最大値以上のピクセルはリストの最後の色で表示されます。中間色は、中間ピクセル値に線形に引き伸ばされます。

色は、ウェブ標準の CSS カラー値スキームを使用して定義されます(詳しくは、この外部参照をご覧ください)。色は、名前で指定することも、赤、緑、青の組み合わせを示す 16 進数文字列で指定することもできます。3 つの位置の最小値は 00(10 進数の 0)、最大値は FF(10 進数の 255)です。文字列「000000」は黒、「FFFFFF」は白、「FF0000」は赤、「00FF00」は緑、「0000FF」は青を表します。詳しくは、カラーパレットのセクションをご覧ください。このセクションで説明するように、スタイル設定されたレイヤ記述子を使用すると、他のストレッチも可能です。

このチュートリアルの後半では、マルチバンド画像をどのように表示するかについて説明します。まず、次のページで画像を使用した計算について学習します。