Відповіді:
Погляньте на кулінарну книгу PyQGIS .
Дотримуйтесь прикладу, як перебрати векторний шар. Доступ до геометрії, ви можете застосувати метод buffer (). Дивіться також API QGIS: http://www.qgis.org/api/classQgsGeometry.html#a98208752e1beb1a5d3a7eedffbfdb2e4
У вас є різні способи отримати те, що ви хочете за допомогою консолі 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")
Щоб отримати параметри sextante, введіть Sextante.alghelp("ftools:fixeddistancebuffer")
в консолі PyQGIS.
Сподіваюся, це допомагає!
якщо вам потрібен базовий код, ви можете спробувати:
#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})
Лише невеличка річ, яку слід додати до останньої відповіді.
Для пошуку алгоритму SEXTANTE щодо заданої теми використовуйте Sextante.alglist (). Наприклад, у випадку пошуку чогось, що містить "буфер", ви б це зробили
>>> from sextante.core.Sextante import Sextante
>>> Sextante.alglist("buffer")
І ви отримаєте:
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
Таким чином, ви можете знайти ім'я алгоритму для виклику (ftools: fixdistancebuffer, у прикладі, запропонованому у відповіді вище)
Ви можете перетворити свій сценарій у новий алгоритм у SEXTANTE. Документація SEXTANTE містить детальну інформацію про це.