GRASS GIS:三十年历史的开源GIS软件

     GRASS GIS是开源平台下一个重量级的GIS软件。20世纪80年代初,美国军方建筑工程研究实验室(USA/CERL)的Bill Gorgan负责遴选一款具有土地管理、环境规划、环境评估的GIS软件。但最终竟没有一款软件符合上述要求,不得已Gorgan开始组织一批志愿者进行GIS软件设计及开发。1982年第一款名为FHIS(Fort Hood Geographic Information System)的GIS软件在VAX/Unix系统上实现了,它能支持基本的栅格数据Overlay与布尔计算。1983年在系统功能得到进一步完善,及成功移植到SUN-1 Microcomputer后,FHIS改名为IGIS(Installation Geographic Information System)。1984年,IGIS正式命名为GRASS(Geographic Resource Analysis Support System)。1991年,GRASS4.0使用Internet进行发布。1995年GRASS4.1.5 移植到Linux平台。1995年,资助并主导GRASS开发近13年的USA/CERL正式退出。直到1997年,由Baylor University成立的“GRASS Research Group”从USA/CERL接过了GRASS的开发工作,1998年发布了GRASS 4.2.1,从此GRASS在学术界迅速流行起来。1999年,GRASS 5.0发布,从此走上了良性发展的道路,也使GRASS GIS再一次成为开放源代码领域最优秀的GIS软件。目前GRASS GIS新版本不但继承了旧版本30多年的设计经验,还充分借鉴了其他开发源代码GIS软件包丰富程序资源和强大功能模块,成为了当之无愧的开源GIS软件的佼佼者。
    GRASS GIS7.0.0下载地址如下:

New stable LTS release: GRASS GIS 7.0.0

Mac OSX
Windows
Linux
… and Addons

  • GRASS GIS的结构

GRASS GIS使由一组分工明确、相互独立、功能强大的模块组成,具有良好的扩展性和伸缩性。
 

  • GRASS 数据的Import/Export

GRASS 使用GDAL/OGR实现二维空间数据的Import/Export。该模块可以支持常见的空间数据文件格式与空间数据库访问。
 

  • GRASS 数据的投影转换

GRASS使用PROJ4实现地图投影,可以支持120余种投影和地理坐标系统。
 

  • GRASS的空间数据库实现方法

GRASS可以广泛利用DBF、ODBC等嵌入式数据库,还能利用PostgreSQL、MySQL、Sqlite等关系型数据库。特别是PostgreSQ已经成为GRASS处理海量数据的主要空间数据库环境。
 

  • GRASS的地学统计实现方法

GRASS的地学统计部分利用了著名的GNU R,能进行各种统计模型的构建。
 

  • GRASS的三维实现方法

GRASS引入了Voxel的概念,提供了3D体元的内插方法。如IDW、RST和三位可视化NVIZ模块,实现了二维与三维、矢量与栅格数据的融合显示环境。
      

GRASS GIS 快速入门

启动

  在 Live 系统中,点击桌面上的 GRASS 图标,即可启动 GRASS GIS 。在“Welcome to GRASS”页面可以选择 Spearfish 或 simplified North Carolina (nc_basic_spm) 数据集,“user1”工程,并点击 [Start Grass] 启动。本文档中使用的示例数据集是 Spearfish 。

screenshot

  这将启动 GRASS GIS 。本版本的 GRASS 使用了 基于 wxPython 的新界面 。

Tip

  若屏幕分辨率很小(例如 800×600),界面可能过于拥挤,以至于 [Start GRASS] 可能被覆盖。此时按住 Alt 将窗口部分拖出屏幕,并将窗口边框拖拽扩大可以解决问题。

地图显示

screenshot

  根据所选择的数据集位置,从 PERMANENT mapset 添加 elevation.10m 或elevation 数据集。在 Layer Manager 图层管理器点击显示一个格网和加号的图标,并从 “map to be displayed” 下拉菜单,点击 [Ok] 。

  同样,点击 V 型折线和加号图标可以添加 roads 或 roadsmajor 等矢量线图层。

  右键单击一个图层选择 Zoom to selected map(s) 可以缩放至全局。

绘制地形剖面

