2018/06/10

文系のための「GEEでのイメージの保存」

Google Earth Engine(GEE)で作成した画像や、
分析結果を他のソフトウェアで利用するにはどうすれば良いのか?
おそらく、多くの人が感心を持つ問題であろう。

GEEで画像を出力する方法は他の一般的なソフトウェアとは大きく異なる。
というのは、作成した画像を直接的にダウンロードすることはできず、
一旦、クラウド・ストレージ上に出力してから、ダウンロードしなけれなならない

GEEからの出力先としては三種類が用意されている。

  • Google Drive
  • Google Storage Cloud
  • Google Earth Engine Assets

一般ユーザーの多くはGoogle Driveへの出力を行うことになるだろう。

まずは、検索バーを使って、Landsat 8 ImageCollectionをインポートし、
インポートしたImageCollectionの名前を「landsat8」に変更しておく。
そして、時期と場所でフィルタリングし、雲がもっとも少ない一枚を取得する。

その次に画像の抽出範囲および保存範囲を既定するためのジオメトリを作成する。
とりあえず、神戸市周辺のエリアを抽出してみる。
ジオメトリ・ツールを使ってインポートすることもできるが、今回は手打ち入力。

var area = ee.Geometry.Polygon(
    [
      [135.12,34.76],
      [135.12,34.6],
      [135.4,34.6],
      [135.4,34.76],
      [135.4,34.76],
      [135.12,34.76]
    ]
);

この部分に関しては文系のための「GEEの幾何オブジェクト(Geometry)」を参照。

次に、インポートしたImageCollectionから必要なデータを抽出する。

var ln8_2016 = ee.Image(
                landsat8
                .filterDate("2016-01-01","2016-12-31")
                .filterBounds(area)
                .sort("CLOUD_COVER")
                .first()
                );
Map.centerObject(ln8_2016, 10);

詳しい手順は文系のための「Image CollectionからのImageの抽出」を参照。

では、さっそく、抽出した画像をGoogle Driveへと出力する。
そのままでもマルチバンド・画像として出力することができるが、
今回はトゥルーカラー画像の状態で出力してみる。

var output_image = ln8_2016.select(['B4', 'B3', 'B2']);

最後に出力を行う。出力する方法は以下の通り。
出力するためには、生成したイメージ範囲出力解像度の指定が必要となる。
今回は1ピクセル30メートル解像度を指定する。

Export.image.toDrive({
            image: output_image,
            description: 'output',
            scale: 30,
            region: area
});

これまでに扱ったGEEの処理と異なる点が一つある。
出力は「タスク(Task)」として処理されるため、
タスク・マネージャー上から実行しなければならない。

タスク・マネージャーはCode Editor上段の右側のタブにある。



この画面の最上段にある「output」というのが登録されたタスクである。
右横にある「RUN」というボタンをクリックするとタスクが実行される。
実行されたタスクはクラウド上で処理されるため、ログアウトしても問題ない

タスクを実行すると以下のようなダイアログが出るので必要があれば修正する。



そして、「Run」をクリックするとタスクが実行される。
範囲が広いと長い時間がかかることがあるが、根気強く待つ…。
無事に終了すると、Google Driveの指定されたフォルダに出力される。

Google Drive に保存されたファイルは位置情報を持ったGeoTIFFという画像であるので、
たとえば、QGISなどのGISソフトで開くと正しい位置に読み込まれる。
これで必要に応じてその他の分析とも組み合わすことができるだろう。

2018/06/08

文系のための「正規化指標」

あらゆる物質は種類や状態によって光の反射吸収透過放射の仕方が異なる。
そうした光に関する物質ごとに異なる性質を分光特性とよぶ。
地球観測衛星で得られた画像の分析ではその分光特性を利用する。

そのような分光特性を用いた分析手法の一つが「植生指標(NDVI)」である。



では、どのように物質の分光特性を知るかというと、
分光光度計(spectrometer)とよばれる装置を使用する。
一般ユーザーは買う必要はないだろう。残念ながら私も持っていない…。

ただし、物質の分光特性を知りたいという要望はあるかもしれない。
そういう時に便利な情報が米国地質調査所(USGS)のホームページ。
USGSSpectral Library というところで情報が公開されているので参考にしてみる。

