Eu sou extremamente novo no GIS.
Estou usando gdal
para ler em um mapa de uso e cobertura de terra e preciso escolher a lat / lng de certos tipos de cobertura da terra para indexar em um conjunto de dados diferente, expresso apenas em lat / lng. Unfortuantely, eu não entendo a forma das coordenadas x e y que me foi dada a partir do geotransform, especificamente o originX
e originY
abaixo:
geotransform = dataset.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
Imprimir esses valores me dá coordenadas como (447466.693808, 4952570.40529)
. Como eles se relacionam com a latitude e longitude originais?
Editar:
Aqui está um exemplo simples de python que me deu o que eu estava procurando:
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
print ct.TransformPoint(originX,originY)
Roubado de: tolatlong.py
gdal
coordinate-system
Rico
fonte
fonte
dataset.GetProjectionRef()
e descobrir que estou usando a "UTM Zone 10", mas e daí? Estou pesquisando métodos como "desprojeto", mas estou aparecendo nulo.Respostas:
O gdal_translate irá reprojetar seus dados de qualquer projeção em que houver (nesse caso, você deseja o EPSG: 4326) usando:
ou você pode usar o gdaltrasform para converter os pontos (e tenho certeza de que também pode acessá-lo no Python (?))
fonte
A geotransformação está documentada em https://gdal.org/user/raster_data_model.html . A idéia é que você pegue (x, y) coordenadas diretamente do conjunto de dados, aplique uma transformação linear para obter (u, v) com
(você pode considerar isso como a definição de uma transformação linear) e, em seguida, mudar a origem adicionando geotransforma [0] a u e geotransforma [3] a v. Isso fornece a "transformação afim" de (x, y). Ele realmente pretende girar, alterar a escala, talvez corrigir um pouco alguns erros de inclinação e reposicionar as coordenadas específicas dos dados (x, y) para corresponder a um sistema de coordenadas conhecido. O resultado deve produzir coordenadas projetadas. Isso significa simplesmente que existe um procedimento matemático que toma (longitude, latitude) e as transforma em coordenadas conhecidas: isso é chamado de "projeção". "Desprojetar" está fazendo o inverso; portanto, se você sabe qual projeção é necessária, aplica- a às coordenadas afim transformadas (x, y) para obter a latitude e longitude.
A propósito, os valores das constantes a, b, c, d são dados pelas entradas 1, 2, 4 e 5 na matriz de geotransformações.
fonte
Você pode usar o seguinte:
coord retornará longitude (x) e latitude (y) de todos os pixels. Lembre-se de que as coordenadas estão no canto esquerdo de um pixel
fonte