Google Earth EngineからPythonを使ってプロダクトをまとめてダウンロード


概要

 Google Earth Engine (以下GEE)には大量の衛星画像やプロダクトが蓄積されていますが、GEE Code Editor上ではJava Scriptを言語として用いなければいけません。これらの衛星画像をGeoTiffで大量にダウンロードできれば、後はPythonで読み込んで処理を行う事が出来ます。こちらの記事でもループを使ったダウンロード法について紹介されていますが、本記事ではループを使わず、ImageCollectionをそのまま用いるダウンロード法についてご紹介したいと思います。

*ローカルの容量が不足しているなど、GEE上で処理を行う事が望ましい場合もあります。
*学校契約などでGoogle driveの容量が無限の場合は、Google Colabとの組み合わせで容量を気にせずPythonで解析が行えます。

データ

 今回ダウンロードしたのは、世界の降水推定量のデータセットであるPERSSIAN-CDRです。

コード

 以下のコードは、Google Colab上で実行を行ってください。Colabについて

GeeDownload.py
#必要なライブラリのインストール
!pip install earthengine-api
!pip install unidecode
!pip install geetools

#GEEをPython上で使う為の準備
import ee

#このコードを実行すると、Googleアカウントの認証が要求されます。
#表示されるリンクを踏むとアカウントの認証画面に飛びます。
#使用したいGoogleアカウントを選んだら、表示された文字列をコード中に表示されるボックスへコピペしてください。
ee.Authenticate()

ee.Initialize() 

#利用するバンドの選択
band=['precipitation']
#関心領域の設定
ROI =ee.Geometry.Polygon([98,58,117.995,58,117.995,50.004,98,50.004])

#バッチダウンロードのためのライブラリのインポート
from geetools import batch
#ImageCollectionの対象領域・対象期間による絞り込み
PrecipitationData=ee.ImageCollection("NOAA/PERSIANN-CDR").filterDate('2001-07-01', '2001-09-01').filterBounds(ROI);
#ダウンロードの実行
tasks=batch.Export.imagecollection.toDrive(
    collection=PrecipitationData.select(band), #ダウンロードするバンドの指定
    folder='precipitation_data_2001', #保存先のフォルダの指定
    scale= 500, #解像度の指定(m)
    region= ROI) #対象領域の設定

ダウンロードしたデータは、Google Earth EngineにログインしたGoogleアカウントに付随するGoogle driveに保存されます。Google Earth Engine Code editorにてtaskを開くと、画像例の様に実行状況について確認を行うことも可能です。

 ダウンロードが完了した結果の例です。