6 votos

QGIS python processing.runalg El clip devuelve Ninguno

Estoy escribiendo un guión en pyQGIS, que emularan la medición de una línea por "caminar" a lo largo de ella con una brújula con longitud constante. Tengo un problema con el Clip algoritmo de procesamiento del módulo, es decir, que devuelve None, independientemente de si puedo añadir capas como entradas o funciones seleccionadas. ¿Qué hago mal? Yo creo, que si en el resultado del clip en una capa vacía, todavía estaría allí, sólo vacío? A continuación es el trozo de código con problemas,

while d.measureLine(QgsPoint(coorFin[0],coorFin[1]),QgsPoint(coor[0],coor[1]))>step: # If the distance between current and last point is more than chosen step
    # Create buffer polygon around a point
    bufCirc = point.geometry().buffer(step,10) # do a buffer from existing point 
    buforek = QgsFeature()
    buforek.setGeometry(bufCirc)

# Create layer and put the polygon inside
    bufferLayer = QgsVectorLayer("Polygon", "temporary_polygons", "memory")
    pz = bufferLayer.dataProvider()
    bufferLayer.setCrs(my_crs)
    pz.addFeatures([buforek])
    bufferLayer.commitChanges()

# select the buffer
    buforSel = bufferLayer.setSelectedFeatures([buforek]) 

# Clip coastline with the buffer
    liniaWarstwa = processing.runandload("qgis:clip", selectedCoastLine, buforSel, "memory:liniaWarstwa")
    print liniaWarstwa
    layer = QgsMapLayerRegistry.instance().mapLayersByName("memory:liniaWarstwa")[0]

Las impresiones de impresión "ninguno", QgsMapLayerRegistry dice "índice fuera de rango".

2voto

Mue Puntos 2469

En las versiones más recientes del complemento de Procesamiento , parece que ya no puede definir el nombre de la capa de memoria de salida. El nombre del algoritmo se usa en su lugar (ver publicación similar).

Por lo tanto, debes reemplazar la última sección de tu código con algo similar:

 # Clip coastline with the buffer
    processing.runandload("qgis:clip", selectedCoastLine, buforSel, None)
    layer = QgsMapLayerRegistry.instance().mapLayersByName("Clipped")[0]
 

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