Страница 1 из 1
r.mapcalc не работает
Добавлено: 13 авг 2018, 13:40
Jasen
Я внимательно изучил документацию по r.mapcalc, но не понимаю, что GRASS 7.4.1 не понимает в команде
r.mapcalc -l region=current expression = difference * difference / gradient
(difference и gradient - существующие в текущем регионе растры)
Причем ошибка: parse error - expected < вместо *
И почему-то r.mapcalculator вообще не признается командой, в расширениях его тоже нету.
Я неправильно использую синтаксис команды?
Re: r.mapcalc не работает
Добавлено: 13 авг 2018, 13:55
Александр Мурый
Какая ОС? Куда вводится команда - в системную командную строку или в окно для команд в интерфейсе GRASS?
Попробуйте так:
Код: Выделить всё
r.mapcalc -l region=current expression="difference * difference / gradient"
Во-первых, нельзя ставить пробелы вокруг знака "="; во-вторых, лучше брать выражение в двойные кавычки.
Re: r.mapcalc не работает
Добавлено: 13 авг 2018, 15:06
Александр Мурый
Jasen писал(а): ↑13 авг 2018, 13:40
И почему-то r.mapcalculator вообще не признается командой, в расширениях его тоже нету.
Потому что его убрали в текущей версии GRASS (7.*), это старый и по сути не очень нужный модуль (при наличии <r.mapcalc>).
Re: r.mapcalc не работает
Добавлено: 13 авг 2018, 17:55
Jasen
Александр Мурый писал(а): ↑13 авг 2018, 13:55
r.mapcalc -l region=current expression="difference * difference / gradient"
Что-то не нравится ему. Parse error, expected = вместо *
Попробовал и поубирать проблеы, и одинарные кавычки вокруг названий растров - одно и то же.
Буду пробовать ещё, здесь синтаксис все ещё неправильный.
Re: r.mapcalc не работает
Добавлено: 13 авг 2018, 18:21
Александр Мурый
Не заметил сразу косяк: в выражении первым должно стоять имя нового вычисленного растра.
То есть в данном случае:
Код: Выделить всё
r.mapcalc -l region=current expression="newraster = difference * difference / gradient"
Re: r.mapcalc не работает
Добавлено: 13 авг 2018, 18:22
gamm
Видимо, хочет знать, куда результат класть
Re: r.mapcalc не работает
Добавлено: 14 авг 2018, 09:44
Александр Мурый
Дополнения:
- при использовании флага "-l" реальной работы не делается, просто выводятся входные/выходные параметры; видимо, этот новый флаг ввели для нужд скриптинга;
- можно использовать более традиционный синтаксис для <r.mapcalc>:
Код: Выделить всё
r.mapcalc 'newraster = difference * difference / gradient'
Re: r.mapcalc не работает
Добавлено: 17 авг 2018, 11:05
Jasen
Спасибо всем. Тема закрыта.
Правильный синтаксис:
Код: Выделить всё
r.mapcalc expression="result = difference * difference / gradient" --overwrite
Вот я и думал все, где же указывается файл, куда пишется результат. File это совершенно другое в данном случае.