USGS Spectral Library Version 7

残念ながら日本語のページは無いのだが…それほど難しい英語でも無かろう。
このページに入ると何やら表みたいのがあって、
Plotの項目をクリックすると該当する物質の反射強度を知ることができる。

初めて見た人にとっては見方が解らないかもしれない。
一応、分類がされているので、興味のある対象を絞り込むこともできる。
Categoryと書かれた部分のアイコンをクリックすると以下の項目が出てくる。

  • Artificial Materials(人工物)
  • Coatings(塗膜剤)
  • Liquids(液体)
  • Minerals(鉱物)
  • Organic Compounds(有機化合物)
  • Soils and Mixtures(土壌と混合物)
  • Vegetation(植生)
  • Wavelength and Bandpath(波長とバンドパス)

とりあえず、「Vegetation(植生)」を選択すると、
植生に関わる分校特性のデータが抽出されて、一覧に表示される。
見てみると、誰でも知っているような花のパンジーのデータもある。

さて、リモートセンシングの教科書ではアメリカヤマナラシが出てくる。
英語では「Quaking Aspen」。私は植物について何も知らないのだが、
ハコヤナギともよばれる落葉広葉樹らしい。

さっそく、この植物の分光特性を検討してみる。


出典:Kokaly, R.F., Clark, R.N., Swayze, G.A., Livo, K.E., Hoefen, T.M., Pearson, N.C., Wise, R.A., Benzel, W.M., Lowers, H.A., Driscoll, R.L., and Klein, A.J., 2017, USGS Spectral Library Version 7: U.S. Geological Survey Data Series 1035, 61 p., https://doi.org/10.3133/ds1035

アメリカ・ヤマナラシの分光特性を見てみると、
可視領域では緑色光(0.49−0.57μm)で反射率が高く、
青色光(0.45-0.495μm)赤色光(0.62−0.75μm)では反射率が高い。

植物の葉が緑色に見えるのは、植物が緑色の光を反射しているから…

と言われているが、より厳密には、植物のクロロフィルの働きによる。
クロロフィルは光を使って水を分解してエネルギーを作り出し、
その過程で発生した酸素を大気中に放出する。いわゆる、光合成

このクロロフィル青色光と赤色光を吸収し、
緑色の反射率が相対的に高くなるために、植物の葉は緑色に見える
また、光合成のエネルギーには赤色光が使われることが知られている。

さて、次に注目するべきは近赤外光の帯域(0.75−1.4μm)である。
ちょうどこの領域に入った途端、反射率が急激に高くなっている。
つまり、植物の葉は近赤外光を吸収せずに反射させるのである。

実は、植物の葉は光をエネルギーとして必要とするけれど、
近赤外光になるとエネルギーが強すぎて、自らを傷つけてしまうため、
近赤外は反射するのである。これは光合成が活発であるほど顕著である。

つまり、赤色光をしっかり吸収し、近赤外光をしっかり反射するということは、
植物が必死になって光合成を行っているということを意味する。
つまり、元気な植物を見分けるための指標となる。

ということで、これを実際にリモートセンシングで試してみる。
ここまでの話から必要となる波長域は赤色バンドと近赤外バンドが使われる。
この二つのバンドを使って行われる分析手法が「植生指標(NDVI)」である。

NDVI = (NIR - RED) / (NIR + RED)

赤色光に対する近赤外光の反射率を評価しているだけである。
この式によって計算されたNDVIは0〜1の値をとり
光合成が全く行われていない状態では0に近づく

ということで、実際にやってみる。
Landsat 8 の場合にはバンド4バンド5が相当する。
GEEで実行することは極めて簡単。

まず、検索バーからLandsat 8ImageCollectionを検索してインポートし、
インポートしたImageCollection の名前をlandsat8としておく。
そのうえで、可視化パラメータを以下のように設定して準備する。

var vegPalette = {
  palette:['red', 'blue', 'yellow', 'green'],
  min:0.0,
  max:0.3
};

var trueColorParam = {
  bands: ['B4', 'B3', 'B2'],
  gamma: 1,
  min:5000,
  max:12000
};

