อัลกอริทึมการประมวลผลจำนวนมากมีตัวเลือกในการบันทึกผลลัพธ์เป็นหน่วยความจำ หากวิ่งจากกล่องเครื่องมือสิ่งนี้จะใช้ได้เพราะคุณสามารถทำเครื่องหมายในช่อง "เปิดไฟล์เอาต์พุตหลังจากเรียกใช้อัลกอริทึม"
มองไปที่ซอร์สโค้ดสำหรับ 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")
อย่างไรก็ตามฉันไม่สามารถหาวิธีที่จะคว้าผลลัพธ์ที่ได้