GeoTIFFからワールドファイルを作成する方法

GeoTIFFからワールドファイルを作成する方法

GISでよく使う GeoTIFF には、位置情報(座標系やピクセルサイズ)が画像内部に埋め込まれています。
一方で、古いソフトやCADに取り込むときには、ワールドファイル(.tfw など)が必要になることがあります。

ここでは「既存のGeoTIFFからワールドファイルを生成する方法」を紹介します。


ワールドファイルとは?

ワールドファイル(TFW, JGW, PGWなど)は、ラスタ画像を地図上に正しく配置するための 6つの数値 が書かれたテキストファイルです。

pixel size in X direction
rotation about Y axis
rotation about X axis
pixel size in Y direction (通常は負)
X座標(左上ピクセル中心)
Y座標(左上ピクセル中心)

例:sample.tfw

0.500000000000
0.000000000000
0.000000000000
-0.500000000000
345000.250000000000
4275000.250000000000

方法① gdal_translateを使う(最も簡単)

GDALをインストールしていれば、コマンド一発でGeoTIFFからTFWを出力できます。


gdal_translate -of GTiff -co TFW=YES input.tif output.tif
  • -co TFW=YES を付けると、output.tfw が生成されます。
  • GeoTIFF本体(output.tif)は元のコピーなので中身は変わりません。

方法② Pythonスクリプトで一括生成

複数ファイルをまとめて処理したい場合はPythonが便利です。
以下のスクリプトは、指定フォルダ内の .tif を探して、対応する .tfw を生成します。


import os
import tkinter as tk
from tkinter import filedialog
from osgeo import gdal

def write_tfw(tif_path):
    ds = gdal.Open(tif_path, gdal.GA_ReadOnly)
    gt = ds.GetGeoTransform()
    A, D, B, E = gt[1], gt[4], gt[2], gt[5]
    C = gt[0] + A/2 + B/2
    F = gt[3] + D/2 + E/2
    tfw_path = os.path.splitext(tif_path)[0] + ".tfw"
    with open(tfw_path, "w") as f:
        f.write(f"{A}\\n{D}\\n{B}\\n{E}\\n{C}\\n{F}\\n")
    print(f"作成完了: {tfw_path}")

root = tk.Tk(); root.withdraw()
folder = filedialog.askdirectory(title="GeoTIFFのあるフォルダを選択")
for file in os.listdir(folder):
    if file.lower().endswith(".tif"):
        write_tfw(os.path.join(folder, file))

実行すると、同じフォルダ内に .tfw が作成されます。


注意点

  • .tfw には 座標系(EPSGコードなど) は書かれません。
  • 投影法や座標系を渡す場合は .prj ファイルを別途用意する必要があります。
  • GeoTIFFには既に座標系が埋め込まれているため、QGISやArcGISで使う分には .tfw は不要です。
  • 納品やSFF土石流設定アプリではどうしてもワールドファイルが必要な場合に利用

まとめ

  • GeoTIFFには位置情報が埋め込まれているが、ワールドファイルが必要な場面もある。
  • gdal_translate -co TFW=YES が一番簡単。
  • Pythonを使えば複数ファイルを一括処理できる。
  • CRS情報は .tfw に含まれないので注意。

コメント

このブログの人気の投稿

石川県:土砂災害(特別)警戒区域+CS立体図

日本でよく使う EPSG コード 一覧

設計定数を求めるための代表N値について