場所はどこでも良いのだけれども、とりあえず、平城宮跡を中心とし、
2016年5月1日〜2016年9月30日までの期間を範囲とすることにする。
以上の条件で画像を抽出する。


// 時間とWRS-2でフィルタリングし、近畿圏の画像を取得する。

var l8filtered = ee.Image(landsat8
    .filterDate('2016-01-01', '2016-12-31')
    .filterMetadata('WRS_PATH', 'equals', 110)
    .filterMetadata('WRS_ROW', 'equals', 36)
    .sort("CLOUD_COVER")
    .first());

処理はいたって簡単。以下の二行で終了。

// NDVIの計算と表示
Map.centerObject(l8filtered, 10);

var ndvi = image.normalizedDifference(['B5', 'B4']);

Map.addLayer(l8filtered, trueColorParam, 'True Color');
Map.addLayer(ndvi, vegPalette, 'NDVI');


2018/06/07

文系のための「シンプル・コンポジット」

Google Earth Engine(GEE)の登場は色々と衝撃的である。
単に、膨大かつ広範囲な分析が可能となるだけではなく、
今までの常識では考えられなかった手法も出始めている。

そうした手法の一つがGEEによって実装されているSimple Compositeである。

リモートセンシングにおいて最も頭を悩ませる問題の一つは「雲」である。
特に、年間を通して雲が多い地域では分析する上で大きな障害となる。
この問題に対するアプローチの一つがSimple Compositeという手法である。



この手法はLandsatに特化した手法の一つであり、
複数のシーンについて雲量(Cloud Score)を評価した後に、
同じ地点のピクセルの平均値をとって合成する。

とりあえず、試してみる。

まずは、Landsat 8Image Collection を検索してインポートし、
その変数名を「landsat8」としておく。
また、可視化パラメータを以下のように準備する。

// トゥルーカラーパレットを定義する。
var trueColorParam = {
  bands: ['B4', 'B3', 'B2'],
  gamma: 1,

  max: 0.3,
  min: 0.0
};

// フォールスカラーパレットを定義する。
var falseColorParam = {
  bands: ['B5', 'B4', 'B3'],
  gamma: 1,

  max: 0.3,
  min: 0.0
}

// ナチュラルカラーパレットを定義する。
var naturalColorParam = {
  bands: ['B4', 'B5', 'B3'],
  gamma: 1,

  max: 0.3,
  min: 0.0
}

ここで、最小値〜最大値の範囲が「0.0〜0.3」となっているのは、
大気上端反射率(TOA Reflectance)に対応させるため。
詳しく、いずれ説明する。

次に、インポートしたImageCollectionを時期と場所でフィルタリングする。
なお、今回は同じ範囲のシーンに特定する必要があるので、
Landsat 8のメタ情報を使ってパスとロウから範囲をフィルタリングする。


// 時間とWRS-2でフィルタリングし、近畿圏の画像を取得する。

var l8filtered = landsat8
    .filterDate('2016-01-01', '2016-12-31')
    .filterMetadata('WRS_PATH', 'equals', 110)
    .filterMetadata('WRS_ROW', 'equals', 36);

Simple Composite の画像を生成する方法は以下の通り。二通りを試してみる。
ひとつ目は、既定のパラメータを使って合成する方法。
ふたつ目は、CloudScoreの結果を使って合成する方法。


// 既定のパラメータを使って雲の無い合成画像を取得する。
var defaultComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: l8filtered,
  asFloat: true
});

// クラウドスコアを用いて雲の無い合成画像を取得する。
var defaultComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: l8filtered,
  percentile: 10,
  cloudScoreRange:0,
  asFloat: true
});

そして最後に表示させる。


// 近畿圏の画像範囲へ移動し、表示します。
Map.centerObject(l8filtered, 10);

Map.addLayer(
  defaultComposite,
  trueColorParam,
  'Default Composite'
);


Map.addLayer(
  customComposite,
  trueColorParam,
  'Custom Composite'
);

試しに、既定のパラメータを用いたもの(左)と、
Cloud Scoreを使った方法(右)を並べて表示してみる。
上手くパラメータを設定すると精度の高い雲なし衛星画像を生成できる。



