GRASS GIS 手册 -命令行启动程序说明

GRASS GIS 命令行启动说明

原文 https://grass.osgeo.org/grass72/manuals/grass7.html

概要

GRASS GIS 命令行启动的基本命令格式如下(与原文稍有出入,根据命令grass72 -h修正):

grass72 [-h | -help | --help | --h] [-v | --version] [-c | -c geofile | -c EPSG:code[:datum_trans]]
[-e] [-f] [-text | -gtext | -gui] [--config param]
[[[GISDBASE/]LOCATION_NAME/]MAPSET]
grass72 [FLAG]... GISDBASE/LOCATION_NAME/MAPSET --exec EXECUTABLE [EPARAM]...

标志:

  • -h-help--help--h 打印简短的使用帮助信息并退出

  • -v | --version 打印GRASS的版本并退出

  • -C 若指定的数据库、位置或图集(database/location/mapset)不存在的话,新建一个

  • -c geofile 基于具有地理参考的文件(即 geofile)在指定的 GISDBASE 中创建新的GRASS (拥有)投影(的)位置

  • -c EPSG:code 使用给定的EPSG代码在指定的GISDBASE中创建新的GRASS投影位置

  • -c EPSG:code:datum_trans

    使用给定的EPSG代码和基准变换参数在指定的GISDBASE中创建新的GRASS投影位置

  • -e创建位置或地图集后退出。只与-c标志一起使用

  • -F 强制删除.gislock (如果存在)(小心使用!)。仅与-text标志 一起使用

  • -text 表示使用基于文本的用户界面(跳过欢迎屏幕),并设为默认

  • -gtext表示使用基于文本的用户界面(显示欢迎屏幕) ,并设为默认

  • -gui表示使用图形用户界面(wxGUI) ,并设为默认

  • --config 打印GRASS配置参数(选项:arch,build,compiler,path,revision)

  • --exec EXECUTABLE 执行GRASS模块或脚本。所提供的可执行文件将在GRASS GIS 会话中执行。