screenshot

  在 Layer Manager 图层管理窗口,选中 elevation 图层,点击工具栏中的折线图图标,并选择 Profile surface map 。若没有自动选中,在对话框中选中所需图层亦可。点击 [Ok] 。选择左侧第二个图标可以创建剖面线。

生成随机表面

  首先,在 Settings ‣ Region ‣ Set region 选择 Set from default region 设定默认区域,点击 [Run] ,然后使用 Raster ‣ Generate surfaces ‣ Fractal surface 创建一个基于分形算法的随机表面。在 Optional 可以进一步调整设置。点击 [Run] 执行。点击 [Close] 可以关闭 r.surf.fractal 模块的界面。

screenshot

颜色设置

  执行前述步骤后,在 user1 地图集下应当存在两个栅格数据图层。取消勾选 elevation可以关闭该图层的显示。若需要,点击眼睛图标刷新显示。

  这里要改变分形图层的渲染颜色设置。选中该图层,在 Raster 菜单选择 Manage colors ‣ Color tables 。在 Colors 选项卡的下拉菜单 Type of color table 中选择一个。示例截图中选择的是 srtm 。完成后点击 [Run] 并关闭 r.colors 窗口。

  显示将自动刷新。通过改动图层的元数据设置也可以强制刷新显示缓存。工具栏上的刷新按钮(第二个)亦可用于刷新。

地形阴影图

screenshot

  这里使用 elevation 高程模型生成地形阴影图。首先,在主图层列表中右键单击elevation 图层,选择 Set computation region from selected map(s) ,然后在 raster 目录选择 Terrain analysis ‣ Shaded relief (位于菜单中部),参数面板将会显示。

  确认输入数据选择无误后点击 [Run] 。完成后将生成的 elevation.shade @user1 加入显示,关闭其它的图层。

河流和汇水区分析。

  同样选择 elevation @PERMANENT 图层,在 Raster 菜单选择 Hydrologic modeling ‣ Watershed analysis 。 r.watershed 模块将启动。设置 elevation 图层为输入,在 ‘Input options’ 设置 threshold 最小汇水区面积 为 10000 像元,在 ‘Output options’ 的 watershed basin 设置 “elev.basins” ,stream segments 设置 “elev.streams” 。点击 [Run] 执行。

  在图层列表窗口选中新生成的两个图层,右击 “elev.basins” 选择 “Change opacity level 设置透明度” ,设为 50% 左右。若有需要,鼠标拖拽可以改变图层顺序,从而将该图层至于上方。

screenshot

  在图层窗口点击右侧第二个图标,选择 Add a grid layer 。在 size of grid 输入 0:03(0 度 3 分,格式为 D:M:S),在 “Optional” 选项卡勾选 </a>Draw geographic grid,点击 [Ok] 并刷新。

  下面添加比例尺。点击工具栏右侧的 Add map elements 按钮,选择 “Add scalebar and north arrow” 并勾选 show ,点击 [Ok] 。比例尺默认将出现在地图的左上角。拖拽可以改变其位置。同样,选择 “Add legend” ,点击 “Set Options” 并选中 “elev.basins” 并点击 [Ok] 可以生成其图例。

  目前显示使用的是默认的字体。在图层管理窗口打开 Settings ‣ Preferences ,在 “Map Display” 选项卡点击 [Set font] ,选择偏好的字体,点击 [Apply] 。完成后刷新显示。

矢量处理模块

  以上演示均为栅格数据操作。另一方面,作为一套完善的 GIS 系统,GRASS 同样具有强大的矢量数据处理能力,具备完备的拓扑构建和分析功能。

