GRASS GIS (Geographic Resources Analysis Support System,地理资源分析支持系统) 是一个免费、开放原始码的地理资讯系统(GIS),可用于处理栅格、拓扑矢量、影像和图表数据。
GRASS 在GPL下发布,可以在多个平台上运行,包括Mac OS X、Windows和Linux。用户可以通过图形用户界面(内建的基于 X窗口系统的 GUI 或通过 Quantum GIS)使用该软件的功能;也可以通过改进的 shell 直接使用它的模块。
GRASS 6 版本采用新的拓扑 2D/3D 矢量引擎并支持矢量网络分析。属性数据通过 .dbf 文件或基于 SQL 的数据库管理系统(如 MySQL、PostgreSQL/PostGIS 和 SQLite)来管理。该系统可以胜任3D矢量图形数据和立体像素的可视化。通过与 GDAL/OGR库的绑定,GRASS 支持多种栅格和矢量格式。其中包括 OGC-conformal简单要素,以实现与其他 GIS 软件的互操作。它也支持线性参考系统。
GRASS 开发团队是一个由来自很多地区的开发者组成的跨国群体。GRASS 是开源地理空间基金会最初的八个软件项目之一。
目前,GRASS 在中国的相关资讯维护由OSGeo中国中心负责,具体包括新闻发布,镜像网站的维护,中文教程的修订。
架构
GRASS 支持二维和三维的栅格和矢量数据。矢量数据模型是拓扑的,意味着面是由边界和形心定义的;在单一图层中边界不能互相重叠。
GRASS 被设计成一个运行环境,执行特定 GIS 计算的工具在其中被执行。不同于典型的应用软件,一开始执行 GRASS,用户就会面对一个 UNIX shell,其中包括一个为执行 GRASS 命令(被称为模块)提供支持的改良的环境。这个环境有一个状态,其中包括一些参数如覆盖的地理区域和使用的地图投影。所有的 GRASS 模块被执行时会读取这个状态,并被额外地赋予一些特定的参数(如输入和输出的地图,或者计算中使用的值)。多数 GRASS 模块和功能可以通过 GUI 操作,作为通过 shell 操作地理数据的另外一个选择。GRASS 发行版中包含超过 300 个核心模块,此外 GRASS 网站上提供了超过 100 个用户创建的附加模块。GRASS库和核心模块用C写成,其他的模块用C、C++、Python、UNIX shell、Tcl 或其他脚本语言写成。GRASS 模块在 Unix哲学下设计,因此可以被没有C语言编程知识的用户用 shell 脚本联合起来以创建更加复杂或专业的模块。
历史
GRASS 的开发可以追溯到 1982 年[2]。美国陆军工程兵团的一个分支——美国陆军建筑工程研究实验室(USA-CERL,1982-1995)开始开发 GRASS 以满足美国军方土地管理和环境规划软件的需要。在 1982 年到 1995 年间,USA-CERL 领导了许多美国联邦政府机构、大学和私人公司进行了 GRASS 的开发, 在其基础上开发了 GRASS 的核心组件。USA-CERL 在 1992 年完成了 GRASS 4.1,并在 1995 年之前发布了这个版本的五个更新和补丁。USA-CERL 也开发了 GRASS 5.0 浮点版本的核心组件。
USA-CERL 在 GRASS 4.1 版(1995)之后正式终止参与 GRASS。贝勒大学的一个团队接管了软件的开发,发布了 GRASS 4.2 版本。1999 年十月,从版本 5 开始,GRASS 软件原先的公有领域授权被更换为 GPL[3]。
如今 GRASS 被用于全世界许多学术和商业领域,还有许多政府部门,包括 NASA、NOAA、USDA、DLR、CSIRO、美国国家公园管理局等。