这个问题更多地关注Web服务,而不是Grass软件。对于如何允许命令(Linux)作为Web服务进行访问,您有什么建议吗?
我实际上正在使用NodeJS,但也欢迎其他解决方案。
谢谢,
致以敬意,
某人。
发布于 2015-06-02 10:10:07
这是一个较老的帖子,但我希望我的建议可能对某些人有用。
最常见的方式可能是通过PyWPS或Zoo Project使用WPS,这两个项目都提供了到GRASS的绑定。
另一种选择是直接从服务器端应用程序调用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变量在适当的会话中运行指定的模块或脚本(这是最后一个建议选项)。
https://stackoverflow.com/questions/25888410
复制相似问题