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ソフトで開くと正しい位置に読み込まれる。
これで必要に応じてその他の分析とも組み合わすことができるだろう。

0 件のコメント:

コメントを投稿