GRASS GIS 命令行启动说明
概要
GRASS GIS 命令行启动的基本命令格式如下(与原文稍有出入,根据命令grass72 -h
修正):
|
标志:
-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 标准标志
注意:地址参数必须以下列方式之一指定:
|
描述
此命令用于启动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时使用。它可以被设置为text
,gtext
或 gui
。
在 grass72确定要使用的用户界面的方式中存在优先级顺序。以下是从最高优先级到最低优先级的层次结构:
- 命令行参数
- 环境变量 GRASS_GUI
$HOME/.grass7/rc
(GUI)中设置的值- 默认值
- 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路径环境中。
额外的本地GRASS 插件模块库
此环境变量允许用户将GRASS程序搜索路径扩展为包含本地安装(请参阅g.extension了解详细信息) 的未随标准GRASS版本一起发布的GRASS 插件模块。
|
上例中,路径将被添加到标准的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
)立即创建新位置:
|
将外部栅格数据链接到PERMANENT地图集:
|
获取一个栅格图的统计信息:
|
可视化栅格比较:
|
执行shell和Python脚本而不是单个命令
命令序列可以集成在脚本中并使用exec接口执行。
Shell脚本示例:执行shell脚本的命令可能是:
|
一个非常简单的bash脚本(“test.sh”)可能如下所示:
|
Python脚本示例:执行Python脚本的命令可能是:
|
一个非常简单的Python脚本(“test.py”)可能如下所示:
|
故障排除
重要的是,为了避免出现 "[Errno 8] Exec format error"
,脚本顶部必须有一个 shebang 行(例如#!/bin/sh
,#!/bin/bash
或#!/usr/env python
)指示要用于脚本的解释器。脚本文件必须设置其可执行位。
其他示例
有多种方法可以使用位置环境变量( location environment variables, 见上文)来指定要使用的地图集。以下是一些可能的示例。
例1
环境变量定义如下:
|
使用以下命令启动GRASS:
|
GRASS将以LOCATION定义的地图集开始,因为LOCATION变量覆盖了其他变量。
例2
环境变量定义如下:
|
使用以下命令启动GRASS:
|
GRASS将以GISDBASE/LOCATION_NAME/MAPSET定义的地图集启动。
|
GRASS将以覆盖环境变量的mapset /home/grass/data/thailand/forests
启动。
|
GRASS将以GISDBASE/LOCATION_NAME/swamps定义的地图集开始,因为地图集的命令行参数覆盖环境变量MAPSET。
|
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程序员手册