У багатьох алгоритмах обробки є можливість збереження результату як пам'яті. Якщо ви працюєте з панелі інструментів, це працює добре, оскільки ви можете поставити галочку "Відкрити вихідний файл після запуску алгоритму".
Дивлячись на вихідний код QGIS, код для завантаження рівня пам'яті, схоже, визначений у функції Postprocessing.handleAlgorithmResults
. Функція використовує доступ до alg.outputs
списку і виконує такі дії:
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:
# ...
Коли ви запускаєте алгоритми обробки з консолі, чи існує спосіб завантаження шару без доступу до цього об’єкта? Я можу бігати
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
або навіть
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Однак я не можу знайти спосіб отримати результат.