GRASS 中 文 教 程 作 者 : 广 东 省 东 莞 市 长 安 中 学 文 合 平 E_mail: wenheping@gmail.com 2007 年 9 月 1
一 Grass 是 什 么 1 简 介 GRASS (Geographic Resources Analysis Support System, 地 理 资 源 分 析 支 持 系 统 ) 是 最 负 盛 名 的 开 源 地 理 信 息 系 统 (GIS) 以 下 是 它 的 一 些 特 点 : 1) GRASS 已 经 包 含 了 GIS 的 所 有 桌 面 应 用, 功 能 强 大 有 人 评 价 认 为 Grass 的 功 能 已 经 不 弱 于 鼎 鼎 大 名 的 ArcGIS, 是 否 如 此 有 待 于 用 户 自 己 去 体 验 2) Grass 是 遵 守 GPL 的 自 由 软 件, 因 此 任 何 人 都 可 以 免 费 的 在 网 上 下 载 使 用, 并 且 可 以 得 到 不 断 的 更 新 和 技 术 支 持 这 点 尤 其 适 合 于 教 育 系 统, 所 以 国 外 很 多 大 学 和 科 研 机 构 都 使 用 Grass 来 进 行 GIS 教 学 和 应 用 相 对 于 那 些 动 辄 需 要 几 十 万 元 人 民 币 一 套 的 具 有 知 识 产 权 的 商 业 软 件 而 言,GRASS 极 具 优 势 3) Grass 也 具 备 GPL 的 第 二 个 特 点 : 不 仅 软 件 本 身 可 以 自 由 使 用, 而 且 提 供 整 个 软 件 的 源 代 码 任 何 学 校 和 科 研 单 位 都 可 以 在 GRASS 基 础 上 进 行 二 次 开 发, 开 发 者 可 以 在 二 次 开 发 的 基 础 上 拥 有 属 于 自 己 的 知 识 产 权 作 为 教 学, 科 研 和 商 业 上 的 用 途 4) GRASS 可 以 和 其 它 标 准 的 GIS 应 用 方 案 兼 容, 例 如 ARC/info 和 MapInfo 等, 可 以 相 互 交 换 数 据, 从 而 保 证 了 学 校 原 来 投 资 的 设 备 和 应 用 方 案 仍 然 可 以 发 挥 作 用, 不 会 造 成 浪 费 5) GRASS 是 一 个 基 于 类 UNIX 操 作 系 统 的 GIS 应 用 方 案, 这 可 能 是 制 约 Grass 更 为 广 泛 传 播 的 一 个 重 要 原 因 但 我 们 要 理 解 类 UNIX 系 统 是 一 个 功 能 强 大 而 稳 定 的 操 作 系 统, 世 界 上 最 著 名 的 服 务 器 厂 商 如 苹 果 SUN HP 等 都 采 用 以 UNIX 为 基 础 的 操 作 系 统, 对 于 GIS 这 样 需 要 处 理 大 量 数 据 的 应 用 程 序 使 用 UNIX 操 作 系 统 是 最 好 的 选 择 Grass 目 前 正 在 积 极 开 发 能 直 接 运 行 在 Windows 操 作 系 统 上 的 版 本 6) GRASS 以 前 只 以 标 准 命 令 行 输 入 方 式 运 行, 这 种 操 作 方 式 会 让 Windows 用 户 很 不 习 惯 但 现 在 的 Grass 也 可 以 运 行 图 形 用 户 界 面 不 过 高 手 们 仍 然 更 乐 意 以 字 符 方 式 来 操 作 GRASS 2 官 方 网 站 : http://grass.itc.it 3 中 文 用 户 手 册 : http://www.gdf-hannover.de/lit_html/grass60_v1.2_zh_cn/index.html 为 什 么 人 家 已 经 有 了 这 么 详 细 的 用 户 手 册, 你 还 要 再 写 一 个 什 么 <<Grass 中 文 教 程 >>? 这 个 原 因 很 简 单, 大 家 知 道, 这 个 世 界 上, 不 会 因 为 有 了 大 狗, 就 没 有 小 狗, 他 叫 他 的, 我 叫 我 的 2
二 Grass 的 安 装 : 1 为 什 么 一 定 要 在 Linux 平 台 上 使 用 Grass? 大 家 基 本 上 都 是 Windows 的 用 户, 所 以 大 家 使 用 Grass 之 前 的 第 一 个 问 题 就 是 : 是 否 可 以 在 Windows 平 台 上 运 行 Grass? 回 答 是 肯 定 的, 这 是 在 Windows 下 安 装 Grass 的 说 明 : http://grass.itc.it/grass62/binary/mswindows/ 但 是 我 们 要 理 解,Grass 原 本 是 诞 生 于 类 Unix 操 作 系 统 上 的, 它 不 能 直 接 运 行 于 Windows 平 台 上, 上 述 操 作 的 原 理 是 先 在 Windows 系 统 上 构 造 一 个 模 拟 的 Unix 运 行 环 境, 然 后 在 运 行 Grass 显 然 这 样 的 处 理 必 将 使 得 Grass 的 运 行 效 率 大 打 折 扣 以 我 自 己 的 实 践 经 验 来 看, 在 Windows 系 统 上 以 模 拟 的 方 式 运 行 Grass 效 率 很 低, 在 我 配 置 不 错 的 电 脑 上 运 行 都 很 不 流 畅, 没 有 实 际 应 用 价 值 所 以, 我 建 议, 如 果 你 真 地 想 研 究 Grass, 那 就 暂 时 抛 开 你 熟 悉 的 Windows 系 统, 换 用 Linux 吧 ( 值 得 高 兴 的 是,Grass 开 发 成 员 们 近 来 也 致 力 于 使 Grass 直 接 运 行 于 Windows 平 台, 目 前 Grass 的 最 新 版 本 是 6.2.2, 据 说 下 一 个 版 本 Grass 6.3 就 可 以 直 接 运 行 在 Windows 操 作 系 统 上 了 ) 如 果 你 还 是 不 能 完 全 抛 开 Windows, 那 么 你 还 有 两 个 折 中 的 办 法, 一 是 如 果 你 的 电 脑 硬 盘 足 够 大, 建 议 你 采 用 双 启 动 的 方 式, 也 就 是 同 时 在 你 的 电 脑 上 安 装 Windows 和 Linux 两 个 操 作 系 统 ; 二 是 如 果 你 的 电 脑 的 内 存 足 够 大, 最 好 超 过 一 G, 那 么 你 可 以 采 用 虚 拟 机 的 方 式 两 种 方 式 的 具 体 操 作 方 法 非 本 文 的 论 述 内 容, 请 您 谷 歌 之, 摆 渡 之 Linux 系 统 的 版 本 几 乎 有 无 穷 多 个, 使 新 手 茫 然 无 所 从, 那 么 请 你 相 信 我, 如 果 你 想 使 用 Linux 做 服 务 器, 那 么 你 最 好 选 择 Debian 稳 定 版 本 ; 如 果 你 使 用 Linux 作 为 桌 面 办 公 系 统 --- 比 如 说 现 在 要 来 运 行 Grass--- 那 么 Ubuntu 是 你 最 好 的 选 择 至 于 Ubuntu 是 什 么, 如 何 安 装, 怎 么 使 用 等 问 题, 请 参 考 : http://www.ubuntu.com.cn 3
2 Grass 的 具 体 安 装 过 程 在 Ubuntu 中 安 装 Grass 非 常 简 单, 首 先 在 Ubuntu 系 统 菜 单 中 打 开 一 个 终 端, 如 下 图 : 然 后 在 终 端 里 面 --- 又 称 之 为 Shell 界 面 的 --- 输 入 命 令 : # sudo apt-get install grass 如 下 图 : 4
这 样 就 可 以 很 快 地 安 装 好 Grass 了,Ubuntu7.4 版 本 里 面 的 Grass 是 6.0 的, 而 尚 未 正 式 发 布 的 Ubuntu7.10 里 面 的 Grass 已 经 是 最 新 的 6.2.2 版 本 了, 我 使 用 的 是 后 者 为 了 开 始 使 用 Grass, 强 烈 建 议 先 下 载 官 方 提 供 的 一 个 范 例 数 据 库 因 为 Grass 对 GIS 文 件 格 式 数 据 组 织 方 式 等 都 有 自 己 的 一 些 要 求 和 定 义, 初 学 者 最 好 先 直 接 使 用 现 成 的 GIS 数 据 官 方 的 这 个 GIS 数 据 叫 :spearfish60, 下 载 地 址 是 : http://grass.itc.it/sampledata/spearfish_grass60data.tar.gz 下 载 来 的 文 件 是 Linux 系 统 中 常 见 的 压 缩 打 包 格 式, 文 件 后 缀 是.tar.gz 然 后 在 终 端 界 面 下 输 入 命 令 : $ tar zxvf Desktop/spearfish*.gz 这 句 命 令 的 意 思 是 把 刚 才 下 载 来 的 spearfish 数 据 库 文 件 解 压 到 当 前 目 录, 也 就 是 用 户 的 主 目 录 下 注 意 Ubuntu 通 过 浏 览 器 下 载 来 的 spearfish 文 件 放 在 当 前 用 户 目 录 的 Desktop 子 目 录 下, 不 同 的 Linux 系 统 的 存 放 位 置 不 一 现 在 相 关 的 软 件 安 装 和 示 例 GIS 数 据 安 装 就 完 成 了 5
三 Grass 的 使 用 快 速 入 门 Grass 已 经 安 装 好 了, 现 在 要 开 始 使 用 了, 却 发 现 相 对 于 Windows 下 的 各 种 操 作 便 利 的 GIS 软 件 而 言,Grass 实 在 显 得 有 些 麻 烦 一 开 始 就 要 回 答 一 堆 看 起 来 似 天 书 一 般 的 问 题, 大 量 的 陌 生 的 新 名 词, 没 有 图 形 的 冷 冰 冰 的 字 符 界 面, 莫 名 其 妙 的 键 盘 用 法, 都 会 使 人 望 而 却 步 我 想 你 要 学 习 使 用 Grass, 首 先 要 坚 定 信 念 :Grass 是 优 秀 而 强 大 的 GIS 软 件, 它 的 让 初 学 者 感 到 别 扭 的 操 作 方 式 在 你 熟 悉 之 后, 你 一 定 会 爱 不 释 手 的 我 们 很 多 人 由 于 长 期 工 作 在 图 形 界 面 而 不 习 惯 字 符 界 面 的 操 作, 其 实, 你 多 用 几 次 字 符 界 面 之 后, 你 会 发 现, 在 字 符 界 面 下 控 制 电 脑, 或 者 说 用 键 盘 控 制 电 脑, 比 在 图 形 方 式 下, 或 者 说 用 鼠 标 控 制 电 脑, 更 加 简 洁 高 效, 运 用 更 加 自 如 惬 意 以 我 自 己 而 言, 我 即 使 使 用 Windows, 也 经 常 切 换 到 命 令 行 方 式 进 行 一 些 操 作, 如 ping,ftp 等 再 次 启 动 终 端, 继 续 在 终 端 输 入 命 令 : $ grass 以 启 动 Grass 系 统,Grass 系 统 首 先 要 求 你 选 择 一 个 数 据 库 (Database), 如 下 图 : 6
现 在 我 们 需 要 理 解 Grass 的 三 个 基 本 概 念 : database, location 和 mapset 因 为 一 启 动 Grass, 就 需 要 设 置 好 这 三 个 参 数 Database 在 这 里 翻 译 为 数 据 库 就 有 些 不 合 适 了, 它 其 实 是 指 包 含 所 有 grass 数 据 的 目 录 的 名 字, 以 上 面 的 例 子 而 言, 应 该 把 它 设 置 为 /root Location 是 指 GIS 要 研 究 的 地 区 如 果 是 你 自 己 要 创 建 一 个 新 的 location, 则 需 要 知 道 很 多 的 参 数, 如 地 图 的 投 影 方 式 该 地 区 的 经 纬 度 分 辨 率 等 等, 我 们 初 学 就 不 要 自 己 创 建 而 使 用 现 成 的 location, 使 用 上 述 的 样 本 数 据 库 的 话, 这 里 就 应 该 填 写 spearfish60 Mapset 就 是 地 图 集 了, 这 里 每 个 用 户 可 以 使 用 自 己 的 用 户 名 字 创 建 一 个 mapset,grass 是 可 以 很 方 便 多 人 合 作, 共 同 工 作 的 一 般 mapset 里 面 肯 定 都 有 一 个 叫 做 PERMANENT 的 地 图 集 --- 注 意 在 Linux 中 大 小 写 是 严 格 区 分 的, 我 们 这 里 就 把 mapset 设 置 为 PERMANENT 理 解 了 这 三 个 基 本 概 念 后, 我 们 依 次 选 择 数 据 库 为 当 前 用 户 的 主 目 录, 我 的 系 统 是 /home/wen1,location 为 前 面 下 载 的 spearfish60 目 录, 而 Mapset 为 面 向 所 有 用 户 的 PERMANENT, 然 后 点 击 enter grass 按 钮 就 可 以 了 Grass 启 动 之 后 将 会 打 开 多 个 独 立 的 窗 口, 这 点 与 Windows 系 统 下 的 应 用 程 序 很 不 一 样, 新 用 户 注 意 适 应 一 般 来 说, 刚 进 入 Grass 会 同 时 打 开 四 个 窗 口, 一 个 是 Grass 的 图 形 操 作 界 面, 如 下 图 : 7
大 约 200 个 GRASS 模 块 ( 总 共 400 个 ) 被 集 成 到 了 下 拉 菜 单 中 这 使 得 我 们 能 够 用 鼠 标 方 便 地 使 用 最 为 常 用 的 模 块 菜 单 的 结 构 如 下 : File: 数 据 的 导 入 导 出 和 项 目 的 设 置 Config: 对 Grass 进 行 一 些 基 本 的 设 置. Raster: 包 含 分 析 栅 格 数 据 的 模 块 Vector: 包 含 分 析 矢 量 数 据 的 模 块 Image: 包 含 分 析 影 像 数 据 的 模 块 Grid3D: 包 含 分 析 voxel 数 据 的 模 块 (3 维 栅 格 数 据 ). Databases: 包 含 查 询 和 管 理 数 据 库 的 模 块 Help: 帮 助 另 外 一 个 Grass 窗 口 就 是 刚 才 的 终 端 窗 口 现 在 变 成 了 Grass 的 shell 操 作 界 面, 如 下 图 : 我 们 知 道, 这 是 老 手 们 的 至 爱, 我 等 新 手 暂 且 不 理 它 吧 除 此 以 外, 还 有 第 三 个 窗 口 是 地 图 显 示 窗 口, 第 四 是 结 果 显 示 窗 口. 下 面 我 们 要 打 开 一 个 矢 量 图 层, 在 图 形 操 作 界 面 上 用 鼠 标 点 击 Add a vector 图 标, 就 会 出 现 如 下 界 面 : 8
我 们 点 击 下 面 的 那 个 Vector map 图 形 按 钮 后, 在 弹 出 的 列 表 中 选 择 一 幅 矢 量 地 图, 如 road, 然 后 转 换 到 地 图 显 示 窗 口, 点 击 第 一 个 图 表, 那 么 公 路 这 一 矢 量 图 层 就 显 示 出 来 了, 如 下 : 9