ちなみに、並べて比較するにはMapLinkerを使う。

この方法を用いると、一年中、どこかに雲が出ている地域であっても、
雲のない衛星画像を生成することができる。
東南アジアなどを調査地域にしている研究者にはかなり貴重な情報源になる。

とはいうものの、問題が無いわけではない

例えば、日本のように四季を通じて植生が大きく異なる地域の場合、
結果として出力される衛星画像の各々のピクセルは平均されているため、
Simple Compositeを使って得られた画像の使い方や解釈の仕方には注意が必要である。

いずれにせよ、こういった発想は非常に面白い。
一般的な手法として受け入れられるには時間がかかるかもしれないが、
ビッグデータ時代の手法の一つとして期待したい。

2018/06/06

文系のための「Map Linker」

Google Earth Engine(GEE)を使っていると、
複数の解析画像を同時に並べて表示したいことがある。
実は、GEECode Editor ではそういったことも可能になる。

とにかく、こんな感じのことをやってみたい。できれば、連動してもらいたい。



ということで、まずは、Landsat 8 の画像を取得することにする。
時期の範囲は2016年1月1日〜2016年12月31日とし、
場所は奈良の平城旧跡が入る範囲とする。

もちろん、Langsat 8ImageCollectionから選ぶのは雲が最も少ない画像

//   Landsat 8 の画像から一枚の画像を取得する
var beginning = '2016-01-01';
var ending = '2016-12-31';
var heijou = ee.Geometry.Point(135.791605, 34.6881882);

var ln8_2016 = ee.Image(
                landsat8
                .filterDate(beginning, ending)
                .filterBounds(heijou)
                .sort("CLOUD_COVER")
                .first()
                );

次に、可視化する際の可視化パラメータを変数として定義しておく。

// トゥルーカラーパレットを定義する。
var trueColorParam = {
  bands: ['B4', 'B3', 'B2'],
  gamma: 1,
  max: 12000,
  min: 5000
};

// フォールスカラーパレットを定義する。
var falseColorParam = {
  bands: ['B5', 'B4', 'B3'],
  gamma: 1,
  max: 12000,
  min: 5000
}

// ナチュラルカラーパレットを定義する。
var naturalColorParam = {
  bands: ['B4', 'B5', 'B3'],
  gamma: 1,
  max: 12000,
  min: 5000
}

最初にするべきことはMapオブジェクトを作ること。
今回の場合、トゥルーカラー、フォールスカラー、ナチュラルカラーに対応するように、
それぞれの画像に対応した、三つのMapオブジェクトを準備しておく必要がある。

// Mapオブジェクトをインスタンス化する
var map_true = ui.Map();        // トゥルーカラー用の Map
var map_false = ui.Map();       // フォールスカラー用の Map
var map_natural = ui.Map();     // ナチュラルカラー用の Map

そして、それぞれのMapオブジェクトに対応する画像を追加していく。
よく見ると、これまでに使ってきた「Map.addLayer()」と全く同じ。
既定の「Map」インスタンスではなく、新しく作ったMapオブジェクトに追加する。

// それぞれのレイヤにそれぞれの画像を追加する。
map_true.addLayer(ln8_2016, trueColorParam, 'True Color');
map_false.addLayer(ln8_2016, falseColorParam, 'False Color');
map_natural.addLayer(ln8_2016, naturalColorParam, 'Natural Color');

単に表示させるだけであれば、飛ばしても良いのであるが、
少しでも見栄えがよくなるように、
タイトル・ラベルとレイヤー・マネージャーも追加しておく。

まずは、タイトル・ラベル。各々のレイヤに追加していく。

// それぞれのMapにタイトルラベルを追加する。
map_true.add(ui.Label('True Color'));
map_false.add(ui.Label('False Color'));
map_natural.add(ui.Label('Natural Color'));

次に、レイヤー・マネージャーも追加しておく。

// それぞれのMapにレイヤー・マネージャーを追加する。
map_true.setControlVisibility(true);
map_false.setControlVisibility(true);
map_natural.setControlVisibility(true);

