草命令Web服务

时间:2014-09-17 10:40:08

标签: linux web-services command-line grass

这个问题更侧重于Web服务然后是Grass软件。 对于如何允许命令(Linux)作为Web服务进行访问,您有什么建议吗?

我实际上在使用NodeJS,但欢迎使用其他解决方案。

谢谢,

此致

SB。

1 个答案:

答案 0 :(得分:0)

这是一篇较旧的帖子,但我希望我的建议可能对某人有用。

最常见的方法可能是使用WPSPyWPS使用Zoo Project,这两个项目都提供与GRASS GIS的绑定。

另一种选择是直接从服务器端应用程序调用GRASS GIS。这可以通过手动设置GRASS GIS环境来完成(因为GRASS模块需要运行GRASS会话)。这在GRASS user wikidocumentation和最后SE(Can't run grass tools from python script (grass 6.4, python 2.7, win7))中有所描述。

最后,在GRASS GIS的开发版本中有一个new way调用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程序。会话通常是交互式的(命令行和/或GUI)。从其他程序使用GRASS功能时,必须以某种方式设置会话/环境。 PyWPS和Zoo Project将为您提供帮助,或者您可以完全自己完成(第二个建议的选项),或者理想情况下您可以使用实际的GRASS可执行文件,它将使用新的{{1}在正确的会话中运行指定的模块或脚本} flag或--exec变量(这是最后建议的选项)。