sábado, 28 de enero de 2017

Muestreo ráster con el módulo rasterio (python)

El módulo python 'rasterio' es una librería que simplifica la manipulación con archivos ráster. Aunque en ambientes Windows puede ser difícil tenerla disponible en la Python Console de QGIS, en mi GNU/Linux Debian se instala fácilmente a través de 'easy_install'.


En este post se va usar para muestrear los valores en un ráster DEM a partir de una muestra arbitraria con dos puntos almacenados en una lista. El código a continuación contrasta en sencillez con el que pudiese usar directamente el módulo 'gdal'. Emplea los métodos 'index' y 'sample' de rasterio para averiguar simultáneamente los índices de fila, columna y el valor correspondiente que subyace a los puntos.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import rasterio

# coordinates to get pixel values for (as points)
points = [(401229.289973, 4466415.48331), (402148.080124, 4465835.37632)]

f = rasterio.open('/home/zeito/pyqgis_data/utah_demUTM2.tif')
    
index = f.index
    
vals = [ val for val in f.sample(points) ]

indexes = [ index(point[0], point[1]) for point in points ]

for i, val in enumerate(vals):
    print indexes[i], val[0]

Depués de ejecutado el código en la Python Console de QGIS se obtiene lo siguiente:


1
2
3
4
5
Python Console 
Use iface to access QGIS API interface or Type help(iface) for more info
execfile(u'/home/zeito/pyqgis_scripts/gdal_question2.py'.encode('UTF-8'))
(94, 625) 2111
(102, 637) 2023

La imagen a continuación permite corroborar, mediante el uso del plugin Value Tool, que el resultado de ejecución del código anterior fue el esperado.


No hay comentarios: