GRASS не работает с QGIS 3.6

21

Я обновил QGIS до версии 3.6, используя OSGEO4w

Когда я пытаюсь запустить любой скрипт GRASS, я получаю следующее сообщение об ошибке:

Сообщение об ошибке

Этот алгоритм не может быть запущен :-( В указанной папке GRASS 7 "C: \ OSGEO4 ~ 1 \ bin \ bin" нет действительного набора модулей GRASS 7. Пожалуйста, перейдите в диалоговое окно "Настройки обработки" и убедитесь, что GRASS 7 папка правильно настроена

Похоже, что путь не существует, но я не мог найти место, чтобы изменить его; это больше не вариант в настройках обработки, как в версиях 2.x.

Есть ли способ запустить эти скрипты обработки в QGIS 3.6 и, если да, как я могу настроить нужные параметры?


Изменить: вот как выглядит моя обработка

Параметры обработки

Kantan
источник
Вы пытались использовать QGIS 3.4.5 (новый LTR), он работает в этой версии.
Ахмадханб
Когда я сначала запускаю GRASS, затем загружаю QGIS, все хорошо. В противном случае нет.
Джим Маклафлин

Ответы:

31

Если я открываю QGIS с помощью ярлыка «QGIS Desktop 3.6.0 с GRASS 7.6.0», все работает нормально. Если я открываю QGIS с помощью ярлыка «QGIS Desktop 3.6.0», я получаю ту же ошибку, что и вы

DataForm
источник
9
Интересно, почему 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».
терновник
Для меня у меня нет такого ярлыка. И это определенно зависит от окружающей среды. Поэтому я добавил строку call "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"в свой пакетный файл qgis, и инструменты Grass работают. Конечно, путь должен быть правильным, и линия должна идти после этой линииcall "%~dp0\o4w_env.bat"
Андреас Мюллер
6

У меня была та же проблема, но мне удалось ее решить, переименовав папку «трава» из «grass76» в grass-7.6.0 ».

Friedemann
источник
4

Относительно части вашего вопроса

«Похоже, что путь не существует, но я не смог найти место для его изменения; в настройках обработки он больше не поддерживается, как в версиях 2.x».

Вы можете управлять путем к рабочей папке GRASS через

Настройки> Параметры> Обработка> Провайдеры> GRASS

На основе версии QGIS 3.0.3

GRASS_setting_window

где вы можете настроить 'GRASS7 folder', просто дважды щелкните по нему.

И, кстати, GRASS отлично работает на моей версии QGIS 3.0.3.

Тарас
источник
С какой версии этот скриншот? Я приложил свой, похоже, у вас есть несколько вариантов, чем я!
Кантан
1
Версия QGIS 3.0.3
Тарас,
Вы, вероятно, не запускали QGIS с GRASS
Тарас
Строка «Папка GRASS7» отсутствует в qgis 3.6 и 3.10.
foo barbecue
Тем не менее, он стабилен для LTR (QGIS 3.4)
Тарас
3

Основываясь на этой статье на Grassyiki, установка переменной среды операционной системы 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. Что касается предположения Тараса о том, что OP не запускал «QGIS with GRASS», то это не вариант для меня в настоящее время на моей машине и, возможно, также не был вариантом для OP. Я знаю, что у меня была такая возможность в прошлом, я не знаю, что я делал по-другому, когда я установил QGIS на эту новую (для меня) машину, чтобы пропустить ее. Мне кажется, что добавление новой среды работало для меня.
карите
Исправил это для меня!
foo barbecue
2

Мне кажется, что некоторые переменные окружения отсутствуют при запуске "нормальной" qgis. Я исправил это в QGIS 3.4.13, изменив qgis-ltr-bin.env и qgis-ltr.bat . В версии 3.6, 3.8 (...) эти два файла будут иметь разные, но схожие названия. если ты

щелкните правой кнопкой мыши по значку запуска qgis> открыть путь к файлу

это должно привести вас к ... \ OSGeo4W64 \ bin или куда бы вы не установили qgis. Там вы найдете два файла. Откройте их с помощью стандартного текстового редактора (например, блокнота), чтобы внести изменения:

qgis-ltr-bin.env :

  • измените PATH на ту же строку PATH, которая сохранена в 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, которая сохранена в qgis-ltr-grass7.bat (строка 7)
Янник Шиллинг
источник
Спасибо теперь с QGIS 3.5.15 работает.
Натан
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. Кажется, это правильное решение.

ewolf
источник
Спасибо за ваш вклад, не могли бы вы указать мне ресурс, чтобы узнать, какую переменную установить и где?
Кантан
1
Я использую Windows 10, поэтому в Windows Explorer: щелкните правой кнопкой мыши на этом ПК , выберите « Свойства», затем « Дополнительные параметры системы» , затем вкладку « Дополнительно », затем « Переменные среды» . Нажмите New ... и введите «GISBASE» в поле «Имя переменной» и «C: \ OSGeo4W64 \ apps \ grass \ grass78» в поле «Значение переменной» [ ПРИМЕЧАНИЕ. Ваш путь может отличаться в зависимости от версии QGIS и / или GRASS, которые у вас есть ]. Нажмите OK, и вы должны увидеть вновь созданную переменную, добавленную в список.
Эвольф
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 или около того .
Оливье АФИМОН
источник