jueves, 16 de febrero de 2017

Utilizando grass:v.voronoi en PyQGIS

Siguiendo con los métodos de Processing, hoy se van a considerar los de GRASS. Estos tienen la particularidad de que para hacerlos funcionar adecuadamente hay que saber cómo introducir el parámetro correspondiente a la región de GRASS; que no es más que una simple extensión. En la imagen siguiente se despliegan, a través del plugin, los 160 algoritmos que de GRASS se tienen a la disposición en 'processing'.




De ellos, escojo el último, v.voronoi, porque sé que la versión que había puesto a disposición recientemente QGIS tenía un bug (desconozco si ha sido resuelto). Por tanto, el despliegue de los respectivos parámetros se encuentra a continuación:


donde para una mayor comprensión de lo que significa cada uno de ellos sugiero que se limiten al manual correspondiente. En la imagen a continuación se tiene el vectorial de puntos que se usará como base para la generación de las regiones de Voronoi (también denominadas polígonos de Thiessen o teselación de Dirichlet). La capa tipo ráster se usará para obtener la extensión y evitar que los puntos de la periferia las tengan muy restringidas; algo que ocurriría en el caso de que la extensión se tomase directamente de la capa de puntos.


El código a usar es el siguiente:

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

registry = QgsMapLayerRegistry.instance()

random_points = registry.mapLayersByName('random_points')
utah_demUTM2 = registry.mapLayersByName('utah_demUTM2')

extent = utah_demUTM2[0].extent()

xmin, ymin, xmax, ymax = extent.toRectF().getCoords()

path = '/home/zeito/pyqgis_data/output_voronoi.shp'

processing.runalg("grass:v.voronoi", random_points[0], False, True, "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax), -1, 0, 3, path)

el cual ejecutado en la Python Console de QGIS produce, al visualizarse en el Map Canvas, el resultado siguiente:


No hay comentarios: