Tendrá que encontrar alguna manera de determinar cómo agrupar y ordenar los puntos. Dependiendo de la organización de sus datos de origen, esto puede limitar la cantidad de automatización posible.
Una vez resuelta esta cuestión, los dos ejemplos siguientes pueden ayudarle a empezar.
Esta creará una nueva capa con un único polígono que conectará todos los puntos encontrados en la capa activa:
#derive points list from active layer
pointslayer = qgis.utils.iface.activeLayer()
pointsprovider = pointslayer.dataProvider()
pointsprovider.select([]) #no attributes
points=[]
pointsfeature = QgsFeature()
while pointsprovider.nextFeature(pointsfeature):
coord = pointsfeature.geometry().asPoint()
points.append(QgsPoint(coord[0],coord[1]))
points.append(points[0]) # repeat the first point to close the polygon
#create polygon from points list
polylayer = QgsVectorLayer("Polygon?crs=" + pointslayer.crs().authid(),\
pointslayer.name()+" as poly", "memory")
polyfeature = QgsFeature()
polyfeature.setGeometry(QgsGeometry.fromPolygon([points]))
polylayer.dataProvider().addFeatures([polyfeature])
QgsMapLayerRegistry.instance().addMapLayer(polylayer)
Mientras que éste crea una línea de manera similar:
#derive points list from active layer
pointslayer = qgis.utils.iface.activeLayer()
pointsprovider = pointslayer.dataProvider()
pointsprovider.select([]) #no attributes
points=[]
pointsfeature = QgsFeature()
while pointsprovider.nextFeature(pointsfeature):
coord = pointsfeature.geometry().asPoint()
points.append(QgsPoint(coord[0],coord[1]))
#create line from points list
linelayer = QgsVectorLayer("LineString?crs=" + pointslayer.crs().authid(),\
pointslayer.name()+" as line", "memory")
linefeature = QgsFeature()
linefeature.setGeometry(QgsGeometry.fromPolyline(points))
linelayer.dataProvider().addFeatures([linefeature])
QgsMapLayerRegistry.instance().addMapLayer(linelayer)