Wiele algorytmów przetwarzania ma opcję zapisywania danych wyjściowych jako pamięci. W przypadku uruchomienia z przybornika działa to dobrze, ponieważ można zaznaczyć pole „Otwórz plik wyjściowy po uruchomieniu algorytmu”.
Patrząc na kod źródłowy QGIS, kod do ładowania warstwy pamięci wydaje się być zdefiniowany w funkcji Postprocessing.handleAlgorithmResults
. Funkcja korzysta z dostępu do alg.outputs
listy i wykonuje następujące czynności:
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:
# ...
Czy po uruchomieniu algorytmów przetwarzania z konsoli można załadować warstwę bez dostępu do tego obiektu? mogę biec
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
lub nawet
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Nie mogę jednak znaleźć sposobu na uzyskanie wynikowego wyniku.