Blog
[Google Cloud Platform] public dataset の地理空間画像から日本の画像を探してみよう
みなさんこんにちは。
アドテクスタジオの makocchi です。
先日 Google Cloud Platform(以下 GCP) の blog で「Powering geospatial analysis: public geo datasets now on Google Cloud」という記事が投稿されました。
衛星からの地理空間画像の public dataset が GCP で利用可能になったという内容なのですが、さっそく画像を取得してみました。
衛生の種類は 2 種類あって Landsat と Sentinel-2 があるのですが、今回は Sentinel-2 の衛星画像を見てみました。
地理空間画像データの保管場所
Sentinel-2 の画像は GCS の gs://gcp-public-data-sentinel-2/ に保存されています。
その中に緯度経度と画像のマッピング情報が index 化されて gs://gcp-public-data-sentinel-2/index.csv.gz に保存されています。
index.csv の中身
index.csv.gz のサイズは 49M 程度で解凍すると 422M になりました。
行数は 100 万程のようです。
1 2 3 4 5 6 7 8 |
$ ls -sh index.csv.gz 49M index.csv.gz $ ls -sh index.csv 422M index.csv $ wc -l index.csv 1065634 index.csv |
実際の中身ですが、csv の先頭行にカラムの説明が書かれています。
1 2 3 4 5 6 |
GRANULE_ID,PRODUCT_ID,DATATAKE_IDENTIFIER,MGRS_TILE,CAPTURE_TIME,GEOMETRIC_QUALITY_FLAG,GENERATION_TIME,NORTH_LAT,SOUTH_LAT,WEST_LON,EAST_LON,BASE_URL S2A_OPER_MSI_L1C_TL_MTI__20160915T092853_A006437_T44UPU_N02.04,S2A_OPER_PRD_MSIL1C_PDMC_19700101T000000_R005_V20160915T053642_20160915T054003,GS2A_20160915T053642_006437_N02.04,44UPU,2016-09-15T05:40:03.107000Z,PASSED,1970-01-01T00:00:00.000000Z,48.7450740854,47.7533830954,82.3342021112,83.0997076228,gs://gcp-public-data-sentinel-2/tiles/44/U/PU/S2A_MSIL1C_20160915T053642_N0204_R005_T44UPU_19700101T000000.SAFE S2A_OPER_MSI_L1C_TL_MTI__20160915T092853_A006437_T44TNS_N02.04,S2A_OPER_PRD_MSIL1C_PDMC_19700101T000000_R005_V20160915T053642_20160915T054003,GS2A_20160915T053642_006437_N02.04,44TNS,2016-09-15T05:40:03.107000Z,PASSED,1970-01-01T00:00:00.000000Z,46.9537991674,45.9623280677,80.9996053231,82.2915737646,gs://gcp-public-data-sentinel-2/tiles/44/T/NS/S2A_MSIL1C_20160915T053642_N0204_R005_T44TNS_19700101T000000.SAFE S2A_OPER_MSI_L1C_TL_MTI__20160915T092853_A006437_T44TPT_N02.04,S2A_OPER_PRD_MSIL1C_PDMC_19700101T000000_R005_V20160915T053642_20160915T054003,GS2A_20160915T053642_006437_N02.04,44TPT,2016-09-15T05:40:03.107000Z,PASSED,1970-01-01T00:00:00.000000Z,47.8460110267,46.9998778483,82.3152219858,82.6907905848,gs://gcp-public-data-sentinel-2/tiles/44/T/PT/S2A_MSIL1C_20160915T053642_N0204_R005_T44TPT_19700101T000000.SAFE S2A_OPER_MSI_L1C_TL_MTI__20160915T092853_A006437_T43TGN_N02.04,S2A_OPER_PRD_MSIL1C_PDMC_19700101T000000_R005_V20160915T053642_20160915T054003,GS2A_20160915T053642_006437_N02.04,43TGN,2016-09-15T05:40:03.107000Z,PASSED,1970-01-01T00:00:00.000000Z,47.7980551413,46.7937696349,78.221933898,79.13512592,gs://gcp-public-data-sentinel-2/tiles/43/T/GN/S2A_MSIL1C_20160915T053642_N0204_R005_T43TGN_19700101T000000.SAFE ..... |
緯度経度の情報や GCS の保存場所とかが書かれていますね。
これらのデータの中から日本(東京)の衛生画像データを探してみましょう。
東京は北緯(NOTH_LAT) 35.6 度、東経(EAST_LON) 139.7 度あたりです。
index.csv を BigQuery に load する
csv を落としてきて grep や awk で頑張って東京付近の index を探すことも可能ですが、せっかくなので BigQuery にデータを入れて検索してみましょう。
BigQuery は GCS に置かれた file から簡単に load することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ bq load makocchi.sentinel_2 gs://gcp-public-data-sentinel-2/index.csv.gz GRANULE_ID,PRODUCT_ID,DATATAKE_IDENTIFIER,MGRS_TILE,CAPTURE_TIME,GEOMETRIC_QUALITY_FLAG,GENERATION_TIME,NORTH_LAT ,SOUTH_LAT,WEST_LON,EAST_LON,BASE_URL $ bq show makocchi.sentinel_2 Table myproject:makocchi.sentinel_2 Last modified Schema Total Rows Total Bytes Expiration ----------------- ----------------------------------- ------------ ------------- ------------ 14 Oct 05:11:23 |- GRANULE_ID: string 1065634 454789840 |- PRODUCT_ID: string |- DATATAKE_IDENTIFIER: string |- MGRS_TILE: string |- CAPTURE_TIME: string |- GEOMETRIC_QUALITY_FLAG: string |- GENERATION_TIME: string |- NORTH_LAT: string |- SOUTH_LAT: string |- WEST_LON: string |- EAST_LON: string |- BASE_URL: string |
NORTH_LAT や WEST_LON のようなカラムは理想は float なのですが・・・string じゃないと駄目でした。(多分マイナスの値も入っていたからだと思われます)
それではさっそく東京のデータを探してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ bq query ' SELECT NORTH_LAT, EAST_LON, BASE_URL FROM [myproject:makocchi.sentinel_2] WHERE CAST(NORTH_LAT AS float) BETWEEN 35 AND 36 AND CAST(EAST_LON AS float) BETWEEN 138 AND 140 ' |
こんな感じで探してみたのですが、一番東京に近そうなのはこのデータのようでした。
1 2 3 4 5 |
+---------------+---------------+-----------------------------------------------------------------------------------------------------------------+ | NORTH_LAT | EAST_LON | BASE_URL | +---------------+---------------+-----------------------------------------------------------------------------------------------------------------+ | 35.225114032 | 138.934514048 | gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE | +---------------+---------------+-----------------------------------------------------------------------------------------------------------------+ |
ちなみに北緯 35.225114032、東経 138.934514048 ってどこなのかっていうと芦ノ湖からちょっと西にいったところのようです。
さっそくデータを見てましょう。
BASE_URL に書かれている GCS の中身を見てみると
1 2 3 4 5 6 7 |
$ gsutil ls gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/INSPIRE.xml gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/S2A_OPER_MTD_SAFL1C_PDMC_20161010T072654_R074_V20161010T012652_20161010T013613.xml gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/manifest.safe gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/DATASTRIP/ gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/GRANULE/ gs://gcp-public-data-sentinel-2/tiles/54/S/TD/S2A_MSIL1C_20161010T012652_N0204_R074_T54STD_20161010T072654.SAFE/rep_info/ |
このようなデータ構造になっていて、実際の画像データは GRANULE の中に置かれているようです。
GRANULE からさらに掘り進めると、IMG_DATA というディレクトリがありその中に画像が置かれていました。
画像は .jp2 という拡張子になっていて jpeg 2000 の形式で置かれています。
早速見てみましょう。
・・・暗くて何もわからない!(いやもしかしたら白黒なのか・・)
IMG_DATA のフォルダには何枚か画像が入ってますがいずれもほぼほぼ真っ黒。
このままでは終われない
他にも画像が無いかいろいろ探していたところ、IMG_DATA と同じ階層に QI_DATA というディレクトリがあり、その中にも .jp2 があったので見てみたところ・・
雲!雲!雲!
というわけであまりいい画像が探せませんでした・・・
他の緯度経度でもいろいろ画像を探してみたんですけども、あまりいい画像が無かったです。悔しい。
駿河湾の画像は見つけました。
まとめ
地理情報と衛星画像が GCP 内で処理できるようになったことで、いろいろな分析が GCP 内で完結できるようになりますね。
GCP の blog にも書かれていましたが、実際に分析をしている会社も既に何社かあるようです。
先日は気象データも BigQuery で分析できるようになりましたし、こうしたデータを public にしてくれるのはさすが Google です。
今回はあまりいい画像を探すことができませんでしたが、次回は Landsat の衛星画像でチャレンジしようと思います!
Author