Risposte:
Dai un'occhiata al ricettario PyQGIS .
Segui l'esempio su come iterare su un livello vettoriale. Accedendo alla geometria, è possibile applicare il metodo buffer (). Vedi anche l'API QGIS: http://www.qgis.org/api/classQgsGeometry.html#a98208752e1beb1a5d3a7eedffbfdb2e4
Esistono diversi modi per ottenere ciò che si desidera dalla console PyQGIS:
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)
from sextante.core.Sextante import Sextante
Sextante.runalg("ftools:fixeddistancebuffer","input_path.shp", False, 500, 5, True, "output_path_buffer.shp")
Per ottenere i parametri sestanti digitare Sextante.alghelp("ftools:fixeddistancebuffer")
nella console PyQGIS.
Spero che sia di aiuto !
se vuoi il codice di base, puoi provare:
#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})
Solo una piccola cosa da aggiungere all'ultima risposta.
Per cercare un algoritmo SEXTANTE su un determinato argomento, utilizzare Sextante.alglist (). Ad esempio, nel caso di cercare qualcosa contenente "buffer", lo faresti
>>> from sextante.core.Sextante import Sextante
>>> Sextante.alglist("buffer")
E otterrai:
Grid Buffer------------------------------------------>saga:gridbuffer
Grid Proximity Buffer-------------------------------->saga:gridproximitybuffer
Shapes Buffer---------------------------------------->saga:shapesbuffer
Threshold Buffer------------------------------------->saga:thresholdbuffer
Fixed distance buffer-------------------------------->ftools:fixeddistancebuffer
Variable distance buffer----------------------------->ftools:variabledistancebuffer
r.buffer - Creates a raster map layer showing buffer zones surrounding cells that contain non-NULL category values.--->grass:r.buffer
v.buffer.angle--------------------------------------->grass:v.buffer.angl
v.buffer.column - Creates a buffer around features of given type.--->grass:v.buffer.column
v.buffer.distance - Creates a buffer around features of given type.--->grass:v.buffer.distance
v.buffer.minordistance------------------------------->grass:v.buffer.minordistance
In questo modo, puoi trovare il nome dell'algoritmo da chiamare (ftools: fixeddistancebuffer, nell'esempio proposto nella risposta sopra)
Puoi trasformare il tuo script in un nuovo algoritmo in SEXTANTE. La documentazione di SEXTANTE contiene informazioni dettagliate al riguardo.