参数:

  • GISDBASE 初始数据库目录,包含 locations,应为完全限定路径(例如,/usr/local/share/grassdata
  • LOCATION_NAME 初始位置目录,它是GISDBASE的子目录,包含系列 Mapsets 和 公用的坐标系统(投影)
  • MAPSET 初始地图集目录,它是LOCATION_NAME的子目录
  • GISDBASE/LOCATION_NAME/MAPSET 全限定的 Mapset 目录
  • EXECUTABLE GRASS 模块, 脚本或其他(GRASS)可执行文件
  • EPARAM 可执行文件的参数
  • FLAG 标准标志

注意:地址参数必须以下列方式之一指定:

MAPSET
LOCATION_NAME/MAPSET
GISDBASE/LOCATION_NAME/MAPSET

描述

此命令用于启动GRASS GIS。它将解析命令行参数,然后为用户初始化GRASS。由于GRASS模块需要特定的环境,因此必须在任何其他GRASS模块运行之前调用此程序。命令行参数是可选的,并为用户提供一种方法来指示所需的用户界面以及要处理的地图集(mapset)。

启动程序将记住所需的用户界面和地图集。因此,下次用户运行GRASS时,键入 grass72(不带任何选项)将使用先前选择的设置启动GRASS用户界面和地图集。

如果指定图形用户界面(-gui),grass72 程序将尝试验证您指定的系统是否存在,并且您可以成功访问它。如果任何这些检查失败,grass72将自动切换回文本用户界面模式。

样本数据

GRASS GIS项目提供了几个免费的样本地理空间数据集作为即用型 locations。他们可在https://grass.osgeo.org/download/sample-data/下载 。“北卡罗莱纳数据集”(”North Carolina data set”)是来自北卡罗来纳州(美国)的现代地理空间数据包,包括栅格,矢量,LiDAR和卫星数据。这是文档中使用最频繁的数据集,用户手册页中的示例都是基于它的。

若安装时选择下载示例数据,则其位置在Windows下的C:\Users\[username]\Documents\grassdata

环境变量

GRASS启动时提供了许多环境变量,以帮助自动化和定制。大多数用户不需要考虑这些。

除了 shell 环境变量,GRASS在$HOME/.grass7/rc (Windows下为C:\Users\username\AppData\Roaming\GRASS7\rc)文件中维护了一些GIS环境变量。用户对此文件的更改将在下次启动GRASS时读取。如果此文件被损坏,用户可以手动编辑它或删除它重新开始。有关更多信息,请参阅implemented GRASS variables列表 。本帮助页面的其余部分将只考虑shell环境变量。

请注意,你需要用你所使用的 UNIX shell (命令行程序)所需的适当方法来设置这些变量(例如,在Bash shell中,您必须 `export `要传送的变量)。

用户界面环境变量

grass72 程序将检查一个名为GRASS_GUI 的环境变量是否存在,此变量表明使用的用户界面类型。如果在运行grass72 时未设置此变量,那么将创建该变量,然后将其保存在$HOME/.grass7/rc文件中,以便下次运行GRASS时使用。它可以被设置为textgtextgui

在 grass72确定要使用的用户界面的方式中存在优先级顺序。以下是从最高优先级到最低优先级的层次结构:

  1. 命令行参数
  2. 环境变量 GRASS_GUI
  3. $HOME/.grass7/rc(GUI)中设置的值
  4. 默认值- gui

Python环境变量

如果你选择使用wxGUI 接口,那么 GRASS_PYTHON 环境变量可以用来覆盖你系统默认的python命令。

假设您的系统安装了Python 2.6,并且您在$HOME/bin下安装了一个个人版本的Python 2.7。您可以使用上述变量让GRASS使用Python 2.7。GRASS_PYTHON = python2.7

额外的用户脚本路径

此环境变量允许用户扩展GRASS程序搜索路径,以包括本地开发/安装的GRASS模块或用户脚本。

GRASS_ADDON_PATH = /usr/mytools
GRASS_ADDON_PATH = /usr/mytools:/usr/local/othertools

在上面的示例中,路径将被添加到标准的GRASS路径环境中。

额外的本地GRASS 插件模块库

此环境变量允许用户将GRASS程序搜索路径扩展为包含本地安装(请参阅g.extension了解详细信息) 的未随标准GRASS版本一起发布的GRASS 插件模块。

GRASS_ADDON_BASE = /usr/grass-addons

上例中,路径将被添加到标准的GRASS路径环境中。

如果用户未定义,则此变量由GRASS启动程序设置为 GNU / Linux上的$HOME/.grass7/addons和MS Windows上的$APPDATA\GRASS7\addons

HTML浏览器变量

GRASS_HTML_BROWSER 环境变量允许用户设置HTML Web浏览器以用于显示帮助页面。

Location 环境变量

上面的提要部分描述了可用于设置GRASS将使用的位置和地图集的选项。这些值也可以使用环境变量设置。但是,在命令行上指定(Location )位置和地图集变量将覆盖这些环境变量。可用变量如下:

  • Location mapset 的完全限定路径(例如/usr/local/share/grassdata/spearfish70/PERMANENT)。此环境变量覆盖GISDBASE,LOCATION_NAME和MAPSET变量。
  • GISDBASE 初始数据库目录,应为完全限定路径(例如/usr/local/share/grassdata
  • LOCATION_NAME 初始位置目录,它是GISDBASE的子目录
  • MAPSET 初始地图集目录,它是LOCATION_NAME的子目录

运行非交互式批处理作业

如果 GRASS_BATCH_JOB 环境变量设置为 shell 脚本的 完整 路径和文件名,那么将以非交互方式启动GRASS,并运行脚本。如果用户需要,脚本本身可以是交互式的。当它完成时,GRASS将使用脚本给出的退出成功代码自动退出。脚本文件必须设置其可执行位(executable bit)。

例子

以下是一些如何启动GRASS的示例

  • grass72 使用默认用户界面启动GRASS。将提示用户选择适当的位置和地图集( location & mapset)。
  • grass72-gui 使用图形用户界面启动GRASS。将提示用户选择适当的位置和地图集。
  • grass72-text 使用基于文本的用户界面启动GRASS。适当的位置和地图集必须由环境变量设置(参见下面的示例),否则从上一个GRASS会话中获取。
  • grass72 -gtext 使用基于文本的用户界面启动GRASS。将提示用户选择适当的位置和地图集。
  • grass72 $HOME/grassdata/spearfish70/user1 使用默认用户界面启动GRASS,并绕过地图集选择菜单而自动启动到给定的地图集。
  • grass72 -gui - 使用图形用户界面启动GRASS,并尝试从环境变量获取位置和映射集。
  • grass72 -c EPSG:4326 $HOME/grassdata/mylocation 在指定的GISDBASE中使用EPSG代码4326(经纬度,WGS84)创建新的GRASS位置
  • grass72 -c EPSG:5514:3 $HOME/grassdata/mylocation 使用EPSG代码5514 (S-JTSK / Krovak East North - SJTSK) 创建新的GRASS位置,在指定的GISDBASE中使用捷克共和国使用的基准变换参数
  • grass72 -c myvector.shp $HOME/grassdata/mylocation 基于 Shapefile 文件创建新的GRASS位置
  • grass72 -c myraster.tif $HOME/grassdata/mylocation 基于GeoTIFF 文件创建新的GRASS位置

使用exec 接口批量作业

基于地理数据文件的投影(-c)和退出(-e)立即创建新位置:

grass72 -c elevation.tiff -e /path/to/grassdata/test1/

将外部栅格数据链接到PERMANENT地图集:

grass72 /path/to/grassdata/test1/PERMANENT/ --exec r.external input=basins.tiff output = basins
grass72 /path/to/grassdata/test1/PERMANENT/ --exec r.external input=elevation.tiff output = elevation

获取一个栅格图的统计信息:

grass72 /path/to/grassdata/test1/PERMANENT/ --exec r.univar map=elevation

可视化栅格比较:

grass72 /path/to/grassdata/test1/PERMANENT/ --exec g.gui.mapswipe first=elevation second=basins

执行shell和Python脚本而不是单个命令

命令序列可以集成在脚本中并使用exec接口执行。

Shell脚本示例:执行shell脚本的命令可能是:

grass72 /path/to/grassdata/test1/PERMANENT/ --exec sh test.sh

一个非常简单的bash脚本(“test.sh”)可能如下所示:

#!/bin/bash
g.region -p
g.list type=raster
r.info elevation

Python脚本示例:执行Python脚本的命令可能是:

grass72 /path/to/grassdata/test1/PERMANENT --exec python test.py

一个非常简单的Python脚本(“test.py”)可能如下所示:

#!/usr/bin/env python
# import GRASS Python bindings (see also pygrass)
import grass.script as gscript
import grass.script.setup as gsetup
gscript.message('Current GRASS GIS 7 environment:')
print(gscript.gisenv())
gscript.message('Available raster maps:')
for raster in gscript.list_strings(type='raster'):
print(raster)
gscript.message('Available vector maps:')
for vector in gscript.list_strings(type='vector'):
print(vector)

故障排除

重要的是,为了避免出现 "[Errno 8] Exec format error" ,脚本顶部必须有一个 shebang 行(例如#!/bin/sh

#!/bin/bash#!/usr/env python)指示要用于脚本的解释器。脚本文件必须设置其可执行位。

其他示例

有多种方法可以使用位置环境变量( location environment variables, 见上文)来指定要使用的地图集。以下是一些可能的示例。

例1

环境变量定义如下:

LOCATION = /usr/local/share/grassdata/spearfish70/PERMANENT
GISDBASE = /usr/local/share/grassdata
LOCATION_NAME = spearfish70
MAPSET = PERMANENT

使用以下命令启动GRASS:

grass72 -

GRASS将以LOCATION定义的地图集开始,因为LOCATION变量覆盖了其他变量。

例2

环境变量定义如下:

GISDBASE =/usr/local/share/grassdata
LOCATION_NAME = spearfish70
MAPSET = PERMANENT

使用以下命令启动GRASS:

grass72 -

GRASS将以GISDBASE/LOCATION_NAME/MAPSET定义的地图集启动。

grass72 /usr/home/grass/data/thailand/forests

GRASS将以覆盖环境变量的mapset /home/grass/data/thailand/forests 启动。

grass72 swamps

GRASS将以GISDBASE/LOCATION_NAME/swamps定义的地图集开始,因为地图集的命令行参数覆盖环境变量MAPSET。

grass72 thailand/forests

GRASS将以GISDBASE/thailand/forests定义的地图集启动,因为location和mapset的命令行参数覆盖了环境变量LOCATION_NAME和MAPSET。

警告

如果你使用wxGUI 接口启动GRASS ,你的$PATH变量中必须有一个python命令。也就是说,命令必须命名为

python,而不是python2.6。很少有Python安装不创建一个python命令的。在这些情况下,您可以通过GRASS_PYTHON环境变量覆盖python。

此外,如果您安装了多个版本的Python,请确保要与GRASS一起使用的版本由GRASS_PYTHON环境变量设置。

也可以看看

GRASS环境变量 列表

GRASS GIS网站
GRASS GIS用户Wiki
GRASS GIS Bug Tracker
GRASS GIS 7程序员手册

文章目录
  1. 1. GRASS GIS 命令行启动说明
    1. 1.1. 概要
      1. 1.1.1. 标志:
      2. 1.1.2. 参数:
    2. 1.2. 描述
    3. 1.3. 样本数据
    4. 1.4. 环境变量
      1. 1.4.1. 用户界面环境变量
      2. 1.4.2. Python环境变量
      3. 1.4.3. 额外的用户脚本路径
      4. 1.4.4. 额外的本地GRASS 插件模块库
      5. 1.4.5. HTML浏览器变量
      6. 1.4.6. Location 环境变量
      7. 1.4.7. 运行非交互式批处理作业
    5. 1.5. 例子
      1. 1.5.1. 使用exec 接口批量作业
        1. 1.5.1.1. 执行shell和Python脚本而不是单个命令
        2. 1.5.1.2. 故障排除
      2. 1.5.2. 其他示例
        1. 1.5.2.1. 例1
        2. 1.5.2.2. 例2
    6. 1.6. 警告
    7. 1.7. 也可以看看
|