这个问题的重点是web服务,而不是grass软件。
对于如何允许命令(linux)作为web服务访问,您有什么建议吗?
实际上,我正在使用nodejs,但欢迎使用其他解决方案。
谢谢您,
当做,
某人。
最佳答案
这是一个旧的职位,但我希望我的建议可能有用的人无论如何。
最常见的方法可能是使用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的开发版本中有一个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可执行文件,它将使用新的
--exec
标志或GRASS_BATCH_JOB
变量在正确的会话中运行指定的模块或脚本(这是最后一个建议选项)。