Страница 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 это совершенно другое в данном случае.