17 votos

Almacenamiento en búfer en PyQGIS

Estoy buscando algunos ejemplos para hacer simples scripts de python en QGIS. ¿Cómo haría un análisis de búfer en un conjunto de datos?

Parece que no puedo encontrar mucho en el manual y en la pitón de QGIS que coincida bastante con la documentación de ESRI.

12voto

wojo Puntos 1707

Usted tiene diferentes maneras de obtener lo que desea por PyQGIS Console:

  1. Sugerencia de Aragón;
  2. mediante el uso de la clase QgsGeometryAnalyzer:
from qgis.utils import iface
from qgis.analysis import QgsGeometryAnalyzer 
mc = iface.mapCanvas() 
layer = mc.currentLayer()
QgsGeometryAnalyzer().buffer(layer, "path_to/output.shp", 500, False, False, -1)
  1. mediante el uso de la clase Sextante:
from sextante.core.Sextante import Sextante
Sextante.runalg("ftools:fixeddistancebuffer","input_path.shp", False, 500, 5, True, "output_path_buffer.shp")

Para obtener los parámetros sextantes, escriba Sextante.alghelp("ftools:fixeddistancebuffer") en PyQGIS Console.

¡Espero que esto ayude !

11voto

texai Puntos 178

si quieres código básico, puedes probar:

#Don't forget to Toggle Editing

lyr = qgis.utils.iface.activeLayer()
provider = lyr.dataProvider()
feat= QgsFeature()
alls = provider.attributeIndexes()
provider.select(alls)

while provider.nextFeature(feat):
    buff = feat.geometry().buffer(5,2)
    lyr.dataProvider().changeGeometryValues({feat.id(): buff})

5voto

Biz Puntos 11

Echa un vistazo al libro de cocina de PyQGIS.

Siga el ejemplo sobre cómo iterar sobre una capa vectorial. Al acceder a la geometría, puede aplicar el método buffer(). Véase también la API de QGIS: http://www.qgis.org/api/classQgsGeometry.html#a98208752e1beb1a5d3a7eedffbfdb2e4

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X