r.mapcalc не работает

Ответить
Аватара пользователя
Jasen
Участник
Сообщения: 95
Зарегистрирован: 27 янв 2006, 18:33
Проекты: 1
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

r.mapcalc не работает

Сообщение Jasen » 13 авг 2018, 13:40

Я внимательно изучил документацию по r.mapcalc, но не понимаю, что GRASS 7.4.1 не понимает в команде
r.mapcalc -l region=current expression = difference * difference / gradient
(difference и gradient - существующие в текущем регионе растры)
Причем ошибка: parse error - expected < вместо *
И почему-то r.mapcalculator вообще не признается командой, в расширениях его тоже нету.

Я неправильно использую синтаксис команды?
Что написал - то написал!

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: r.mapcalc не работает

Сообщение Александр Мурый » 13 авг 2018, 13:55

Какая ОС? Куда вводится команда - в системную командную строку или в окно для команд в интерфейсе GRASS?
Попробуйте так:

Код: Выделить всё

r.mapcalc -l region=current expression="difference * difference / gradient"
Во-первых, нельзя ставить пробелы вокруг знака "="; во-вторых, лучше брать выражение в двойные кавычки.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: r.mapcalc не работает

Сообщение Александр Мурый » 13 авг 2018, 15:06

Jasen писал(а):
13 авг 2018, 13:40
И почему-то r.mapcalculator вообще не признается командой, в расширениях его тоже нету.
Потому что его убрали в текущей версии GRASS (7.*), это старый и по сути не очень нужный модуль (при наличии <r.mapcalc>).
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Участник
Сообщения: 95
Зарегистрирован: 27 янв 2006, 18:33
Проекты: 1
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: r.mapcalc не работает

Сообщение Jasen » 13 авг 2018, 17:55

Александр Мурый писал(а):
13 авг 2018, 13:55
r.mapcalc -l region=current expression="difference * difference / gradient"
Что-то не нравится ему. Parse error, expected = вместо *
Попробовал и поубирать проблеы, и одинарные кавычки вокруг названий растров - одно и то же.
Буду пробовать ещё, здесь синтаксис все ещё неправильный.
Что написал - то написал!

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: r.mapcalc не работает

Сообщение Александр Мурый » 13 авг 2018, 18:21

Не заметил сразу косяк: в выражении первым должно стоять имя нового вычисленного растра.
То есть в данном случае:

Код: Выделить всё

r.mapcalc -l region=current expression="newraster = difference * difference / gradient"
Редактор материалов, модератор форума

gamm
Гуру
Сообщения: 2987
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 696
Ваше звание: программист
Откуда: Казань

Re: r.mapcalc не работает

Сообщение gamm » 13 авг 2018, 18:22

Видимо, хочет знать, куда результат класть 😎

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: r.mapcalc не работает

Сообщение Александр Мурый » 14 авг 2018, 09:44

Дополнения:
- при использовании флага "-l" реальной работы не делается, просто выводятся входные/выходные параметры; видимо, этот новый флаг ввели для нужд скриптинга;
- можно использовать более традиционный синтаксис для <r.mapcalc>:

Код: Выделить всё

r.mapcalc 'newraster = difference * difference / gradient'
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Участник
Сообщения: 95
Зарегистрирован: 27 янв 2006, 18:33
Проекты: 1
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: r.mapcalc не работает

Сообщение Jasen » 17 авг 2018, 11:05

Спасибо всем. Тема закрыта.
Правильный синтаксис:

Код: Выделить всё

r.mapcalc expression="result = difference * difference / gradient" --overwrite
Вот я и думал все, где же указывается файл, куда пишется результат. File это совершенно другое в данном случае.
Что написал - то написал!

Ответить

Вернуться в «GRASS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость