2014-09-17 1 views
1

Этот вопрос больше фокусируется на веб-сервисах, а затем на программном обеспечении Grass. Есть ли у вас предложения относительно того, как разрешить доступ к команде (Linux) в качестве веб-службы?Команды травы для веб-служб

Я действительно работаю с NodeJS, но другие решения приветствуются.

Спасибо,

С уважением,

SB.

ответ

0

Это старое сообщение, но я надеюсь, что мои предложения могут быть полезны кому-то в любом случае.

Наиболее распространенным способом, вероятно, является использование 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 (это последний предложенный вариант).