複数のマップの同時表示には複数のマップを格納するための「器」が必要となる。
ここでは「maps」という名前を定義し、初期値として「空の配列」をセットする。
そして、これまでに使ってきたMapオブジェクトを配列に放り込む

// 複数のマップオブジェクトを格納するための空の配列を定義する。
var maps = [];

// それぞれのMapを配列に追加する。
maps.push(map_true);
maps.push(map_false);
maps.push(map_natural);

以上で準備完了。あとは、それぞれのマップ・オブジェクトを連動させる。
このときに用いるのがLinkerオブジェクトである。
複数のマップが格納された配列「maps」をそのまま入れてインスタンス化する。

そして、最後の仕上げとしてUIをリセットして完了!

// マップ・リンカーオブジェクトを作って、複数のマップを連動させる
var linker = ui.Map.Linker(maps);

// UIをリセットする。
ui.root.widgets().reset(maps);

これで、今回作成した三つのマップは横三つに並び、
表示位置も連動してくれるはず。
試しに、三つのマップの中でひとつ目のMapの中心を指定してみる。

// 地図の中心をひとつ目のマップのオブジェクトの衛星画像に設定する。
maps[0].centerObject(ln8_2016, 9);

これで三つのマップが連動して動けば完了。

2018/06/05

文系のための「GEEによるバンド合成」

一般的なデジタルカメラには可視領域をカバーする光学センサーが搭載されている。
そして、レンズを通して入ってきた光はカラーフィルタを通過し、
赤色光緑色光青色光の三種類の光の強さに分解される。

赤色光緑色光青色光によって全ての色を表現できるため、
この三種類の光をあわせて「光の三原色」ともよぶ。
コンピュータの世界では、よくRGBという言葉で表される。

詳細についてはすでに文系のための「カラー画像のしくみ」で説明した。
また、分解された光の成分は、それぞれ、対応するRGBチャンネルに割り当てられる。
これについては文系のための「カラーチャンネル」で説明した。

人工衛星に搭載されている光学センサーを使用する場合もこの仕組みを利用する。
ただし、すでに述べたように、地球観測衛星は人の目に見えない範囲もカバーし、
光学センサーで感知した光を複数のバンド(帯域)に分けて取得する。

バンドの数は人工衛星に搭載されたセンサーに依存し、
Landsat 8OLIの場合には11のバンドに分けられている。
ちなみに、国産の人工衛星「ALOS」のAVNIR-2センサーは4バンド

一般的なデジタルカメラは可視領域3バンドに対してRGBの3チャンネル
では、三つ以上のバンドで得られた人工衛星の複数バンドに対するチャンネルは…?
実は、やはり、可視化するためにはRGBの3チャンネルに割り当てることになる。

このことは実際に試してみた方がわかりやすい。

まずは、検索バーを使って、Landsat 8ImageCollectionをインポートし、
インポートしたImageCollectionの名前を「landsat8」に変更しておく。
そして、時期と場所でフィルタリングし、雲がもっとも少ない一枚を取得する。

var ln8_2016 = ee.Image(
                landsat8
                .filterDate(beginning, ending)
                .filterBounds(heijou)
                .sort("CLOUD_COVER")
                .first()
                );
Map.centerObject(ln8_2016, 10);

詳しい手順は文系のための「Image CollectionからのImageの抽出」を参照。
なお、マップの中心は抽出した一枚の衛星画像が中心となるようにセットしている。
Map.centerObject()はジオメトリではなく、Imageに対しても使える。

さて、ここからが重要なポイントとなる。
まずは、抽出された画像の情報を詳しく見てみることにする。
以下のコードを実行し、コンソールに表示される情報を観察する。

print(ln8_2016)

実行した結果として、抽出された画像の情報が表示されるので、
bands: List (12 elements)」と書かれたところをクリックして展開すると、
以下のように表示される筈である。



一応、Landsat 8OLIの各バンドについても確認しておくと…。

  • バンド1:430-450nm(短波青色光)
  • バンド2:450-510nm (青色光)
  • バンド3:530-590nm(緑色光)
  • バンド4:640-670nm(赤色光)
  • バンド5:850-880nm(近赤外光)
  • バンド6:1,570-1,650nm(短波長赤外光)
  • バンド7:2,110-2,290nm(短波長赤外光)
  • バンド9:1,360-1,380nm(短波長赤外光)

