Antworten:
Sicher, Sie können die Funktion aus der Verarbeitungs-Toolbox herunterladen. So verwenden Sie es: Gemäß http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
Über die Konsole können Sie eine Liste aller verfügbaren Algorithmen abrufen, die das Wort "Clip" enthalten, indem Sie Folgendes eingeben:
import processing
processing.alglist("clip")
Dann könnten Sie herausfinden, wie Sie die am besten geeignete Funktion verwenden können mit:
processing.alghelp("qgis:clip")
Verwenden Sie dann einfach den Algorithmus in Ihrem Skript wie folgt:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
Hinweis: Der Algorithmus funktioniert nur bei ausgewählten Funktionen. "
Hinweis: Der obige Code ist für 3.0+ ungültig für das Alglist-Beispiel, das Sie ausführen können:
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
Für das Alghelp-Beispiel können Sie Folgendes tun:
processing.algorithmHelp("qgis:clip")
Für QGIS3 siehe diese Frage:
Was ist die neue Algliste und Alghelp in der QGIS 3.0-Verarbeitung?
Layer = qgis.utils.iface.activeLayer()
und InputLayer = qgis.utils.iface.activeLayer()
. Dann benutze ich processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
und die neue Ebene wird dem Menü Ebenen mit dem Namen Clipped hinzugefügt . Aber die Ebene ist leer. Wenn ich diese beiden Ebenen mit der Clip-Funktion in Qgis verwende, enthält die Ausgabeebene die Zeilen aus dem Ausschnitt. Wer wer was kann falsch sein? Ich bekomme keine Fehler.
Angenommen, Sie haben eine Ebene mit dem Namen "Overlay" und eine andere mit dem Namen "layer_to_clip" geladen.
# get the overlay layer in the console
overlay_layer = [x for x in iface.legendInterface().layers() if x.name() == 'overlay'][0]
# get the layer to clip in the console
layer_to_clip = [x for x in iface.legendInterface().layers() if x.name() == 'layer_to_clip'][0]
# run the algorithm and output the results in /tmp/output.shp
processing.runalg("qgis:clip", overlay_layer, layer_to_clip, "/tmp/output.shp")