地理空間データのクラウド最適化フォーマット

最終更新:

クラウド最適化フォーマットとは

クラウドの強みを最大限に活かした地理空間データのことです.

地理空間データを利用する際,従来のGeoJsonShapefileなどはデータをすべて読み込まないと表示ができません.

例えば,関東のデータを表示したいだけなのに,全国のデータ(Japan.geojson)をまるまるダウンロードする必要があるということです.

ローカルの環境で使用している場合は問題ないですが,サーバーからデータを取得してブラウザ上で表示する場合は以下のような問題があります.

  • ダウンロードするデータの容量が大きい
  • メモリを大量に消費する
  • 読み込みに時間がかかり,表示が遅い

クラウド最適化フォーマットはこのような問題に対応しています.利点として以下が挙げられます.

  • 遅延の軽減:データをダウンロードするよりも早く取得,処理することができます
  • 拡張性:クラウド最適化フォーマットは無限に拡張可能なクラウドストレージに保存されます.クラウドストレージは多くの並列読取りをサポートしているため,大規模なデータの扱いを容易にします.
  • 柔軟性:ユーザーは自分のニーズ(範囲)に合わせてデータを取得することができます.
  • コスト効率:データ転送や,ストレージの使用量を減らし,コストを下げることができます.クラウド最適化フォーマットは多くの圧縮方法に対応しており,ストレージコストを減らすことができます.

既存のフォーマットとの関係

クラウド最適化フォーマットは従来の地理空間ファイル形式と対応しています.

クラウド最適化された地理空間フォーマットと従来のファイル形式の対応図 Cloud-Optimized Geospatial Formats Guideから引用

一部のデータフォーマットは複数のデータ型で使用できます.

  • GeoJsonはベクターや点群に使用できます
  • HDF5は点群点群やボクセルに使用できます
  • GeoParquetとFlatGeobufはベクトルと点群に使用できます

データの部分的な読み込み

クラウド最適化ファイルはHTTP Range Requestに対応しており,ファイルの一部のみを指定して取得することができます. ヘッダーにRangeを追加することにより,取得する範囲を指定します.

bash
curl https://i.imgur.com/z4d4kWk.jpg -i -H "Range: bytes=0-1023" --output -

サーバーは 206 Partial Content とともに以下のレスポンスを返却します.

http
HTTP/2 206
content-type: image/jpeg
content-length: 1024
content-range: bytes 0-1023/146515

(binary content)

詳しい内容

フォーマット

Cloud-Optimized GeoTIFF(COG)

ラスタ形式のデータであるCloud-Optimized GeoTIFF(COG)はTIFF画像の派生形です.

GeoTIFFの仕様の中でクラウド最適化のためのさらに細かい仕様を規定しています.COGファイルはすべてGeoTIFFとして扱うことができます.

GeoTIFFとCOGの主な違いとして,縮小画像とファイルの構造が挙げられます.

COGは内部にOverViewと呼ばれる縮小画像を保持しています.また,すべてのメタデータがファイルの先頭に配置されます.これにより,ファイルの先頭を読むことで,ファイルのどこにどのタイルのデータがあるかを把握することができ,ユーザーが必要なデータのみを取得することができます.

COGファイルの構造 Cloud-Optimized Geospatial Formats Guideから引用

Cloud-Optimized Point Cloud(COPC)

LASER(LAS)ファイルは3次元の点群データを格納するファイルです.これを圧縮したものがLAZファイルです. Cloud-Optimized Point Cloud(COPC)ファイルはLAZファイルとして扱うことができます.

GeoParquet

GeoParquetは点や線,ポリゴンといったベクトルデータをApache Parquetに保存する形式です.

Parquetは,データを列ごとに保存するデータ形式です.GeoTIFFがTIFFに位置情報を載せているのと同様に,GeoParquetはParquetに位置情報のルールを追加したものです.

FlatGeoBuf

FlatGeoBufは点や線,ポリゴンなどのベクトルデータをバイナリで保存する形式です.

データのストリーミングに対応しており,ダウンロードした部分からデータを利用することができます.

PMTiles

PMTilesはタイルデータの単一アーカイブ形式であり,データの可視化に使用されます.

アーカイブ形式とは,ZIPファイルのような一つのファイル内に複数のファイルの内容を含めるものです.あらゆる形式のタイルデータに使用できますが,主にベクターデータに使われます. アーカイブ内の各タイルデータはMapbox Vector TileMVT)としてエンコードされます.

PMTilesはデータの分析に使用するのには向きません.それは,複数のタイルをまたがったデータを分析する場合に,多くのタイルを読み込む必要があるためです.タイル形式はデータの可視化に便利ですが,解析には向きません.

参考