ใช้เลเยอร์หน่วยความจำเป็นอินพุตและ / หรือเอาต์พุตด้วย runalg หรือไม่


9

เลเยอร์หน่วยความจำสามารถใช้เป็นอินพุทและ / หรือเอาท์พุทที่มีRunalg ได้หรือไม่?

ด้วยrunandloadฉันสามารถใช้งานได้:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

พารามิเตอร์ 2 และ 3 เป็นเลเยอร์อินพุตซึ่งอยู่ในหน่วยความจำแล้วและพารามิเตอร์ 3 คือเลเยอร์เอาต์พุตซึ่งถูกเขียนลงในหน่วยความจำและใช้ในเครื่องมือต่อไปนี้ (ละลาย) มันใช้งานได้ดี แต่เมื่อฉันพยายามใช้ตรรกะเดียวกันกับrunalgแล้วเลเยอร์ที่ผสานของฉันในหน่วยความจำดูเหมือนจะไม่ถูกสร้างขึ้นเนื่องจากเครื่องมือ Dissolve ไม่เคยทำงาน ตัวอย่างเช่นต่อไปนี้จะไม่ทำงาน:

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

ฉันสามารถสันนิษฐานได้ว่าrunalgไม่ยอมรับเลเยอร์ที่อยู่ในหน่วยความจำหรือไม่สามารถส่งออกได้หรือไม่?


2
ที่เกี่ยวข้อง: gis.stackexchange.com/questions/144948/…
alphabetasoup

คำตอบ:


4

ไม่แน่ใจว่าทำไมเมธอดของคุณไม่ทำงาน แต่วิธีอื่นใช้แทนNoneเมื่อใช้runalgเนื่องจากจะสร้างเอาต์พุตในหน่วยความจำแทน ด้านล่างฉันกำหนดกระบวนการแรกเป็นoutput_0และเรียกผลลัพธ์ของสิ่งนี้ว่าเป็นอินพุตของกระบวนการที่สอง:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

ผลลัพธ์:

ผลลัพธ์


ทดสอบกับ QGIS 2.16.0-Nødeboด้วยปลั๊กอินการประมวลผล v2.12.2

โปรดทราบว่าใน qgis:mergevectorlayers ขณะนี้ต้องมีรายการเลเยอร์อินพุต


1

http://gis.stackexchange.com/q/76594/22646 ให้ความกระจ่างมากขึ้นเกี่ยวกับ runalg, runandload และเลเยอร์หน่วยความจำ ตามที่http://gis.stackexchange.com/a/184802วิธีการอ้างอิงถึงเลเยอร์หน่วยความจำที่ได้นั้นขึ้นอยู่กับเวอร์ชั่นของการประมวลผล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.