Soy extremadamente nuevo en SIG.
Estoy usando gdal
para leer en un mapa de uso / cobertura del suelo y necesito seleccionar el lat / lng de ciertos tipos de cobertura del suelo para indexar en un conjunto de datos diferente que se expresa solo en lat / lng. Desafortunadamente, no entiendo la forma de las coordenadas X e Y que me ha dado de la transformación geográfica, en concreto el originX
y originY
a continuación:
geotransform = dataset.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
Imprimir estos valores me da coordenadas como (447466.693808, 4952570.40529)
. ¿Cómo se relacionan con la latitud y longitud originales?
Editar:
Aquí hay un ejemplo simple de Python que me dio lo que estaba buscando:
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
print ct.TransformPoint(originX,originY)
Robado de: tolatlong.py
gdal
coordinate-system
Rico
fuente
fuente
dataset.GetProjectionRef()
descubrir que estoy usando "UTM Zone 10", pero ¿y luego qué? Estoy buscando métodos como "desproyectar", pero estoy llegando a nulo.Respuestas:
gdal_translate reproyectará sus datos de cualquier proyección en cualquier otra (en este caso desea EPSG: 4326) usando:
o podría usar gdaltrasform para convertir los puntos (y estoy seguro de que también puede acceder a eso desde Python (?))
fuente
La geotransformación se documenta en https://gdal.org/user/raster_data_model.html . La idea es que tome coordenadas (x, y) directamente del conjunto de datos, aplique una transformación lineal para obtener (u, v) con
(puede tomar esto como la definición de una transformación lineal), luego cambie el origen agregando geotransform [0] a u y geotransform [3] a v. Eso da la "transformación afín" de (x, y). Realmente tiene la intención de rotar, cambiar la escala, quizás corregir un poco para algunos errores de sesgo y reubicar las coordenadas específicas de los datos (x, y) para que coincidan con un sistema de coordenadas conocido. Se supone que el resultado produce coordenadas proyectadas. Esto simplemente significa que hay un procedimiento matemático que toma (longitud, latitud) y los convierte en las coordenadas conocidas: esto se llama "proyección". "Desproyectar" es hacer lo contrario; entonces, si sabes qué proyección es necesaria, la aplicas a las coordenadas transformadas afines (x, y) para obtener la latitud y longitud.
Por cierto, los valores de las constantes a, b, c, d están dados por las entradas 1, 2, 4 y 5 en la matriz de geotransformación.
fuente
Puedes usar lo siguiente:
coord devolverá la longitud (x) y la latitud (y) de todos los píxeles. Tenga en cuenta que las coordenadas son de la esquina izquierda de un píxel
fuente