GRASS无法与QGIS 3.6一起使用


21

我使用OSGEO4w将QGIS更新到了3.6版

当我尝试运行任何GRASS脚本时,出现以下错误消息:

错误信息

无法运行该算法:-(指定的GRASS 7文件夹“ C:\ OSGEO4〜1 \ bin \ bin”不包含有效的GRASS 7模块集。请转到“处理设置”对话框,然后检查GRASS 7文件夹配置正确

看起来该路径不存在,但是我找不到更改它的地方;它不再是处理设置中的选项,就像版本2.x中一样。

有没有一种方法可以在QGIS 3.6中运行那些处理脚本,如果可以,我该如何调整所需的设置?


编辑:这是我的处理方式

加工参数


您是否尝试过使用QGIS 3.4.5(新的LTR),它在此版本中有效。
ahmadhanb '19

当我首先启动GRASS,然后加载QGIS时,一切都很好。否则,不会。
Jim McLaughlin

Answers:


31

如果我使用快捷方式“带有GRASS 7.6.0的QGIS Desktop 3.6.0”打开QGIS,则一切正常。如果使用快捷方式“ QGIS Desktop 3.6.0”打开QGIS,则会收到与您相同的错误


9
我想知道为什么GRASS不是从QGIS开始的默认选项。
车先生

再次出现了完全相同的问题,并通过grass使用OSGEO4w 更新程序包解决了该问题。
车先生

我根本没有QGIS Desktop x.x.x with GRASS x.x.x选择权。我只能QGIS Desktop选择。有什么事吗
南希

如果像我一样,您没有该快捷方式,则可以在已经具有快捷方式的QGIS应用程序所在的文件夹中创建一个指向“ qgis-bin-g7.exe”的新快捷方式。在我的情况下,该文件夹为C:\ OSGeo4W64 \ bin。这将使用当前最新版本的QGIS打开GRASS。我使用的是QGIS 3.4(当前的长期版本),因此我更改了快捷方式,使其指向“ qgis-ltr-bin-g7”。
blackthorn

对我来说,我没有这么捷径。这绝对取决于环境。因此,我将该行添加call "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"到了我的qgis批处理文件中,并且草工具起作用了。五言的路径必须正确并且线路应该来这条线之后call "%~dp0\o4w_env.bat"
安德烈亚斯·穆勒

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

您可能没有使用GRASS启动QGIS
Taras

qgis 3.6和3.10中缺少“ GRASS7文件夹”行。
foob​​arbecue

但是,它对于LTR(QGIS 3.4)是稳定的
Taras

3

基于该草维基文章,将操作系统环境变量GISBASE设置为GRASS安装文件夹可能会解决此问题(例如C:\ OSGeo4W \ apps \ grass \ grass76)。

QGIS 3.8处理选项仍不包含GRASS文件夹的选项。

我指的是Windows操作系统和QGIS 3.8 / GRASS 7.6。


对我来说,这是很有意义的:在QGIS 3.8的处理选项中没有GRASS文件夹。还有一些其他与GRASS相关的文件夹,但是没有什么与GRASS明显不同。我正在使用QGIS 3.8.1。关于塔拉斯(Taras)的建议,OP不启动“带有GRASS的QGIS”,这对于我目前在我的机器上不是一个选择,并且可能也不是OP的一个选择。我知道过去曾经有这种选择,我不知道当我在这台新机器(对我而言)上安装QGIS错过它时所做的不同操作。似乎添加新的环境路径对我有用。
Shea

为我修复它!
foob​​arbecue

2

在我看来,启动“正常” qgis时似乎缺少一些环境变量。我通过更改qgis-ltr-bin.envqgis-ltr.bat在QGIS 3.4.13中修复了此问题。在3.6、3.8(...)版本中,这两个文件将具有不同但相似的名称。如果你

右键单击您的qgis开始图标>打开文件路径

这应该将您带到... \ OSGeo4W64 \ bin或安装了qgis的任何位置。您将在此处找到两个文件。使用标准文本编辑器(例如记事本)打开它们进行更改:

qgis-ltr-bin.env

  • 将PATH更改为与qgis-ltr-bin-g7.env(位于同一文件夹中)保存的相同PATH行
  • qgis-ltr-bin-g7.env添加变量GISBASE,GRASS_PROJSHARE和GRASS_PYTHON

在qgis-ltr.bat中

  • qgis-ltr-grass7.bat(位于同一文件夹中)添加第3行:(call "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"也许草文件夹在您的版本中具有不同的名称)
  • 将PATH更改为与qgis-ltr-grass7.bat(第7行)中保存的PATH相同的行

现在感谢QGIS 3.5.15的支持。
natan

1

与@Friedemann在QGIS 3.10中工作的相同修复程序,将C:\ OSGeo4W64 \ apps \ grass \ grass78文件夹更改为C:\ OSGeo4W64 \ apps \ grass \ grass-7.8.0

更新:简单的文件夹名称更改修复程序允许在QGIS 3.10中打开草工具箱功能。但是,执行后,GRASS操​​作全部失败,并在日志中出现以下错误:

该系统找不到指定的路径。'“”'不被识别为内部或外部命令,可操作程序或批处理文件。

因此,我尝试设置Windows环境变量(使用GRASS文件夹名称恢复为'grass78'),如另一个答案所述,并且GRASS操​​作现在可以在QGIS中正确执行。这似乎是正确的解决方案。


感谢您的输入,您能为我提供一个资源来知道要设置哪个变量以及在哪里设置吗?
Kantan

1
我使用Windows 10,因此在Windows资源管理器中:右键单击“ 这台PC”,依次选择“ 属性”,“ 高级系统设置”,“ 高级”选项卡和“ 环境变量”。单击“ 新建... ”,然后在“变量名称”中输入“ GISBASE”,在“变量值”中输入“ C:\ OSGeo4W64 \ apps \ grass \ grass78” [ 注意:您的路径可能会有所不同,具体取决于QGIS和/或GRASS的版本 ]。单击“ 确定”,您应该看到新创建的变量已添加到列表中。
ewolf

0

在处理ToolBox(使用QGIS)中使用GRASS的另一种解决方案是在C:\OSGeo4W64\apps\qgis\python\processing\algs\grass7\文件中查找Grass7Utils.py并替换以下术语:

  • grass-7.通过grass7位于第223行或附近的代码
  • 然后在位于第229行或其附近的代码中for version in ['', '7', '76', '74', '72', '71', '70']:按“” for version in ['', '7', '78', '76', '74', '72', '71', '70']:
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.