นำเข้าโมดูล GRASS และ SAGA ไปยังสคริปต์ python


13

ฉันใหม่ที่นี้ ฉันเป็น "สร้าง" ปลั๊กอินหลามสำหรับ qgis และฉันต้องการนำเข้าโมดูลจาก GRASS และ SAGA แต่ฉันไม่เข้าใจวิธีการทำ ปลั๊กอินที่ฉันต้องการนำเข้าคือ Kriging interpolation จาก SAGA หรือ v.surf.idw จาก GRASS หรือปลั๊กอินการแก้ไขจาก Raster qgis ฉันต้องการวิธีการแก้ไขเพื่อแปลงคะแนนในตาราง

คุณสามารถช่วยฉันได้ไหม?


ฉันมีข้อสงสัยอีก

ฉันเรียกใช้บรรทัดเหล่านี้ในรหัสของฉัน:

vectorlayer_vector =  ftools_utils.getVectorLayerByName(inputLayer)
Elevation = self.lineAttrib.currentText()
cellSize = int(self.linePix.value())
outPath = self.inputLayerCombo3.text()
output = ftools_utils.getRasterLayerByName(outPath) 

Processing.runAlgorithm("saga:shapestogrid", vectorlayer_vector, Elevation, 0, 0, 4, None, cellSize, output)

เมื่อฉันวิ่งฉันจะได้ภาพอึกทึก ไฟล์. osa ไม่ได้ถูกสร้างขึ้นและเมื่อฉันพยายามเปิดภาพ TIFF ที่ฉันสร้างขึ้นจะปรากฏข้อความนี้:

c: ... teste3.tif ไม่ใช่แหล่งข้อมูลแรสเตอร์ที่รองรับ

ดังนั้นฉันเดาว่าผลลัพธ์ไม่ถูกต้อง ฉันต้องทำอย่างไรเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง สิ่งที่ฉันหายไป?

คำตอบ:


15

Framework การประมวลผลใน QGIS สามารถเรียกใช้ฟังก์ชันเหล่านี้ได้โดยตรงจาก Python

จากคอนโซล QGIS Python:

>>>import processing
>>>outputs_0=Processing.runalg("saga:ordinarykriging", vectorlayer_pointtable, z, True, 0, 0, True, 100, True, 0.0, 10.0, 100.0, 1.0, 0.1, 1, 0.5, 1000.0, 4, 20, 1.0, True, None, None, None)
>>>outputs_1=Processing.runalg("grass:r.surf.idw", outputs_0['GRID'], 12, True, None, 0.0, None)

หากคุณสร้างเป็นแบบจำลองใน Processing Framework คุณสามารถบันทึกแบบจำลองนั้นเป็นสคริปต์ Python มันให้ตัวสร้าง GUI ชนิดหนึ่งสำหรับฟังก์ชันการประมวลผล runalg

รูปแบบการประมวลผล

ป้อนคำอธิบายรูปภาพที่นี่


คำตอบของคุณเป็นประโยชน์อย่างมาก ขอบคุณ ดังนั้นถ้าฉันสร้างสคริปต์ Python จากรุ่น sextante ฉันสามารถรวมรหัสนั้นในปลั๊กอินได้หรือไม่
Bárbara Duarte

ใช่รหัสทำงานในปลั๊กอินด้วย
จาคอบ

เมื่อฉันเรียกใช้รหัสมันทำให้ฉันข้อความนี้ "AttributeError: การประมวลผลระดับไม่มีแอตทริบิวต์ 'runalg'" ทำไม? ฉันนำเข้าการประมวลผล
Bárbara Duarte

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