sábado, 18 de febrero de 2017

Usando grass:v.buffer.distance en PyQGIS

El comando grass:v.buffer.distance es otra de las opciones de GRASS disponible en 'processing' de QGIS y sus parámetros, donde la interpretación de algunos de ellos puede encontrarse en el manual en línea, se visualizan en la imagen siguiente:




El código a continuación:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import processing

registry = QgsMapLayerRegistry.instance()

random_points = registry.mapLayersByName('random_points')

extent = random_points[0].extent()

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

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

processing.runalg('grass:v.buffer.distance', 
                  random_points[0], #input <ParameterRaster>
                  '5000',    #distance <ParameterString>
                  '0.01',    #tolerance <ParameterString>
                  True,      #-s <ParameterBoolean>
                  True,      #-c <ParameterBoolean>
                  "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax), #GRASS_REGION_PARAMETER <ParameterExtent>
                  -1,        #GRASS_SNAP_TOLERANCE_PARAMETER <ParameterNumber>
                  0,         #GRASS_MIN_AREA_PARAMETER <ParameterNumber>
                  3,         #GRASS_OUTPUT_TYPE_PARAMETER <ParameterSelection> 3-area
                  path)      #OUTPUT <OutputRaster>

ejecutado en la Python Console de QGIS para el vectorial de puntos de la Map View, produce el buffer (5000 m de diámetro) que se encuentra en la imagen siguiente:


Algo que extraño es la posibilidad de producir buffers con 3 o 4 lados; además de los ya tradicionales de forma circular.

No hay comentarios: