Me preguntaba si alguien tiene alguna experiencia en obtener datos de elevación de un ráster sin usar ArcGIS , sino obtener la información como un pitón list
o dict
?
Recibo mis datos XY como una lista de tuplas:
xy34 =[perp_obj[j].CalcPnts(float(i.dist), orientation) for j in range (len(perp_obj))]
Me gustaría recorrer la lista o pasarla a una función o método de clase para obtener la elevación correspondiente para los pares xy.
Investigué un poco sobre el tema y la API de gdal parece prometedora. ¿Alguien puede aconsejarme cómo hacer cosas, trampas, código de muestra?
¡GDAL no es una opción ya que no puedo editar la variable de ruta del sistema en la máquina en la que estoy trabajando!
¿Alguien sabe acerca de un enfoque diferente?
Respuestas:
Aquí hay una forma más programática de usar GDAL que la respuesta de @ Aragon. No lo he probado, pero en su mayoría es un código de placa de caldera que me ha funcionado en el pasado. Se basa en enlaces Numpy y GDAL, pero eso es todo.
fuente
mapToPixel()
ypixelToMap()
son la parte importante, siempre y cuando se puede crear una matriz numpy (o una pitón uno normal, pero por lo general no son tan eficientes para este tipo de cosas), y obtener cuadro de delimitación geográfica de la matriz.gt
en el ejemplo) esté equivocada. Una matriz afín como se usa en CGAL (ver: gdal.org/gdal_datamodel.html ) es generalmente invertible (de lo contrario, tiene algunos valores de escala funky en curso). Entonces, donde tenemosg = p.A
, también podemos hacerp = g.A^-1
Numpy.linalg es un poco pesado para nuestros propósitos: podemos reducir todo a dos ecuaciones simples.Mira mi respuesta aquí ... y lee aquí para obtener más información. La siguiente información fue tomada de Geotips:
Con gdallocationinfo , podemos consultar la elevación en un punto:
La salida del comando anterior tiene la forma:
Esto significa que el valor de elevación en la geolocalización proporcionada es 1418.
fuente
Consulte, por ejemplo, este código que se basa en GDAL (y Python, no se necesita numpy): https://github.com/geometalab/retrieve-height-service
fuente
El código python proporcionado extrae los datos de valor de una celda ráster en función de las coordenadas x, y. Es una versión ligeramente alterada de un ejemplo de esta excelente fuente . Se basa
GDAL
ynumpy
no forma parte de la distribución estándar de Python. Gracias a @Mike Toews por señalar los binarios no oficiales de Windows para los paquetes de extensión de Python para hacer que la instalación y el uso sean rápidos y fáciles.fuente