Viele Verarbeitungsalgorithmen bieten die Möglichkeit, die Ausgabe als Speicher zu speichern. Wenn es von der Toolbox ausgeführt wird, funktioniert dies einwandfrei, da Sie das Kontrollkästchen "Ausgabedatei nach dem Ausführen des Algorithmus öffnen" aktivieren können.
Betrachtet man den Quellcode für QGIS, so scheint der Code zum Laden der Speicherschicht in der Funktion definiert zu sein Postprocessing.handleAlgorithmResults
. Die Funktion verwendet den Zugriff auf eine alg.outputs
Liste und führt folgende Aktionen aus:
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
layer = out.memoryLayer # NOTE!!
QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!!
else:
# ...
Gibt es eine Möglichkeit, die Ebene ohne Zugriff auf dieses Objekt zu laden, wenn Sie Verarbeitungsalgorithmen über die Konsole ausführen? Ich kann rennen
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
oder auch
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Ich kann jedoch keinen Weg finden, die resultierende Ausgabe zu erfassen.