GeoTIFFファイルのすべてのピクセルの緯度/経度の値を見つける方法は?


9

GeoTIFFファイルをピクセルごとにデータベースに保存したい。ピクセル値とそのピクセルの緯度/経度をGeoTIFF画像に保存する必要があります。それは可能ですか?


1
Lat / Lonでクエリできるようにするという目標はありますか?geotransform属性を使用してGDALでこれを実現できます。Pythonの例を提供できます。変換を2バンドのジオティフ(Band1-LAT、Band2-LON)に事前レンダリングすることもできますが、これをその場で実行する方が効率的ではないでしょうか。ユースケースが役立つと思います。
Jay Laura

回答:


9

一般的な意味では、任意のラスターファイル形式で使用できるアフィン変換パラメーターを使用します。GDALでは、これはGetGeoTransform()またはPostGISのST_GeoReference()関数で使用できます。これらの6つのパラメーターを見つけた後、パラメーターがどれかを判別するだけで、線形空間で変換する関数を作成できます。

たとえば、Pythonの場合:

from osgeo import gdal
ds = gdal.Open('myfile.tif')

# unravel GDAL affine transform parameters
c, a, b, f, d, e = ds.GetGeoTransform()

def pixel2coord(col, row):
    """Returns global coordinates to pixel center using base-0 raster index"""
    xp = a * col + b * row + a * 0.5 + b * 0.5 + c
    yp = d * col + e * row + d * 0.5 + e * 0.5 + f
    return(xp, yp)

たとえば、col = 10、row = 22にピクセルがある場合、ピクセルの中心への実際の座標は次のようになります。

>>> pixel2coord(10, 22)
(2780000.0, 6162300.0)

ST_Affine()使用してPostGIS用に同様のものが準備できます。


1

これは少し古臭いかもしれません:ピクセルをポイントに変換し、緯度と経度のフィールドを追加し、緯度と経度の値を入力します。


0

GeoTIFFに付随するワールドファイル(.tfw)には以下が含まれます。

  • マップ単位/ピクセルでのx方向(およびy方向)のピクセルサイズ
  • 左上のピクセルの中心のx座標(およびy座標)。これは、すべてのピクセルの緯度/経度での位置を計算するために必要なすべてです。

2
あなたが説明することに加えて、少なくともあなたは座標系を知る必要があります!(ワールドファイルにはそのような情報は含まれていません。)
whuber

1
また、すべてのGeoTIFFにワールドファイルが含まれているわけではありません。真GeoTIFFのはしない別のファイルに、ヘッダに格納された座標情報を有しています。ただし、「GeoTIFF」という用語は、ワールドファイルを含むTIFF画像によく使用されます。ポイントは、常にTFWがあるとは限らないということです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.