※本記事は一部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以降であれば読み込み可能ですが、古い環境との共有時は注意が必要です。
リンク