1

这个问题更多地关注 Web 服务而不是 Grass 软件。您对如何允许将命令 (Linux) 作为 Web 服务进行访问有什么建议吗?

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

谢谢,

问候,

某人。

4

1 回答 1

0

这是一篇较旧的帖子,但我希望我的建议无论如何对某人有用。

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

另一种选择是直接从服务器端应用程序调用 GRASS GIS。这可以通过手动设置 GRASS GIS 环境来完成(因为 GRASS 模块需要 GRASS 会话才能运行)。这在GRASS 用户 wiki文档和 SE 上进行了描述(无法从 python 脚本运行草工具(草 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在旧版本中,您可以通过设置环境变量获得类似但有限的功能。您可以在文档中或通过运行了解更多信息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变量在适当的会话中运行指定的模块或脚本(这是最后一个建议的选项)。

于 2015-06-02T02:10:07.133 回答