GRASS ไม่ทำงานกับ QGIS 3.6


23

ฉันอัพเดท QGIS เป็นเวอร์ชั่น 3.6 โดยใช้ OSGEO4w

เมื่อฉันพยายามเรียกใช้สคริปต์ GRASS ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

ข้อความผิดพลาด

อัลกอริทึมนี้ไม่สามารถเรียกใช้ :-( โฟลเดอร์ GRASS 7 ที่ระบุ "C: \ OSGEO4 ~ 1 \ bin \ bin" ไม่มีชุดโมดูล GRASS 7 ที่ถูกต้องโปรดไปที่กล่องโต้ตอบการตั้งค่าการประมวลผลและตรวจสอบว่า GRASS 7 โฟลเดอร์ได้รับการกำหนดค่าอย่างถูกต้อง

ดูเหมือนว่าเส้นทางไม่มีอยู่ แต่ฉันไม่สามารถหาสถานที่ที่จะเปลี่ยนแปลงได้ มันไม่ได้เป็นตัวเลือกในการตั้งค่าการประมวลผลใด ๆ เช่นในรุ่น 2.x

มีวิธีเรียกใช้สคริปต์ประมวลผลเหล่านั้นใน QGIS 3.6 และถ้าใช่ฉันจะปรับแต่งการตั้งค่าที่ต้องการได้อย่างไร?


แก้ไข: นี่คือรูปแบบตัวเลือกการประมวลผลของฉัน

กำลังประมวลผลพารามิเตอร์


คุณได้ลองใช้ QGIS 3.4.5 (LTR ใหม่) แล้วมันใช้งานได้ในเวอร์ชั่นนี้
ahmadhanb

เมื่อฉันเริ่มต้น GRASS ก่อนจากนั้นโหลด QGIS ทุกอย่างดี มิฉะนั้นจะไม่
Jim McLaughlin

คำตอบ:


33

ถ้าฉันเปิด QGIS ด้วยทางลัด "QGIS Desktop 3.6.0 กับ GRASS 7.6.0" ทุกอย่างทำงานได้ดี ถ้าฉันเปิด QGIS ด้วยทางลัด "QGIS Desktop 3.6.0" ฉันได้รับข้อผิดพลาดเหมือนกับคุณ


10
ฉันสงสัยว่าทำไม GRASS ไม่ใช่ตัวเลือกเริ่มต้นสำหรับการเริ่มต้นด้วย QGIS
นายเช

ปัญหาเดียวกันที่แน่นอนเกิดขึ้นอีกครั้งและได้รับการแก้ไขโดยการอัพเดตgrassแพ็กเกจด้วย OSGEO4w
นายเช

ฉันไม่ได้รับQGIS Desktop x.x.x with GRASS x.x.xตัวเลือกทั้งหมด ฉันได้รับQGIS Desktopตัวเลือกเท่านั้น มีอะไรผิดปกติ?
แนนซี่

หากอย่างฉันคุณไม่มีทางลัดนั้นคุณสามารถสร้างอันใหม่ที่ชี้ไปที่ "qgis-bin-g7.exe" ในโฟลเดอร์เดียวกันกับแอปพลิเคชัน QGIS ที่คุณมีทางลัดอยู่แล้ว ในกรณีของฉันโฟลเดอร์คือ C: \ OSGeo4W64 \ bin สิ่งนี้จะเปิด GRASS พร้อม QGIS เวอร์ชันล่าสุดของคุณ ฉันใช้ QGIS 3.4 (รีลีสระยะยาวปัจจุบัน) ดังนั้นฉันจึงเปลี่ยนทางลัดเพื่อชี้ไปที่ "qgis-ltr-bin-g7"
blackthorn

สำหรับฉันฉันไม่มีทางลัด และแน่นอนขึ้นอยู่กับสภาพแวดล้อม ดังนั้นฉันจึงเพิ่มบรรทัดcall "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"ลงในแบตช์ไฟล์ qgis ของฉันและเครื่องมือหญ้าทำงานได้ ของแหล่งที่มาเส้นทางจะต้องถูกต้องและสายควรมาหลังจากบรรทัดนั้นcall "%~dp0\o4w_env.bat"
Andreas Müller

6

ฉันมีปัญหาเดียวกัน แต่ฉันจัดการเพื่อแก้ไขมันโดยเปลี่ยนชื่อโฟลเดอร์หญ้าของฉันจาก "grass76" เป็น grass-7.6.0 "


4

ในส่วนของคำถามของคุณ

"ดูเหมือนว่าเส้นทางไม่มีอยู่ แต่ฉันไม่สามารถหาสถานที่ที่จะเปลี่ยนแปลงได้มันไม่ได้เป็นตัวเลือกในการตั้งค่าการประมวลผลเช่นในรุ่น 2.x"

คุณสามารถจัดการเส้นทางของโฟลเดอร์ GRASS ที่ใช้งานได้

การตั้งค่า> ตัวเลือก> การประมวลผล> ผู้ให้บริการ> GRASS

อ้างอิงตามรุ่น QGIS 3.0.3

GRASS_setting_window

ที่ซึ่งคุณสามารถปรับได้'GRASS7 folder'เพียงดับเบิลคลิกที่มัน

GRASS ใช้งานได้ดีกับรุ่น QGIS 3.0.3 ของฉัน


ภาพหน้าจอนี้เป็นรุ่นใดจาก? ฉันได้แนบมาฉันดูเหมือนว่าคุณมีตัวเลือกน้อยกว่าฉัน!
Kantan

1
QGIS 3.0.3 รุ่น
Taras

คุณอาจไม่ได้เปิดตัว QGIS ด้วย GRASS ในนั้น
Taras

แถวสำหรับ "โฟลเดอร์ GRASS7" หายไปใน qgis 3.6 และ 3.10
foobarbecue

อย่างไรก็ตามมันมีเสถียรภาพสำหรับ LTR (QGIS 3.4)
Taras

3

ตามการตั้งค่าบทความ grasswiki นี้ตัวแปรสภาพแวดล้อมระบบปฏิบัติการGISBASEไปยังโฟลเดอร์การติดตั้ง GRASS อาจแก้ไขปัญหา (เช่น C: \ OSGeo4W \ apps \ grass \ grass76)

ตัวเลือกการประมวลผล QGIS 3.8 ยังไม่มีตัวเลือกสำหรับโฟลเดอร์ GRASS

ฉันอ้างถึงระบบปฏิบัติการ Windows และ QGIS 3.8 / GRASS 7.6


จับมันไว้กับหัวสำหรับฉัน: ไม่มีโฟลเดอร์ GRASS ในตัวเลือกการประมวลผลสำหรับ QGIS 3.8 มีโฟลเดอร์อื่นที่เกี่ยวข้องกับ GRASS อยู่สองสามแห่ง แต่ไม่มีสิ่งใดที่เป็น GRASS อย่างชัดเจน ฉันใช้ QGIS 3.8.1 ด้วยความเคารพต่อข้อเสนอแนะของ Taras ว่า OP ไม่ได้เปิดตัว "QGIS with GRASS" ซึ่งไม่ได้เป็นตัวเลือกสำหรับฉันในเครื่องของฉันในขณะนี้และอาจไม่ได้เป็นตัวเลือกหนึ่งสำหรับ OP ฉันรู้ว่าฉันมีตัวเลือกนั้นในอดีตฉันไม่รู้ว่าฉันทำอะไรแตกต่างไปเมื่อฉันติดตั้ง QGIS บนเครื่องใหม่ (สำหรับฉัน) เครื่องนี้เพื่อพลาด การเพิ่มเส้นทางของสภาพแวดล้อมใหม่ทำให้ฉันดูเหมือน
เชีย

แก้ไขให้ฉัน!
foobarbecue

2

สำหรับฉันดูเหมือนว่าตัวแปรสภาพแวดล้อมบางอย่างจะหายไปเมื่อเริ่ม qgis "ปกติ" ฉันคงนี้ใน QGIS 3.4.13 โดยการเปลี่ยนQGIS-ltr-bin.envและQGIS-ltr.bat ในเวอร์ชัน 3.6, 3.8 (... ) สองไฟล์นี้จะมีชื่อแตกต่างกัน แต่มีลักษณะคล้ายกัน ถ้าคุณ

คลิกขวาที่ไอคอนเริ่มต้น qgis> เปิดไฟล์พา ธ

สิ่งนี้จะนำคุณไปสู่ ​​... \ OSGeo4W64 \ bin หรือที่ใดก็ตามที่คุณติดตั้ง qgis คุณจะพบไฟล์ทั้งสองที่นั่น เปิดด้วยเครื่องมือแก้ไขข้อความมาตรฐาน (เช่น Notepad) เพื่อทำการเปลี่ยนแปลง:

qgis-ltr-bin.env :

  • เปลี่ยน PATH เป็น PATH-line เดียวกันกับที่บันทึกไว้ในqgis-ltr-bin-g7.env (อยู่ในโฟลเดอร์เดียวกัน)
  • จากqgis-ltr-bin-g7.envเพิ่มตัวแปร GISBASE, GRASS_PROJSHARE และ GRASS_PYTHON

ใน qgis-ltr.bat :

  • เพิ่มบรรทัด 3 จาก qgis-ltr-grass7.bat (อยู่ในโฟลเดอร์เดียวกัน): call "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"(อาจเป็นโฟลเดอร์ grass มีชื่ออื่นในเวอร์ชั่นของคุณ)
  • เปลี่ยน PATH เป็น PATH-line เดียวกันกับที่บันทึกไว้ในqgis-ltr-grass7.bat (บรรทัด 7)

ขอบคุณตอนนี้ด้วย QGIS 3.5.15
natan

1

แก้ไขเช่นเดียวกับ @Friedemann ทำงานใน QGIS 3.10 กับโฟลเดอร์ C: \ OSGeo4W64 \ apps \ grass \ grass78 เปลี่ยนเป็น C: \ OSGeo4W64 \ apps \ grass \ grass-7.8.0

อัปเดต: การแก้ไขการเปลี่ยนชื่อโฟลเดอร์อย่างง่ายทำให้ฟังก์ชั่นกล่องเครื่องมือ Grass เปิดใน QGIS 3.10 อย่างไรก็ตามเมื่อดำเนินการแล้วการดำเนินการ GRASS ทั้งหมดล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้ในบันทึก:

ระบบไม่สามารถหาเส้นทางที่ระบุ. '' '' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือไฟล์แบตช์

ดังนั้นฉันจึงลองตั้งค่าตัวแปรสภาพแวดล้อมของ Windows (โดยใช้ชื่อโฟลเดอร์ GRASS ย้อนกลับไปที่ 'grass78') ดังที่อธิบายไว้ในคำตอบอื่นและการดำเนินการ GRASS ในขณะนี้ทำงานได้อย่างถูกต้องใน QGIS นี่น่าจะเป็นทางออกที่เหมาะสม


ขอบคุณสำหรับการป้อนข้อมูลของคุณคุณสามารถชี้ให้ฉันไปที่ทรัพยากรเพื่อทราบว่าตัวแปรที่จะตั้งและที่?
Kantan

1
ผมใช้ของ Windows 10 ดังนั้นใน Windows Explorer: คลิกขวาที่เครื่องคอมพิวเตอร์นี้เลือกPropertiesจากนั้นตั้งค่าขั้นสูงระบบแล้วขั้นสูงแท็บแล้วตัวแปรสิ่งแวดล้อม คลิกใหม่ ...และป้อน "GISBASE" ในชื่อตัวแปรและ "C: \ OSGeo4W64 \ apps \ grass \ grass78" ในค่าตัวแปร [ หมายเหตุ: เส้นทางของคุณอาจแตกต่างกันไปขึ้นอยู่กับรุ่นของ QGIS และ / หรือ GRASS ที่คุณมี ] คลิกตกลงและคุณจะเห็นตัวแปรที่สร้างขึ้นใหม่ที่เพิ่มเข้าไปในรายการ
ewolf

0

อีกวิธีในการใช้ GRASS ในการประมวลผล ToolBox (พร้อม QGIS) คือการค้นหาในC:\OSGeo4W64\apps\qgis\python\processing\algs\grass7\ไฟล์Grass7Utils.pyและเพื่อแทนที่ข้อกำหนด:

  • grass-7.โดยgrass7ในรหัสอยู่ที่บรรทัด 223 หรือราว ๆ นั้น
  • จากนั้นfor version in ['', '7', '76', '74', '72', '71', '70']:"โดยfor version in ['', '7', '78', '76', '74', '72', '71', '70']:ในรหัสที่อยู่ที่บรรทัดที่ 229 หรือราว ๆ นั้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.