कई प्रोसेसिंग एल्गोरिदम में आउटपुट को मेमोरी के रूप में सहेजने का विकल्प होता है। यदि टूलबॉक्स से भाग गया, तो यह ठीक काम करता है, क्योंकि आप "रनिंग एल्गोरिथम के बाद ओपन आउटपुट फाइल" पर टिक कर सकते हैं।
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")
हालाँकि मुझे परिणामी आउटपुट को हथियाने का कोई तरीका नहीं मिल रहा है।