ここには12のバンドが並んでいるように見えるが、
12番目のバンドは「QAバンド」という特殊なバンドであり、
ここでは使用しないので無視する。必要なバンドは0〜10の11バンドである。

これらのバンドには名前がついている。
バンド1であれば「B1」、バンド2であれば「B2」…。
Landsat 8 のデータの場合、各バンドの名称は極めて解り易い。

では、最初は可視領域での合成を行ってみる。
一般的に可視領域は概ね400〜700nmの範囲である。
これに該当するのは、バンド4バンド3バンド23バンドである。

この三つのバンドをRGBチャンネルに入れて表示するのが以下のコマンド。

Map.addLayer(
                ln8_2016,
                {
                  bands: ['B4', 'B3', 'B2'],
                  gamma: 1,
                  max: 12000,
                  min: 5000
                }
            );

可視化パラメータの「bands」に対して、前から順番にRGBのチャンネルを指定する。
すると、11バンドのうち可視領域の3バンドが合成され、
航空写真のような衛星画像が見事に表示される。

このように、見た目の通りに正しく表示された衛星画像は、
トゥルーカラー(True Color)」とよぶ。
まるで、航空写真に見えるが実際には人工衛星の画像である。




では、異なる表現についても実験してみることにする。
今度はバンドを入れ替えて、「偽物の色の画像」を作ってみることにする。
ちなみに、この種の画像は「フォールスカラー(False Color)」とよぶ。

まずは、ひとつ目。先程のコードの「bands」の部分を以下のように書き直す。

Map.addLayer(
                ln8_2016,
                {
                  bands: ['B5', 'B4', 'B3'],
                  gamma: 1,
                  max: 12000,
                  min: 5000
                }
            );



この合成では「近赤外光(850-880nm)」相当するバンド5を「赤色チャンネル」に、
バンド4に相当する「赤色光」を「緑色チャンネル」に、
そして、バンド3の「緑色光」を「青色チャンネル」に割り当てている。

バンド5がカバーする近赤外光は植物の活性度に大きく関わっているとされている。
植物が光合成を行う時には葉緑素(クロロフィル)が活性状態となるが、
植物にとって近赤外光はエネルギーが強すぎるために反射するのである。

したがって、このカラー合成画像を観察し、
赤く輝く部分があれば、その場所では光合成が活発に行われていることになる。
逆に、黒ずんだ赤色に見える部分は葉緑素の活性度が低いことを示している。

さて、森林が赤色に見えるのは落ち着かないかもしれない。ということで、もう一つ。

Map.addLayer(
                ln8_2016,
                {
                  bands: ['B4', 'B5', 'B3'],
                  gamma: 1,
                  max: 12000,
                  min: 5000
                }
            );



以前は「ナチュラル・カラー(Natural Color)」と呼ばれていた。
この合成では「近赤外光(850-880nm)」を緑色チャンネルに入れ、
緑色光(530-590nm)」を青色チャンネルに入れている。

このようにして、三つ以上の複数のバンドをRGBチャンネルに割り当て、
不可視な現象を可視化できることがリモートセンシングの面白さの一つである。
ただし、本当にリモートセンシングは奥が深い。これだけではない。

ということで、次回からは少しずつ、内容を深めつつ、GEEに慣れていきたい。

なお、今回の資料は公開レポジトリの中に置いてある。
Reader」の「users/yufujimoto/thinking_about_gee」の中の、
visualizing_multi_band」が該当するスクリプトである。


文系のための「シェープ・ファイルのインポート」

地理空間情報システム(GIS: Geospatial Information System)を使っている人にとって、
最も馴染み深いベクトルデータの形式はシェープファイルであろう。
このファイル形式はESRI社が開発したデファクト・スタンダードでもある。

これまでにはGoogle Earth Engine(GEE)幾何オブジェクト(Geometry)について、
Javascriptを使って作成する方法と、ジオメトリー・ツールを使う方法を紹介した。
しかし、場合によってはシェープファイルを使いたいという要望もあるかもしれない。

