考古学与GIS—Linux之道
自从海因里希·施里曼寻找特洛伊城以来,考古学家一直面临着如何记录考古数据的空间特征,以及一旦记录下来,如何分析这些数据的困境。历史上,这些空间信息一直被记录在精度和比例尺各异的纸质地图上。当研究人员想要对这些数据进行分析时,他们需要花费数小时甚至数天的时间,将这些信息转录到新的纸质地图上,并手工进行繁琐的测量。随着研究人员开始利用地理信息系统 (GIS) 进行空间分析,这个耗时的过程正接近尾声。GIS最好被认为是空间数据的动态数据库。幸运的是,对于注重预算和质量的研究人员来说,最古老、最强大的GIS软件包之一 GRASS 可以在Linux上免费使用。

在 20 世纪 70 年代后期,考古数据的存储方法开始从纸质缓慢转向数字。随着廉价计算机的普及,考古学家可以看到数字存储空间数据以进行分析的优势。在这个时代,几家商业供应商开始开发原始的GIS系统,试图满足研究人员存储空间数据的需求。不幸的是,这些产品仅适用于矢量数据,完全忽略了栅格数据在分析中的实用性。美国陆军工程兵部队的建筑工程研究实验室 (CERL) 发现商业软件包中的这种疏忽太大了,因此决定解决方案是构建他们自己的基于UNIX的GIS,该GIS将融合矢量和栅格分析能力。由于这段代码是用联邦资金编写的,因此可以免费向公众提供。从这个项目中,GIS软件包地理资源分析支持系统诞生了,它更广为人知的缩写是“GRASS”。从 1982 年诞生以来,GRASS 已发展成为一个强大的GIS软件包,可以与昂贵的商业软件包相媲美,但仍然可以免费供公众使用。
麦格雷戈导弹靶场位于德克萨斯州西部和新墨西哥州南部的布利斯堡,面积略小于特拉华州。作为陆军长期以来对有效管理和研究承诺的一部分,布利斯堡聘请了德克萨斯大学埃尔帕索分校的考古研究中心 (ARC) 对麦格雷戈靶场的 180 平方公里区域进行 100% 的步行调查。首席研究员蒂姆·丘奇和布利斯堡首席考古学家加伦·伯吉特意识到,对于如此规模的调查,主要基于纸质的旧式调查方法是不可行的。此外,研究团队非常渴望利用该哨所其他科学家收集的空间环境和生态信息进行景观分析。
考古学家/计算机高手特雷弗·克鲁特和 R. Joe Brandon 受聘帮助开发处理预期大量数据的最有效方法,并确保这些数据与现有的生态数据兼容。R. Joe 还指导了考古现场工作人员在项目期间监控正在开发的数据采集方法的可行性。这种亲身实践的方法使特雷弗和 R. Joe 能够调整数据收集方法,从而使项目的各个方面无缝集成。
研究团队从一开始就认为,如果我们想实现我们的目标,一个灵活而强大的GIS软件包至关重要。考虑到预算中几乎没有额外的硬件或软件资金,而且整个项目必须在一台入门级奔腾PC(Gateway P-133,配备2GB硬盘和32MB内存)上运行,我们陷入了困境。在考虑了许多商业GIS软件包之后,我们确定在Linux下运行的GRASS是答案。GRASS提供了该项目所需的整套复杂的GIS功能,而Linux为我们提供了各种工具来应对我们知道不可避免的无数自定义需求。一旦做出决定,我们很快就在短时间内启动并运行了Linux(Red Hat 4.0),然后下载了GRASS(v4.2)的编译二进制文件。这一切的成本大约相当于野外工作人员在沙漠酷热中调查一天后购买茶点所花费的费用。
从一开始就知道我们的野外数据将与基于栅格(单元)的环境和生态数据集成,研究团队决定为调查开发一种基于栅格的野外方法。乍一看,这个决定似乎非常实用。但在实践中,它却成为该项目最大的挑战。传统的野外方法主要侧重于界定考古集中地(遗址)的边界,因此是基于矢量的。我们正在开发的方法侧重于网格单元或“单元”内材料的分布,是基于栅格的。我们如何将这些单独的栅格单元组合在一起以界定我们的遗址?
为了速度、灵活性和一致性,我们决定开发计算机程序来为我们完成这项单调的工作。由于我们需要快速获得这些程序,因此在设置 Linux 和 GRASS 的同时,最初的原型设计是使用 Qbasic 完成的。最终,我们将这些程序转换为全面的 Tcl 脚本套件和许多 Bash shell 脚本。这些脚本使我们能够自动化导入野外收集的数据、动态定义遗址边界、提供遗址清单报告、将数据导入 GRASS、运行一套空间测试和比较,以及输出完成的遗址和项目地图。如果没有 Linux 的强大功能和稳定性以及 GRASS 的互操作性,这些任务将花费大量时间。
野外工作进展迅速。180 平方公里的调查区域中的每一个都被划分为 16 平方米的“单元”网格,该网格与 GRASS 内的分析栅格单元的大小相匹配。图 1 显示了一个平方公里调查单元的结果,显示了文物分布、遗址边界和 100 米网格。遗址边界是使用 GRASS 模块 r.to.vect 创建的。地图输出是在可以发送到屏幕或打印机的脚本文件中创建的。单元的大小,边长 16 米,是在精度(较小单元)和效率(较大单元)之间的权衡。野外工作人员将使用 1:3,000 比例的航空照片遍历这些调查区域,并在照片上叠加 16 平方米的网格。这些航空照片的细节使领队能够快速而一致地导航到接近亚米级的精度。当工作人员在调查区域中行走时,工作人员会喊出他们何时发现了文物或特征,然后领队会喊回该“单元”对应的行号和列号。然后将此信息记录在数据记录表上。在实验室中,检查此信息的准确性和错误,输入到基于 DOS 的数据文件(在从废品堆中回收的配备 40MB 硬盘和 2MB 内存的 386 计算机上),然后迁移到 Linux 环境。
随着项目的展开,很明显,大量涌入的数据会让我们不得安宁。每天,六个野外工作队都在地面上覆盖数千个单元,并发送回大量数据。图 2 显示了 GRASS 为研究区域的小部分生成的显示结果。这显示了各种调查单元、道路、遗址边界、文物和特征。地图输出是在可以发送到屏幕或打印机的脚本文件中创建的。由于数据处理程序的开发与野外工作的开始同时进行,我们很快就积压了大量数据需要处理。由于 180 个调查区域中的每一个都以相同的方式处理,因此我们依靠脚本化冗余任务的强大功能来提高我们跟上数据流的效率。一旦我们的程序经过测试、调试并上线,我们就很快赶上了进度,并能够跟上野外工作队的步伐。最终,我们完成了有时似乎不可能完成的任务。我们深信,Linux 下提供的强大的脚本和开发工具,加上 GRASS 下提供的复杂的 GIS 程序,使我们能够成功应对在我们的项目中遇到的困难且有趣的挑战。同样重要的是,我们能够在按时且低于预算的情况下完成该项目,同时创建了任何地方最具活力的空间考古数据库之一。回想起来,我们意识到,即使预算更多,我们也不可能比利用 Linux 和 GRASS 的优势做得更好。
尽管我们能够自动化许多与调查工作相关的任务,但我们从未能够充分发挥 Linux/GRASS 组合的潜力,以协同自动化几乎所有这些任务。我们认为,未来的项目可以建立在迄今为止完成的工作之上进行设计。该项目可以包括为野外工作队配备差分校正 GPS 接收器和数据记录器,以实时记录和校正野外数据。然后可以在一天结束时下载这些数据,并将其馈送到 Postgres 数据库引擎中,这将提供无缝的数据输入和操作。诸如 nroff/troff 或 LaTeX 之类的文本格式化软件包将用于自动化生成特定遗址的报告和文档。GNUplot 可用于生成必要的图表。GRASS 将用于空间显示分析。
我们设想,通过脚本链接,有一天,以这种方式收集的野外数据可以被下载,并在一个小时内,完全格式化和详细的遗址报告和地图将开始从打印机中弹出。考虑到使用传统方法,原始数据的输入和完成的特定遗址文档之间的时间间隔通常以周或月来衡量,我们认为这种更高层次的集成不仅是可行的,而且是明智的。通过利用 Linux 免费提供的工具,我们相信在这个领域可以为研究人员提供很多帮助。我们很高兴看到 Linux 和 GRASS 的开发都得到了各自社区的积极推动,并期待充分利用这些工具的潜力。
尽管上述项目主要引起其他考古学家的兴趣,但适用于 Linux 的强大 GIS 软件包的可用性引起了更广泛的 Linux 社区的兴趣,特别是地理学家、地质学家和其他处理空间数据的研究人员。
在 90 年代中期,在 CERL 的未来开发资金停止后,GRASS 的开发停滞了几年。国际 GIS 社区担心,栅格分析 GIS 软件包之父 GRASS 最终可能会走向消亡。1997 年 11 月,德克萨斯州贝勒大学成立了“GRASS 研究小组”,结束了这种担忧。该小组承诺继续开发 GRASS。他们对 GRASS GIS 平台的持续维护和开发感兴趣,并从 CERL 获得了 GRASS 的版权。
与对 GRASS 的这种重新支持相吻合的是,世界各地 Linux GRASS 用户的数量呈爆炸式增长,以及 CPU 的速度足以处理强大的 GIS 软件包可以交付的大量数据。作者认为,国际 Linux 社区的增长是 GRASS 获得新生的主要催化剂。随着贝勒大学继续开拓新道路,大量用户急切地等待着每次更新。如今,开发工作仍在积极进行,其中大部分是由 Linux 社区的用户推动的。由于 Linux 的稳定性、速度和强大功能,以及它将一台普通的 PC 变成强大的 UNIX 工作站的能力,GRASS 在 Linux 用户社区中找到了自己的位置。
自 1998 年以来,Linux GRASS 一直由 Markus Neteler 开发,代码可在 http://www.geog.uni-hannover.de/grass/ 和多个镜像站点上免费获得。可以从该站点获得其他 UNIX 版本的 GRASS。GRASS 4.2.1 软件包的每月更新在汉诺威发布。除了错误更正外,这些更新还包括来自独立 GRASS 程序员的新模块,这些模块是从国际社区收集并集成到系统软件包中的。
GRASS 是最后一个完全由命令行驱动的主要 GIS 软件包。GRASS 最近的一个重大改进是创建了一个基于免费分发的 Tcl/Tk 库的平台无关的图形用户界面。这项工作的主要承担者是法国的 Jacques Bouchard。该界面 TCLTKGRASS 为用户提供了用于 GRASS 命令和模块的简洁 GUI 界面,以及通过标准命令行进行访问的途径。该 GUI 补充了 GRASS 的关键优势——它在系统级别运行,允许用户将全套 Linux 实用程序与 GRASS 结合使用。
当前发布的 GRASS 4.2.1 现在附带了 350 多个模块。除了用于栅格、矢量和点数据的标准 GIS 功能外,它还提供统计和图像处理功能。Markus 最近编写了一种名为“光谱混合分析”的算法,该算法执行亚像素分析和百分比的真实覆盖度。图 3 显示了 GRASS 模块的结果,该模块允许用户使用光谱混合分析模块对植被和土壤类型执行亚像素分析。左图显示了覆盖土壤的百分比。右图显示了遥感图像与地面实况图像之间的差异。黑色表示没有差异,红色表示差异很大。已知的野外错误解释了中间的红色。该模块可用于地质分析以及基于矿物光谱的矿物探测。此图像中的矢量线是使用模块 r.line 在遥感图像上创建的,这比数字化快得多。此图是使用 xfig 创建的,xfig 是一种具有良好地图比例尺功能的免费绘图工具。xfig 在 GRASS 中通过矢量和栅格导出模块支持。GRASS 用户还可以校正从小飞机上手持相机拍摄的非天底航空图像,并将其转换为准正射影像,用于面积或距离计算或制图目的。Linux GRASS 的概述、教程和示例数据也可以从 Markus 的德国汉诺威大学网站 www.geog.uni-hannover.de/grass/welcome.html 获得。
1999 年 2 月 1 日,贝勒大学和汉诺威大学同时发布了 GRASS 5.0 beta 版。这是 GRASS 多年来首次重大升级。需求量如此之大,以至于贝勒大学的下载量占整个大学互联网流量的 20%。迄今为止,已从汉诺威站点进行了数千次 Linux GRASS 的唯一下载,该站点目前每周传输 5GB 的数据。这个量还在稳步增加。GRASS 5.0 的稳定版本计划在初夏发布——在您阅读本文时。目前,正在收集错误报告并将修复程序应用于代码。代码也在进行修改,以使 GRASS 符合 64 位标准。
GRASS 5.0 最重要的新功能是栅格格式中的浮点支持和改进的站点格式。由于必须重写所有栅格模块,因此这是 GRASS 开发中的一个重大步骤。对于稳定的 5.0 版本,列表中还有其他几个项目。NVIZ 工具是一种强大的三维可视化工具,目前正在从 SGI 移植到 Linux 和其他 UNIX 系统,以帮助查看具有栅格/矢量/站点叠加特征的 3D GRASS 数据(图 4)。此工具允许用户将 3D 栅格数据显示为堆叠层,并以栅格、矢量和站点作为叠加层。它将是一个非常有用的(且备受追捧的)数据可视化工具。
为了鼓励用户开发 GRASS 程序,GRASS 5.0 程序员教程将很快推出。在不久的将来,GRASS 的发展将包括引入一种新的矢量格式。这是将 GRASS 继续发展为真正的 3D/4D GIS 系统的长期计划的一部分。它将包含改进的 3D 栅格格式和新的 3D 矢量格式。
一位朋友最近很好地总结了 GRASS 和 Linux 的未来。他即将离开一个研究职位,去一家州立机构工作,使用他们昂贵的现成 GIS 和遥感软件包;但是,他也曾在 Sun 工作站上使用过 GRASS。在他离开之前,他和我坐下来,获取有关在他的办公室 Wintel 机器上设置 Linux 工作站的一些信息。正如他所说,“我需要能够在稳定的平台上完成真正的空间工作,而这个平台不会崩溃;Wintel 上的那些商业软件包太容易出错了。” 当我将这最后一段话的副本发送给他时,他已经在办公室工作了几个月,他回复说:“你可以再说一遍,一遍又一遍又一遍......” 又一个迹象表明 Linux 巨头继续向工作场所进军。


