2018/05/29

文系のための「Google Earth Engine の Code Editor」

Google Earth EngineJavascriptPythonから操作することができ、
Javascriptを使う場合にはCode Editorと呼ばれるツールを使用する。
パソコンのスペックに依存しないので、高級なパソコンを買う必要はない。

とりあえず、以下をクリックしてCode Editorを開いてみる。

https://code.earthengine.google.com/




Code Editorを開くと、画面の上部に検索バーがある。
画面は上下に分割されていて、上部に三つに分かれたエリアがあり、
下部に地図が表示されたエリアがある。

今回は検索バーを使ってみる。この検索バーを使うと、
地名画像テーブル三種類を検索することができる。
この機能を使いこなすことが重要なポイントとなる。

さっそく、検索バーに「奈良」と入力してみると、以下のように表示される。



ここで、二番上の「日本、奈良県奈良市」を選択すると、
マップ・エリアの中心が移動し、奈良県奈良市に移動する。
この機能はGoogle mapsやGoogle Earthなどと同じである。

では、次にGoogle Earth Engineで使用できるデータを検索してみる。
とりあえず、検索バーに「SRTM」と入力してみると、
以下のように表示されるので、二番目をクリックする。



すると、以下のように表示されるハズ。今は「import」をクリックしない。



データの説明が書かれている。このデータはSRTMの30mメッシュの標高データ
今回は深くは検討しないが、このページには重要な情報が多く載っている。
特に、解像度バンドの情報は極めて重要。いずれ説明する。

さて、このページを確認できたら「import」のボタンをクリックする。



すると、スクリプト・エリアの上の方に指定したデータが読み込まれる。
二行目の var image と書かれている部分は変数宣言とよばれる部分であり、
なお、変数名imageの部分は自由に書き換えることができる。

次に、下の部分に以下のコードを貼り付ける。大文字と小文字の違いにも注意。



Map.addLayer(image, {min: 0, max:4000}, 'srtm');

貼り付けることができたら「Run」のボタンをクリックする。
すると、処理が始まり、SRTMの画像がマップ・エリアに表示される。
少し暗いかもしれないので、マウスホイールを転がして表示範囲を広げる。



以上で完了…と言いたいけれど、少しだけ、コードの解説をしておく。

先ほどのMapというオブジェクトが持っているaddLayer()という関数を実行している。
そういう意味で、Map.addLayer() という形式で記述される。
そして、(  )の中には関数のパラメータというのが入る。

少し、詳しく確認するためにドキュメントを参照してみることにする。
スクリプト・エリアの右側の部分には、「Scripts」、「Docs」、「Assets」のタブがある。
このうち「Docs」を選択し、検索部分に「Map.addLayer」と入力する。

そのまま、下の方にスクロールし、Map.addLayer(eeObject, visParam, na.... を探す。
そして、上手く見つかったら、該当箇所をクリックし、
この関数の説明画面を開いて確認する。



冒頭部分に簡単な説明がある。英語アレルギーの人のために訳すと…

与えられたEEオブジェクトをレイヤとして地図に追加する。
新しい地図レイヤを返す。

と書かれている。EEオブジェクトというのは、Google Earth Engineのオブジェクト。
ざっくりとした説明をすると、要するに地図上にプロットできるオブジェクト。
CollectionFeatureImageMapIdの四種類がある。今回はImageが該当する。

重要な部分はその下のArgumentsの部分。この部分にパラメータの説明がある。
全てを日本語に訳してしまうとプログラミングの際に色々と問題が出てしまう…。
影響の無い説明部分のみを訳してみると…。
  • eeObject (Collection|Feature|Image|MapId):
    • 地図に表示させるべきオブジェクト。
  • visParams (FeatureVisualizationParameters|ImageVisualizationParameters, optional):
    • 可視化パラメータ。ImageおよびImageCollectionの場合には使うことができるパラメータについてee.data.getMapIdを参照してください。FeatureおよびFeatureCollectionsの場合、CSS 3.0の色名あるいは16進数の「RRGGBB」形式で表された「color」のみがサポートされます。
  • name (String, optional):
    • レイヤ名。既定では「Layer N」(Nの部分には数字が入る)。
  • shown (Boolean, optional):
    • 既定でレイヤを表示するべきかのOn/Offの切り替え。
  • opacity (Number, optional):
    • 0と1の間の値によって規定されるレイヤの透過度。既定は1。
なにやら、色々と設定しないといけないようで…確かに、面倒にも見える。
ただし、optionalと書かれている部分については必ずしも必要ではない。任意。
ただし、visParamの部分は入れておかないと、表示しても色がきちんとつかない。

ということで、少し丁寧に書き直してみる。

Map.addLayer(
    image,                  // eeObject
    {                       // visParams
        min:0,
        max:4000,
        palette:[ 'green',
                  'yellow', 
                  'orange', 
                  'brown', 
                  'white']
    },
    "STRM 30m",             // name
    1,                      // shown (0 or 1)
    0.5                     // opacity
);

どうやら、上記のコードを直接貼り付けると余計な行間が入るらしい…。
一行づつ手打ちしても良いかもしれないが、// から後ろの部分は不要。
この部分はコメントとよばれるもので、実行しないメモのようなもの。

話は逸れたが、上記のプログラムを実行すると、以下のようになる。



今回はvisParampaletteを設定し、段彩図になるようにした。色名はCSS 3.0準拠。
また、opacityを0.5に設定して、透過度が50%になるように設定した。
shown を0にすると処理は行うが、自動では表示しなくなる。

ということで、次回からは本格的にGoogle Earth Engineを使っていくことにする。

0 件のコメント:

コメントを投稿