Як знайти значення lat / lon для кожного пікселя у файлі GeoTIFF?


9

Я хочу зберігати файл GeoTIFF піксель за пікселем у базі даних. Мені потрібно зберігати значення пікселів разом з lat / lon цього пікселя на зображенні GeoTIFF. Чи можна це зробити?


1
Чи є мета, щоб мати можливість запиту за Lat / Lon? Ви можете зробити це за допомогою GDAL за допомогою атрибута геотрансформації - я можу навести приклад python. Перетворення може бути заздалегідь відтворено в 2-смуговий геотиф (Band1 - LAT, Band2 - LON), але мені цікаво, чи не було б ефективніше це зробити на ходу. Я думаю, випадок використання допоможе.
Джей Лора

Відповіді:


9

У загальному сенсі використовуйте параметри афінного перетворення , які повинні бути доступні у будь-якому растровому форматі файлу. З GDAL це доступно за допомогою функції GetGeoTransform () або PostGIS ST_GeoReference () . Знайшовши ці шість параметрів, потрібно лише визначити, якими вони є, тоді можна зробити функцію перетворення в лінійний простір.

Наприклад, з 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, рядок = 22, то реальними координатами до піксельного центру є:

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

Щось подібне можна приготувати для PostGIS за допомогою ST_Affine () .


1

Це може бути трохи архаїчно: перетворіть пікселі в точки, додайте lat та довгі поля та заповніть значеннями lat та long.


0

Світовий файл (.tfw), що супроводжує GeoTIFF, містить:

  • розмір пікселя у напрямку x (та y-напрямі) в одиницях карти / пікселів та
  • x-координата (і y-координата) центру лівого верхнього пікселя. Це все, що потрібно для обчислення позиції в Lat / Lon кожного пікселя.

2
Крім того, що ви описуєте, як мінімум потрібно знати систему координат! (Світовий файл не містить такої інформації.)
whuber

1
Крім того, не кожен GeoTIFF містить світовий файл. Справжня GeoTIFF містить інформацію координат , що зберігається в заголовку, а не в окремому файлі. Однак термін "GeoTIFF" часто застосовується до зображень TIFF зі світовим файлом. Справа в тому, що TFW не завжди буде.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.