GCOM-Cのデータを使って全球カラー画像の作成をトライしてみました。
全部ダウンロードして画像を作成するとなると、ダウンロードに時間がかかり、自宅の回線を圧迫することは容易に想像出来ます。
そこで今回はAWS上ダウンロードと画像作成までしてみたいと思います。
1. ダウンロードするファイル一覧を取得
G-PortalのCSW検索を用いてファイル一覧とftpのURLを取得します。G-PortalのCSW検索についてはG-Portalのマニュアル を参照してください。
今回は2021年1月のDescending バンド3の 一か月統計データを取得してみます。
以下のコマンドでファイル名一覧を取得できます。
curl -s 'https://gportal.jaxa.jp/csw/csw?service=CSW&version=3.0.0&request=GetRecords&outputFormat=application/json&count=3000&datasetId=10002035&startTime=2021-01-01T00:00:00Z&endTime=2021-01-31T23:59:59Z&orbitDirection=Descending&ProcessTimeUnit=01M' | jq '.features[].properties.product.fileName' | sed -e 's/"//g' | awk -F"/" '{print $12}'
簡単に説明しますと、出力フォーマットにjsonを指定し、jqコマンドでファイル名を含む文字列を抜き出す。 awkコマンドで / ごとに区切り、ファイル名の文字列のみを抜き出します。
実行結果によると、全部で422ファイルあるようです。
実行結果(一部) GC1SG1_20210101D01M_T0831_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0927_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0928_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0729_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0929_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0829_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0826_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0629_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0930_L2SG_RV03Q_2000.h5 GC1SG1_20210101D01M_T0828_L2SG_RV03Q_2000.h5
2. ファイルのURL一覧を取得
先ほどのコマンドを少し修正し、G-Portalの ftpサイトのURLにします。 sedコマンドでhttps://gportal.jaxa.jp を ftp://ftp.gportal.jaxa.jp に変えます。
curl -s 'https://gportal.jaxa.jp/csw/csw?service=CSW&version=3.0.0&request=GetRecords&outputFormat=application/json&count=3000&datasetId=10002035&startTime=2021-01-01T00:00:00Z&endTime=2021-01-31T23:59:59Z&orbitDirection=Descending&ProcessTimeUnit=01M' | jq '.features[].properties.product.fileName' | sed -e 's/"//g' -e 's/https/ftp/g' -e 's/gportal.jaxa.jp\/download/ftp.gportal.jaxa.jp/g'
これで一覧が取得できます。
実行結果(一部) ftp://ftp.gportal.jaxa.jp/standard/GCOM-C/GCOM-C.SGLI/L2.LAND.RV03.Statistics/2/2021/01/GC1SG1_20210101D01M_T1307_L2SG_RV03Q_2000.h5 ftp://ftp.gportal.jaxa.jp/standard/GCOM-C/GCOM-C.SGLI/L2.LAND.RV03.Statistics/2/2021/01/GC1SG1_20210101D01M_T1408_L2SG_RV03Q_2000.h5 ftp://ftp.gportal.jaxa.jp/standard/GCOM-C/GCOM-C.SGLI/L2.LAND.RV03.Statistics/2/2021/01/GC1SG1_20210101D01M_T0602_L2SG_RV03Q_2000.h5 ftp://ftp.gportal.jaxa.jp/standard/GCOM-C/GCOM-C.SGLI/L2.LAND.RV03.Statistics/2/2021/01/GC1SG1_20210101D01M_T1325_L2SG_RV03Q_2000.h5 ftp://ftp.gportal.jaxa.jp/standard/GCOM-C/GCOM-C.SGLI/L2.LAND.RV03.Statistics/2/2021/01/GC1SG1_20210101D01M_T1225_L2SG_RV03Q_2000.h5
3.ファイルのダウンロードとtiff画像作成
先ほどつくったURLからwgetコマンドでファイルをダウンロードします。 こちらを参考にしました。
wgetをftpで扱えることに気が付きませんでした。そういえば、ftpサイトはwebブラウザで開けるのでwgetでもいけるのか。
先ほどのURL一覧を配列で保存して、wgetで一つずつダウンロードします。
wget -c --user=${USR} --password=anonymous ${URL}
ダウンロードしたらtiffファイルを作成していきます。今回は統計量のうち、Rs_VN03_MAXを指定しました。
python h5_2_tiff.py ${filename} Rs_VN03_MAX ${tiff_filename}
tiffファイルを作成するところまでしたら、tiff画像をgzipで圧縮ます。圧縮することで、一つ80MBほどのファイルが半分以下の容量に減らせます。
ダウンロードしたHDF5ファイルは不要なので削除します。全部保持していたら容量がおそらく100GBを超えるはずです、、、
gzip ${tiff_filename} rm ${filename}
この流れをAWSのEC2インスタンス上で実行します。
かなり小さいインスタンスタイプのt2.micro で実行します。t2.miroではメモリが4GBしかないですが、gdalwarpとかメモリ消費が大きい操作はないので、実行できるはずです。
4. 処理結果
全442ファイルの処理が完了するまで、4時間半かかりました。圧縮して全部で11GBでした。当初の見立てでは2時間くらいで終わる予定でしたが、だいぶ時間がかかりました。
一番の原因としては、CPUの稼働率が常に50%以上で、CPUクレジット残高を著しく消費し、実行速度がとても遅くなっていました。これ知らんかったよ... おそらく、これと関連してると思うのですが、ダウンロード速度が著しく遅くなっていました。
5. まとめ
今回はAWS EC2の一番小さいインスタンスタイプ(t2.micro)でGCOM-Cの250m解像度のファイルを大量にダウンロードと処理してみました。結果、t2.microでは、CPU使用率が高い状態が続き、CPUクレジット残高を消費した結果、処理が遅くなり想定より時間がかかる結果になりました。スポットインスタンスで実行して、S3に保存とかが賢い方法かもしれません。
参考文献
G-Portal 地球観測衛星データ提供システムユーザ向け取扱説明書
Tomoko Kawaguchi Akitsu's Web Page - GCOM-Cデータのダウンロード
バーストパフォーマンスインスタンスの CPU クレジットとベースライン使用率 - Amazon Elastic Compute Cloud