趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

gdal_translateによるCloud Optimized GeoTIFF (COG) 作成時のCOMPRESSオプション比較

スポンサーリンク

 

 

 

※本記事は一部Claudeを使用して作成しています。


Cloud Optimized GeoTIFF (COG) とは

COG は、GeoTIFF形式の一種で、クラウド環境での効率的なアクセスに最適化されたファイル形式です。通常のGeoTIFFと同じく地理空間ラスターデータを格納しますが、内部構造が工夫されている点が特徴です。


通常のGeoTIFFとの違い

項目 通常のGeoTIFF COG
データ順序 順次アクセス向け ランダムアクセス向け
タイル構造 なし(ストリップ形式が多い) 内部タイル化済み
オーバービュー 外部ファイル(.ovr)に別置き ファイル内に内包
クラウド対応 不向き ✅ 最適化済み

技術的な仕組み

  • 内部タイル(Internal Tiling) — データを小さなタイル(例: 512×512px)に分割して格納
  • オーバービュー(Overview) — 複数の解像度レベルをファイル内に事前生成(ピラミッド構造)
  • HTTPレンジリクエスト — 必要な部分だけをバイト範囲指定でダウンロード可能

これにより、ファイル全体をダウンロードせずに特定の領域・ズームレベルだけ取得できます。


主な用途

  • 衛星画像・航空写真のクラウド配信
  • AWS S3 / Google Cloud Storage / Azure Blob Storage 上での直接参照
  • QGIS、GDAL、Rasterioなどのツールからの効率的なアクセス

圧縮方式の比較表

データの種類によって最適な圧縮が異なります。

圧縮 可逆/非可逆 圧縮率 速度 向いているデータ
LZW 可逆 速い 汎用、整数データ
DEFLATE 可逆 中〜高 汎用、テキスト的なデータ
ZSTD 可逆 速い 現代的な環境向け
JPEG 非可逆 非常に高 速い 航空写真・衛星画像(RGB)
WEBP 両対応 RGB画像、ブラウザ配信
LERC 両対応 速い 数値データ(DEM等)
なし なし 最速 一時ファイルのみ

データ種別ごとのおすすめ

🛰 航空写真・衛星画像(RGB/RGBA)

gdal_translate -of COG \
  -co COMPRESS=JPEG \
  -co QUALITY=85 \
  -co PHOTOMETRIC=YCBCR \
  input.vrt output_cog.tif
  • YCBCR指定でさらに圧縮率アップ
  • QUALITY=75〜90が実用的なバランス

🗻 数値標高モデル(DEM・DSM)

gdal_translate -of COG \
  -co COMPRESS=DEFLATE \
  -co PREDICTOR=2 \
  input.vrt output_cog.tif
  • PREDICTOR=2(整数)またはPREDICTOR=3(浮動小数点)を併用すると圧縮率が大幅向上
  • LERC も非常に有効(GDAL 2.4以降)
# LEARCの場合(許容誤差0.01mで非可逆)
-co COMPRESS=LERC -co MAX_Z_ERROR=0.01

🗺 主題図・分類データ(土地利用・ラベルなど)

gdal_translate -of COG \
  -co COMPRESS=LZW \
  -co PREDICTOR=2 \
  input.vrt output_cog.tif
  • 可逆圧縮必須(値が変わってはいけないデータ)
  • LZWまたはDEFLATEが安定

PREDICTORの使い分け

PREDICTOR=1  # なし(デフォルト)
PREDICTOR=2  # 整数データ向け(Int16, UInt16等)→ LZW/DEFLATEと組み合わせ
PREDICTOR=3  # 浮動小数点向け(Float32等)→ DEFLATEと組み合わせ

総合的なおすすめ

# 写真系(最も一般的なユースケース)
-co COMPRESS=JPEG -co QUALITY=85 -co PHOTOMETRIC=YCBCR

# 数値データ・可逆必須
-co COMPRESS=DEFLATE -co PREDICTOR=2

# 新しいGDAL環境で最高効率を狙う
-co COMPRESS=ZSTD -co ZSTD_LEVEL=9 -co PREDICTOR=2

迷ったらDEFLATE + PREDICTOR=2 が最も互換性が高く無難です。ZSTDはGDAL 2.3以降・QGIS 3.x以降であれば読み込み可能ですが、古い環境との共有時は注意が必要です。