Это старое сообщение, но я надеюсь, что мои предложения могут быть полезны кому-то в любом случае.
Наиболее распространенным способом, вероятно, является использование WPS с использованием PyWPS или Zoo Project, оба проекта предлагают привязку к GRASS GIS.
Другой вариант - вызвать GRASS GIS непосредственно со своего приложения на стороне сервера. Это можно сделать с помощью ручной настройки среды GRASS GIS (так как для модулей GRASS требуется выполнение сеанса GRASS). Это описано на GRASS user wiki, в documentation и, наконец, на SE (Can't run grass tools from python script (grass 6.4, python 2.7, win7)).
И наконец, в версии разработки GRASS GIS вызывается модули GRASS или любые сценарии, предназначенные для работы в среде/сеансе GRASS. Вот пример Python:
import subprocess
grassbin = 'grass71' # we expect grass71 to be on path
mapset = '/home/john/grassdata/nc_spm_08_grass7_tests/PERMANENT/'
subprocess.check_call([grassbin, mapset, '--exec', 'g.version', '-g'])"
Я не знаю, как именно это выглядит в NodeJS, но вы можете посмотреть на Execute a command line binary with Node.js. Интерфейс был добавлен совсем недавно, и он еще не находится в стабильном выпуске, однако он вполне применим. В более старых версиях вы можете получить аналогичные, но ограниченные функциональные возможности, установив переменную среды GRASS_BATCH_JOB
. Вы можете узнать больше в documentation или запустив grass71 --help
. Общий синтаксис:
grass_executable full/path/to/mapset --exec module module=parameters -andflags
grass_executable full/path/to/mapset --exec custom_script.py
grass_executable -standard -flags full/path/to/mapset --exec ...
Обратите внимание, что в целом, GRASS модули и скрипты, написанные специально для GRASS требуют GRASS сеанса, чтобы быть активным. Стандартный способ - запустить программу GRASS, которая запускает/устанавливает сеанс. Сеанс обычно является интерактивным (командная строка и/или графический интерфейс). При использовании функций GRASS из других программ, сеанс/среда должна быть каким-то образом настроена. PyWPS и Zoo Project помогут вам в этом, или вы можете сделать это самостоятельно (второй предложенный вариант), или в идеале вы можете использовать фактический исполняемый файл GRASS, который будет запускать указанный модуль или скрипт в правильном сеансе, используя новый флаг --exec
или GRASS_BATCH_JOB
variable (это последний предложенный вариант).