Bagaimana menemukan nilai lat / lon untuk setiap piksel dalam file GeoTIFF?

9

Saya ingin menyimpan file GeoTIFF piksel demi piksel dalam basis data. Saya perlu menyimpan nilai piksel bersama dengan lat / lon piksel itu pada gambar GeoTIFF. Apakah mungkin untuk melakukan itu?

nehaarora
sumber
1
Apakah tujuannya untuk dapat meminta oleh Lat / Lon? Anda dapat melakukannya dengan GDAL menggunakan atribut geotransform - saya dapat memberikan contoh python. Konversi dapat diubah menjadi geotiff 2 band (Band1 - LAT, Band2 - LON), tapi saya ingin tahu apakah tidak akan lebih efisien untuk melakukan ini dengan cepat. Saya kira use case akan membantu.
Jay Laura

Jawaban:

9

Dalam arti umum, gunakan parameter affine transform , yang harus tersedia dengan format file raster. Dengan GDAL, ini tersedia dengan fungsi GetGeoTransform () , atau ST_GeoReference () PostGIS . Setelah menemukan enam parameter ini, satu hanya perlu menentukan yang mana mereka, kemudian fungsi dapat dibuat untuk mengubah dalam ruang linear.

Misalnya, dengan 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)

Misalnya, jika ada piksel pada col = 10, baris = 22, maka koordinat dunia nyata ke pusat piksel adalah:

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

Hal serupa dapat dibuat untuk PostGIS dengan ST_Affine () .

Mike T
sumber
1

Ini mungkin agak kuno: Konversikan piksel menjadi titik, tambahkan bidang lat dan panjang, dan isi dengan nilai lat dan panjang.

gm70560
sumber
0

File dunia (.tfw) yang menyertai GeoTIFF berisi:

  • ukuran piksel dalam arah x (dan arah y) di unit peta / piksel dan
  • koordinat x (dan koordinat y) dari tengah piksel kiri atas. Ini semua yang Anda butuhkan untuk menghitung posisi dalam Lat / Lon dari setiap piksel.
pengguna15847
sumber
2
Selain apa yang Anda jelaskan, minimal Anda perlu tahu sistem koordinat! (File dunia tidak termasuk informasi seperti itu.)
whuber
1
Juga, tidak setiap GeoTIFF berisi file dunia. Sebuah GeoTIFF benar memiliki informasi koordinat yang disimpan dalam header, tidak dalam file terpisah. Namun, istilah "GeoTIFF" sering diterapkan pada gambar TIFF dengan file dunia. Intinya adalah, tidak akan selalu ada TFW.