Como encontrar valores lat / lon para cada pixel em um arquivo GeoTIFF?


9

Quero armazenar um arquivo GeoTIFF pixel por pixel no banco de dados. Preciso armazenar valores de pixel junto com a lat / lon desse pixel na imagem GeoTIFF. É possível fazer isso?


11
O objetivo é poder consultar por Lat / Lon? Você pode fazer isso com o GDAL usando o atributo geotransform - posso fornecer um exemplo de python. A conversão pode ser pré-renderizada em um geotiff de 2 bandas (Band1 - LAT, Band2 - LON), mas me pergunto se não seria mais eficiente fazer isso em tempo real. Eu acho que um caso de uso ajudaria.
— Jay Laura

Respostas:


9

Em um sentido genérico, use os parâmetros de transformação afim , que devem estar disponíveis em qualquer formato de arquivo rasterizado. Com o GDAL, ele está disponível com a função GetGeoTransform () ou ST_GeoReference () do PostGIS . Depois de encontrar esses seis parâmetros, é preciso apenas determinar quais eles são; então, uma função pode ser criada para transformar no espaço linear.

Por exemplo, com 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)

Por exemplo, se houver um pixel em col = 10, linha = 22, as coordenadas do mundo real para o centro do pixel são:

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

Algo semelhante pode ser elaborado para o PostGIS com ST_Affine () .


1

Isso pode ser um pouco arcaico: converta os pixels em pontos, adicione campos lat e long e preencha com valores lat e long.


0

O arquivo mundial (.tfw) que acompanha um GeoTIFF contém:

  • tamanho de pixel na direção x (e direção y) em unidades de mapa / pixel e
  • coordenada x (e coordenada y) do centro do pixel superior esquerdo. É tudo o que você precisa para calcular a posição em Lat / Lon de cada pixel.

2
Além do que você descreve, você precisa conhecer no mínimo o sistema de coordenadas! (Um arquivo mundial não inclui essas informações.)
— whuber

11
Além disso, nem todo GeoTIFF contém um arquivo mundial. Um GeoTIFF verdadeiro possui as informações de coordenadas armazenadas no cabeçalho, não em um arquivo separado. No entanto, o termo "GeoTIFF" é frequentemente aplicado a imagens TIFF com um arquivo mundial. O ponto é que nem sempre haverá um TFW.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.