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に含まれないので注意。
コメント
コメントを投稿