GEEは、勿論、そのような要望にも応えてくれている。
シェープファイルとして作成されたベクトル形式のデータだけでなく、
ラスター形式のデータをアップロードして使うことができる。

ということで、本日はシェープファイルのアップロードについて整理する。

GEECode Editor上段左側(コードエリアの左側)を見てみると、
スクリプト(Scripts)ドキュメント(Docs)アセット(Assets)のエリアがあり、
まずは、このエリアのタブのうち、右端の「アセット(Assets)」を選択する

選択すると「アセット・マネージャー(Assets Manager)」が開く。
ちなみに、「アセット」とは日本語で「資産」という意味である。
つまり、自分のデータを保持するための領域である。

アセットにシェープファイルを加える場合は「テーブル」としてアップロードする。
New」と書かれたボタンをクリックし、「Table Upload」を選択する。
あとは、任意のシェープファイルをアップロードするだけである。



個人的な経験からシェープファイルをアップロードする際には注意事項がある。
まずは、ファイルについて。シェープファイルは複数のファイルから成る。
したがって、少なくともSHP、DBF、SHXの三つのファイルを同時に選択する。

ふたつ目の注意事項は座標系の問題。PRJファイルを解析する機能はあるようだが、
あらかじめ、WGS-84に統一しておくことが無難である。
何らかの理由でアップロードに失敗することがある。

三つ目の注意事項は文字エンコーディングの問題。
これも可能であれば事前にUTF-8に変換しておいた方がよい
この作業に関してはQGISを使った方が楽かもしれない。

これらの問題は解決されているかもしれないが…注意した方が無難である。
シェープファイルのインポートについては色々と不安定なところも多い。
上記のことに注意してもうまくいかないこともある。この辺りは不明な点が多い。



さて、以上のことを抑えた上で「OK」ボタンを押すと、アップロードが開始される。

アップロードされると、「取り込み(Ingest)」とよばれるタスクが実行される
その状況はCode Editor上段右側の「タスク(Tasks)」をクリックし、
タスク・マネージャー(Tasks Manager)」を開くと確認することができる。



この取り込み作業にはかなりの時間がかかる。軽くても、5〜10分以上の時間がかかる。
ちなみに、タスクが実行されれば、ログアウトしても問題ないし、電源を切っても良い
一度、クラウド上にアップロードされれば、寝ている間に仕事をしてくれる。

さて、無事にアセットに追加されれば、今度はCode Editorインポート(import)する。
再び、「アセット・マネージャー」を開いて、取り込まれたファイルを選択し、
インポート(import)のボタンをクリックする。



なお、インポートしたデータをマップに追加し、中心に表示させる方法は以下の通り。

Map.addLayer(table,{color:"green"});
Map.centerObject(table,14);

以下は実際に表示した例。




文系のための「GEEのジオメトリ・ツールの使い方」

Google Earth Engine(GEE)ジオメトリを作成する方法の一つとして、
MapエリアにあるGeometry Toolsを用いるという方法もある。
この Geometry Tools はマップエリアの左上の部分に配置されている。



おそらく、ジオメトリを編集するにはこのツールを使うのが最も便利であろう。

わざわざ、説明する必要もなく、見れば、おおよその使い方は想像できるはず。
点(ポイント)を作成したいのであれば、右から二番目のアイコンを選択し、
地図上の配置したい地点をクリックすると点が布置される。



ジオメトリ・ツールを使って幾何オブジェクトを布置すると、
コード・エリアの冒頭に「var geometry: Point(... , ...)」が追加される。
これはSRTMや衛星データのインポート(importと同じ状態である。

インポートされた幾何オブジェクトの既定の名称は自由に変えることができる
変更するには「geometry」と書かれている部分をクリックするだけ。
あとは、変数として設定したのときと同様に扱えば良い。今回はそのまま。

インポートされた幾何オブジェクトをマップの中心に持ってくるには…。

Map.centerObject(geometry, 15);

このジオメトリー・ツールは色々と便利で土地利用分類の際にも用いる。
その際には、追加したGeomteryFeatureに変換する必要があるが、
今回はこの範囲で留めておくことにする。