COG(Cloud Optimized Geotiff)とは?~メリット、適用データ、使い方~ Tellus v3.0から適用される新しいデータ形式に迫る!
今、新たなデファクトスタンダードになりつつある衛星データ形式COGについて、詳しくお伝えします!
みなさんは、COG(しーおーじー、もしくは、こぐ)というファイル形式の名前を聞いたことがあるでしょうか。
Cloud Optimized Geotiffの略で、名前の通り、「クラウドに最適化された」+「GeoTIFF」という意味です。「GeoTIFF」は、位置情報のついたTIFF(画像ファイル)という意味で、衛星データで最近よく用いられているファイル形式です。
本記事では、今世界的に注目を集めているCOGについて、詳しく解説していきます。
衛星データの形式
衛星データは、地球のどこかを撮影していることが多いため、観測データに地理情報が紐づいている「地理空間データ」であることが一般的です。
地理空間データを扱う前に知っておきたい地理空間データの心得
衛星データの種類によって、データ形式はいくつか種類が存在します。
【衛星データと形式の一例】
・陸域データ:GeoTIFF、JPEG2000
・環境(大気など)データ:HRIT、NetCDF、HDF
・その他:CEOS、バイナリ
今回の主役であるCOGの説明に入る前に簡単に、それ以外のデータ形式についても説明しておきます。
GeoTIFF、JPEG 2000(JP2K)
Google Mapなどで見る航空写真や衛星写真のように、宇宙から地表面(陸域)の様子を捉えた衛星画像は、GeoTIFF形式や、JPEG 2000形式で扱われることが多いです。
GeoTIFFは、地理情報(Geo)のついたTIFF(画像)ファイルです。
1画素(ピクセル)あたり何バイトのデータを持つかを自由に定めることができるため、階調の細かいデータも表現可能です。通常、パソコンの画面表示等の際は8ビット(256階調)で表現されていますが、衛星データの場合さらに細かい階調で撮影されていることが多く、12ビットや16ビットなどで格納されていることもあります。1ピクセル当たりのビット数のことをビット深度と言います。
JPEG 2000は一般的に用いられるJPEGの発展形です。通常のJPEGと比較していくつか特徴がありますが、中でも衛星データで用いられる理由として、時に数千ピクセル×数千ラインにもなる超高解像度な衛星画像に対応できること、およびビット深度が大きい画像に対応できることが挙げられます。
参考:
https://www.cqpub.co.jp/hanbai/books/18/18721/18721_1syo.pdf
CEOS、バイナリ
衛星データ特有のファイル形式がCEOS(せおす)です。
CEOSフォーマットは、各国の宇宙機関や国際機関などが国際的な協力をするために組織した地球観測衛星委員会(Committee on Earth Observation Satellites)が定めたデータフォーマットです。
バイナリデータのどの位置にどのようなデータが収められているかは、衛星やセンサごとに異なるため、既存のソフトウェアやライブラリが対応していない観測データを利用するには各データプロバイダが公開しているドキュメントを読み込む必要があります。
CEOS形式は、通常の画像形式と比較して、より多くの情報を含めることができるため、処理レベルの低い(生データに近い)場合によく用いられます。
NetCDF、HDF
NetCDF(ねっとしーでぃーえふ)は、Network Common Data Form の略で、配列指向の科学データを統合的に扱うことができる自己記述型のファイル形式です。
UCAR (University Corportation for Atmospheric Research)の Unidata Center が開発した、気象や海洋など幅広い分野で利用されているデータフォーマットです。
もう一つ、同じようなデータでよく用いられる形式としてHDF(えいちでぃーえふ)があります。HDFはHierarchical Data Formatの略で、NCSA (National Center for Supercomputer Applications) が開発しました。観測だけではなく、数値計算・シミュレーションなどでも利用されることが多い形式です。バージョン5 になり並列分散データに対応しました。
衛星データでは、環境系のデータでよく使われており、しずく(GCOM-W)やしきさい(GCOM-C)、いぶき2号(GOSAT-2)などで採用されています。また、イタリアのCOSMO-SkyMED衛星(SAR)でも用いられています。
参考:
地球観測データ利用ハンドブック(GOSAT-2/いぶき 2 号)
https://www.eorc.jaxa.jp/GOSAT/assets/doc/G2_Handbook_Japanese_1st_Edition.pdf
情報通信技術を宇宙科学にどう活用するか?(第4回)
https://www.isas.jaxa.jp/docs/PLAINnews/158_contents/158_1.html
HRIT
HRITは、ひまわりなど気象衛星で用いられている国際的なデータ形式で、High Rate Information Transmissionの略です。静止気象衛星「ひまわり8号」の運用開始に伴い、平成27(2015)年7月7日より提供が開始されています。
参考:
気象衛星画像データ (HRIT形式)
http://www.jmbsc.or.jp/jp/online/file/f-online50100.html
Coordination Group for Meteorological Satellites LRIT/HRIT Global Specification
https://www.cgms-info.org/documents/cgms-lrit-hrit-global-specification-(v2-8-of-30-oct-2013).pdf
COG(Cloud Optimized GeoTIFF)とは
ここまで衛星データで用いられる、様々なデータ形式についてご紹介してきました。
ここからはいよいよ本題、近年注目を集めるCOGについて紹介していきます。
COGとはCloud Optimized GeoTIFFの略で、名前の通り、「クラウドに最適化された」+「Geotiff」という意味です。「GeoTIFF」は、位置情報のついたtiff(画像ファイル)という意味で、衛星データでよく用いられているファイル形式です。
具体的には、これまで撮影した画像(シーン)単位でダウンロードしないと読み取れなかった情報を、範囲やピクセルを指定して、欲しいところだけダウンロード(またはネットワーク越しにアクセス)できるようにしたというのがCOGの特徴です。
例えるなら、インターネットで映画を観る時に映画一本をまるごとダウンロードしなくても、必要なところから見ることができるように、httpのrange request(一部分だけをリクエスト)に対応するように最適化された画像フォーマットなのです。
参考:
Providing data as Cloud Optimized GeoTIFF
https://www.cogeo.org/providers-guide.html
COG誕生の背景ー衛星データのクラウド化
衛星データは容量が大きく、専門的な知識を持つ限られた人だけが利用していたため、データ自体の保管場所は、その衛星を保有している団体が保有しているオンプレミス(敷地内)のサーバー上もしくは、磁気テープなどに保管されていました。
一方で、IT業界へ目を向けるとこの10年ほどで、世界的に企業や政府、個人のサーバー環境がオンプレ(ローカル)から、クラウドへ移行を遂げてきました。企業の敷地内に用意していたサーバーは不要となり、インターネットさえつながれば、どこからでも自社のデータにアクセスできるようになったのです。
この流れは衛星データ界隈にとっても例外ではなく、AWSやGoogle Cloud、Azureなどのクラウド上に衛星データが搭載され、政府系の衛星であれば無料で、商用の衛星データであればサブスクリプションで、インターネット上からアクセスできるようになっています。
衛星データがGeoTIFFやJPEG2000方式などでインターネット上で配信されるようになった後、さらなる効率化と使い勝手の向上を目指して開発が進められたものが、COGということになります。
参考:
Sentinel-1 GRD in Cloud Optimized GeoTIFF format – News – CREODIAS(3/27/19)
Sentinel-2 Cloud-Optimized GeoTIFFs Now Available on AWS Registry of Open Data(2020-10-07)
COGの利点
衛星データをピクセル単位で扱えるようになったことで、利用者側の観点では、これまでの衛星データ解析と比較して、ファイルの読み取り時間が短縮されるという利点があります。
従来のGeoTIFFやCEOSのデータを利用するには、原則的に
1.シーンのファイル全体を自身の環境(解析用のサーバーや手元のPC)へダウンロード
2.QGISやPython、GDALなどでファイルを開き、欲しい範囲のデータを抜き出す。
という手順を踏む必要がありました。
シーンのすべてのピクセルのデータを利用したい、データをすべて手元で保存しておきたいという人は別ですが、
データを欲しい範囲が限られている人にとっては、
・ファイル全体をダウンロードするため余分な解析を始めるまでに時間がかかる
・ファイルを保存しておくストレージを余分に必要とする
などのデメリットがありました。
これがCOGの場合は、欲しい部分だけを取得することができるため、ダウンロード時間を短縮できます。
多くの地点や時刻のデータを使って解析する際も、一度すべてのファイルをしないといけなかったものが、都度欲しい部分だけを取得すればよくなるため、必要なストレージが最小限で済みます。
ただし、同じデータを使って繰り返し解析をするようなケースでは従来どおり一度手元にダウンロードしたほうがトータルでの解析時間は早くなります。
加えて、COGではこれまでの解析ツールでもGeoTIFFとしてそのままCOGを読むことができる互換性を持っているということも大きな利点になります。
COGに対応している衛星データ・プラットフォーム
このような利点があるCOG形式ですが、すでに欧米の政府衛星データや商用衛星データ企業で対応が始まっています。ここではCOG形式に対応している代表的な衛星データやプラットフォームを紹介していきます。
参考:
https://www.cogeo.org/#implementations
【衛星データ】
Planet
100機以上の超小型人工衛星を運用し、衛星データを提供しているNEW SPACEの草分け的存在であるアメリカのPlanetは、彼らの衛星データのすべてをCOG形式で提供しています。
https://www.planet.com/
Digital Globe/GBDX
古くから商用で世界最高レベルの解像度の衛星データを提供しているDigital Globeの衛星データプラットフォームGBDXでもCOG形式でデータが提供されています。
https://gbdxdocs.digitalglobe.com/docs/about-the-gbdx-platform
Cloud optimized GeoTIFFs and the path to accessible satellite imagery analytics
Copernicus DIAS
欧州の政府衛星データプラットフォームCopernicus DIASでも、COG形式でのデータ配付に対応しています。
Copernicus DIASの一つであるMundiでは、SAR衛星Sentinel-1のGRDプロダクト(Ground Range Detected)について、COG形式で提供を行っています。
https://mundiwebservices.com/help/documentation
また、プラットフォーム上のサービスとして、COG化を行うサービスも提供しているようです。
https://mundiwebservices.com/service/cloud-optimized-geotiff
AWS
AWSからも、多くの衛星データがCOG形式で配信されています。
https://registry.opendata.aws/tag/cog/
Tellus
日本の政府衛星プラットフォームTellusでも、2021年10月にリリースしたTellus Satellite Data Travelerにて、COGに対応しています。
https://www.tellusxdp.com/docs/travelers/
【ソフトウェア】
QGIS
無料の地理空間解析ツールとしてよく用いられるQGISでもCOG形式のファイルを取り扱うことができます。チュートリアルも公開されています。
https://www.cogeo.org/qgis-tutorial.html
Google Earth Engine
Google Earth EngineではGoogle Cloud Storageに保管されたCOG形式のデータを読み込んだり、COG形式で処理結果を出力することに対応しています。
Details on COG-backed assets/Google Earth Engine
【ライブラリ】
GDAL
地理空間データを扱うためのライブラリであるGDALは、元々COG形式でスタートしたプロジェクトのためCOG形式のデータを読み込むことも、書き込むことにも対応しています。
https://trac.osgeo.org/gdal/wiki/CloudOptimizedGeoTIFF#HowtoreaditwithGDAL
Rasterio
PythonのライブラリであるRasterioでもGDALの機能をラップしています。
https://gist.github.com/sgillies/7e5cd548110a5b4d45ac1a1d93cb17a3
COGの構成
COGの概要
COGの特徴は、各ピクセルがタイルの中で取り扱われる事です。
こうすることにより、付随情報がそれぞれのタイル内に記載されているので、必要な部分だけにアクセスできるということになります。
元の解像度よりも粗い、ズームアウトした状態で閲覧する場合、「ダウンサンプリング」が必要になります。GeoTIFF形式では通常それぞれのズームレベルに合わせて、複数の解像度のデータ(overview)を必要とします。
この構造になっていることにより、ユーザーは自分に必要な解像度のデータのみを取得でき、もっとも解像度の高い(データ量の大きい)オリジナルデータにアクセスする必要がないため、非常に使い勝手が良くなります。
COGの内部配置
一般的なGeoTIFFとCOGの大きな違いは、IFD(Image File Directory)と実データがファイルの中でどう配置されているかです。
一般的なGeoTIFFの場合、どのようにそれぞれが配置されているかはきわめて流動的で自由度が高いですが、COGの場合、IFDはファイルの冒頭に記述され、ファイルの中の目次的な役割を果たします。
COGファイルの作り方
GDALを使えば、簡単にGeoTIFFファイルからCOGファイルを作ることができます。
1. タイル化
gdal_translate {in.tiff} {temp.tiff} -co TILED=YES
TIFFは内部で画像を短冊状に保持する場合と、正方形のタイル状に保持する場合がありますが、COGではタイル状である必要があるため変換しておきます。
2. overviewを用意
gdaladdo -r nearest {temp.tiff} 2 4 8 16 32 64
ファイル名の後ろの数字(2, 4, 8…)分の縮小された画像を用意します。
これがあるとサイズの巨大ファイルでも気軽にブラウザ上で表示することができます。
この例ではオリジナルの1/2, 1/4, 1/8, 1/16, 1/32, 1/64のサイズが用意されます。
-r nearestで縮小時のサンプリング法を指定できます。averageやcubicも選択できますが、元のピクセルの値を変えたくない場合はnearestを選びましょう(デフォルト)。
3. COG化
gdal_translate {temp.tiff} {out.tif} -co TILED=YES -co COPY_SRC_OVERVIEWS=YES
最後にCOG化を行います。
元のピクセルと値が一致する必要がなければ-co COMPRESS=JPEGを付けて圧縮すると良いでしょう。
参考:
https://www.cogeo.org/developers-guide.html
TellusでCOG形式のデータに触ってみる
ここまでCOGについて説明し、COGファイルの作り方についても説明しました。
最後まで読んでくださった皆様は、実際のCOGデータに触ってみたくなってきたのではないでしょうか。
Tellusでは、2021年10月26日にリリースしたver.3.0からCOG形式でのデータ提供に対応しています。Tellusのアカウント登録を行えば、どなたでも無料でCOG形式の衛星データにアクセスすることができますので、ぜひお試しください。
具体的な操作方法は、以下の記事をご参照ください!
ローカルのQGISからTellusの衛星データにアクセスできるって知ってた?超シンプル4ステップの方法解説
Pythonとrasterioを使ってTellusのCOG形式の衛星データを取得する
【参考文献】
An Introduction to Cloud Optimized GeoTIFFS (COGs) Part 1: Overview
Programmatic Access to Cloud Optimized GeoTIFF (COG) Global Datasets