screenshot

  以上使用栅格方法生成了汇水区模型,这里要将其转换为矢量数据。在 Raster 菜单选择Map type conversions ‣ Raster to vector 在 r.to.vect 对话框中,选中 basins @user1 作为 input 输入 ,设置一饿该输出名称(例如 basins_areas,应当满足</span>&nbsp;<span>SQL</span>&nbsp;<span>语言的格式要求),</span>&nbsp;<span>`feature</span>&nbsp;<span>type`</span>&nbsp;<span>设为</span>&nbsp;<span>`area`</span>&nbsp;<span>。在</span>&nbsp;<span>`Attributes`</span>&nbsp;<span>选项卡选择</span>&nbsp;<span>“raster</span>&nbsp;<span>values</span>&nbsp;<span>as</span><span>category</span>&nbsp;<span>numbers”,使用之前创建的栅格数据的参数作为多边形号。点击</span>&nbsp;<span>[Run]</span>&nbsp;<span>运行即可。矢量数据生成并显示后,建议调整其透明度。右击</span>&nbsp;<span>basins_areas 图层,在Properties 的 Selection 选项卡可以取消 rendering of area centroids 以关闭中心点显示。

  下一步将要为新的多边形添加属性数据。这里输入的是各个汇水区的平均高程。在Vector 选择 :menuselection:Update attributes –&gt; Update area attributes from raster 启动 v.rast.stats 模块。使用 basin_areas 作为多边形图层,使用 elevation 作为栅格输入,输入栏目名称的前缀如 ele ,点击 [Run] 运行。在地图显示窗口,点击工具栏第五个图标可以查询任意位置对应多边形的属性。

  使用 v.colors 模块可以依据属性改变多边形的颜色显示。在 Vector 选择 :menuselection:Manage colors –&gt; Color tables ,以 basin_areas 作为 “input vector map” ,以 ele_mean 标注上一项生成的统计参数栏,并在 Colors 选项卡中复制 elevation栅格的颜色数据。运行后,在图层列表点击 basin_areas 选择 Properties ,在 Colors 勾选 “getting colors from the map table column” ,点击 [Apply] ,显示将刷新。

  以下演示属性表和 SQL 工具的操作。在图层表点击形似表格的图标(底部第二个),将显示当前连接的数据表。这里仅就前述汇水盆地进行简单的标准差查询。在 SELECT * FROMbasin_areas WHERE 的下拉菜单选择 ele_stddev (标准差)作为查询对象,输入 < 50 并点击 [Apply] 确认。执行后,显示的数据项目将会减少,高程标准差较大的对象被排除了。右击表格选择 Select all 选中全部,再次右击选择 Highlight selected features 。选中的要素将会高亮显示。

3D 可视化

screenshot

  在 File ‣ NVIZ 开启 3D 可视化工具。选择 elevation 作为 “raster elevation” 。在开启的界面中,选择 Visualize ‣ Raster Surfaces ,设置 fine resolution 为 “1”。调节视角控制滚动条尝试不同的视角。

  为在 DEM 上叠加影象,在 Raster Surfaces 选择 Surface Attributes 菜单,在 “color” 项目中创建 “New Map” 。在前述 Spearfish 数据集选择 spot.image 是较好的选择。在 North Carolina 数据集可用 lsat7_2002_50 。点击 “Accept” 并在主窗口点击 “Draw”(左上角)。

其它操作

  很多用户可能想尝试 Cartographic Composer 制图工具和 object-oriented Graphical Modeling 面向对象的影象建模系统。其启动图标位于主界面底部工具栏。有关说明位于wxGUI 。

  新图形界面系统是使用 Python 语言编写的。对于 Python 开发人员,以下工具可能会很有用:   在图层窗口底部点击 Python shell ,使用 help(grass.core) 可以查看全部的核心 Python GIS 组件。此外,array (NumPy)、db (database)、raster 和 vector 都是重要的组件。为使用 GRASS 丰富的 C 函数库,可使用 Pythons CTypes 。

命令行和关闭

  使用 File ‣ Exit GUI 关闭图形界面。在关闭 GRASS 命令行之前,尝试使用 g.manual –help 获取帮助信息。GRASS 是一套倾向于丰富的命令行函数库功能而非图形界面开发的 GIS 系统,适用于通过脚本实现批处理。脚本语言支持 Bourne Shell 和 Python ,两者均有良好的开发环境。应用这些工具,一个包含语法分析器、图形界面和文档模板的 GRASS 模块框架只需 5 分钟左右即可完成。

  使用 g.manual -i 可以于浏览器中开启帮助文档。

  输入 exit 关闭 GRASS 系统。

其它信息

 &nbsp;   &nbsp;   

You may also like...

发表评论

您的电子邮箱地址不会被公开。

CAPTCHAis initialing...