Quantum GIS:开源地理信息系统

作者:James Gray

如果您曾经使用 Google Earth 环游全球,您就会知道使用地理空间数据是多么有趣。当我想放松一下时,我经常启动 Google Earth,漂浮在曼哈顿的摩天大楼之上,或重访以前常去的地方。

为了更深入地控制地理空间信息——您是烹制整个炖菜的厨师——请深入地理信息系统,或 GIS。GIS 让您可以控制构成您想要探索的地球物理世界的全部要素。将 GIS 简化到本质,您可以称之为计算机辅助制图。然而,由于 GIS 由数据库驱动,因此高级分析的机会远远超出您使用纸质地图所能做的任何事情。GIS 不仅会让您感觉世界掌握在手中——注意那种“我扮演上帝”的感觉——而且您也可能会将其用于工作或私人生活做一些非常有用的事情。

本文介绍了一个使用 Quantum GIS (QGIS) 的示例项目,QGIS 是最先进和功能强大的桌面开源 GIS 软件包之一。尽管 QGIS 有一些优秀的文档,但新用户可能会觉得术语有点生硬,并且缺少一些信息。文档的作者假设您已经熟悉 GIS,并且您是从专有替代方案(例如 ESRI 流行的 ArcGIS)转向 QGIS 的。另一方面,我假设您以前从未使用过 GIS。

QGIS 测试项目:寻找建筑用地

为了说明桌面 GIS 的一些基本功能,我使用 QGIS 为我的一个幻想做准备,那就是创建一个生态友好的房地产开发项目。在这个练习中,我将在密歇根州沃什特纳县安娜堡附近找到一块农业用地,在那里我可以恢复以前的湿地并在附近建造一片房屋。我选择安娜堡是因为它靠近农村地区排水的湿地,以及当地对野生动物众多地区房屋的需求。

为了完成这项任务,我将探索如何在您的系统上加载 QGIS;查找任务所需的地理空间数据;将数据加载到 QGIS 中;以及查看、设置和分析数据以完成手头的工作。在此过程中,我将介绍关键概念和重要术语。

在您的系统上获取 QGIS

QGIS 拥有一个实用、全面的网站,其中包含大量资源,可帮助您入门。除了免费应用程序下载外,您还可以找到维基、帮助论坛和大量文档。QGIS 有 Mac OS X、Windows 和 Linux 用户的几个变体版本:源代码、Debian、Ubuntu Gutsy 和 OpenSUSE。考虑到提供了存储库,安装应该简单明了。您只需将必要的存储库添加到您喜欢的软件包管理器即可。如果您必须从源代码安装,则有大量在线指南解释该过程。有关 QGIS GUI 的外观,请参见图 1。

Quantum GIS: the Open-Source Geographic Information System

图 1. 应用程序 QGIS 0.10 提供了一个简洁、直观的用户界面。

GIS 是一个复杂的应用程序,需要了解数据格式、GIS 的功能以及一般制图知识。让我们快速浏览一下 GIS 的基本知识。

GIS 需要地理空间数据

如前所述,使用 GIS 本质上是在计算机上进行地图绘制。要进行此地图绘制,您需要查找与地理相关的数据,通常称为地理空间数据。我们将引入 QGIS 的地理空间数据由两个要素组成,即空间要素和属性数据。空间要素的示例可能包括街道、河流或土地覆盖——您可能在地图上找到的任何要素。同时,属性数据描述了空间要素的特征,并存储在 GIS 内的数据库中。例如,大多数街道都有名称和长度;土地覆盖类型具有与之相关的名称和面积。在土地覆盖的情况下,GIS 可能会存储与属性相关的类别,例如高密度城市、低密度城市、农田、森林等,然后您可以轻松查询这些类别。

剥离图层

如果您的纸质公路地图被命令“只显示河流和山脉,请”或“打开和关闭县界”,它会认为您完全疯了。另一方面,由于 GIS 以地理要素的相似分组(称为图层)来描绘数据,因此您的计算机将执行您的命令,而不会给您贴上疯子的标签。图层的一些示例是国家、城市、河流和海洋。GIS 允许您控制屏幕上随时显示的图层。

图层可以由两种类型组成,即要素和表面。在我们上面的列表中,包含国家、城市、河流和特定建筑物的图层是基于要素的;海洋是一个单一的、连续的广阔区域,因此是一个表面。

GIS 如何格式化数据:矢量与栅格

GIS 的巨大挑战是以准确且快速的方式描绘我们可爱而复杂的世界——而无需集群!GIS 使用两种技巧或方法来创建地球要素在您桌面上的数字表示。

第一种方法是使用矢量数据(本文后面使用的类型)。尽管世界可能很复杂,但 GIS 可以使用三个几何元素(即点、线和多边形)来表示任何地理对象。社区中心和交通信号灯等小物件可以描绘为点。河流和管道等要素实际上只是美化的线条,因此可以这样显示。最后,几乎所有其他东西,例如州立公园,尽管它可能形状奇特,但在一天结束时是有限的并包含在边界内,使其成为一个多边形。从广义上讲,矢量格式类似于传统地图,其中世界被符号化抽象,精度非常重要。

第二种方法是栅格数据。栅格数据用于描绘地球的视觉上没有形状的特征,包括海洋深度、森林覆盖类型、海拔和年降雨量等测量值。您将遇到的一些图像类型包括 GeoTIFF、Erdas Imagine Images、GRASS AIG 和 USGS 数字高程模型。基于栅格的图像的一些常见示例是卫星图像和航空照片。在这两种类型的栅格图像中,每个单元格的值是对地球表面反射的光的测量。这些值的特定范围可以表示特定的土地覆盖或植被类型。

GIS 中的矢量数据格式

当您在 GIS 世界中畅游时,您还会遇到大量的基于矢量的空间文件格式。如果您曾经使用过 ESRI 的 ArcGIS 应用程序,您可能熟悉地理数据库和 coverage,这是专有 GIS 中最常见的两种空间文件格式。在这两种更高级的空间数据格式中,只有 coverage 可在 QGIS 中使用,但地理数据库则不能。此外,在 QGIS 中,我们可以使用 ESRI shapefile,它在在线数据存储库中非常丰富,并且是一种标准,因为它们已经存在很长时间了。事实上,shapefile 是 ESRI ArcView 的标准格式,ArcView 是该公司上一代 GIS 应用程序。本质上,shapefile 是一组包含基于矢量的位置和属性数据的文件,可以在 GIS 应用程序中表示。

QGIS 还支持其他一些文件格式,例如 MapInfo 和 PostGIS。PostGIS 特别有趣,因为它是一种开源空间数据库技术。PostGIS“空间启用”PostgreSQL 服务器,允许它用作 GIS 的后端空间数据库,并且——对于那些熟悉 GIS 技术的人来说——因此,它类似于 ESRI 的 SDE 或 Oracle 的 Spatial 扩展。

一些硬核制图学:投影和坐标系

对于任何制图工作,另外两个重要的概念是地图投影和坐标系。

还记得您四年级教室里挂着的那张大的、平面的世界地图吗?格陵兰岛比非洲还大的那张?这张地图是理想的例证,说明当您将地球这样的圆形物体描绘到平面地图上时会发生什么。将 3D 地球转换为 2D 地图称为地图投影。

在 GIS 中,您需要考虑投影,因为您查看或创建的任何地图本质上都像纸质地图一样是平面的。因此,相同的概念适用于两种情况。

与地图投影同样重要的是坐标系。坐标系是笛卡尔 x 和 y 轴系统,GIS 使用它来定义地图上的位置。这与定义球体上位置的纬度和经度系统相反。

在较大的项目中,投影和坐标系的知识非常重要,如果项目不同部分之间存在不匹配,生活可能会很快变得令人沮丧。幸运的是,这个项目足够简单,可以避免太多担忧,因为我在县级工作,而且我的所有 shapefile 都来自同一数据源。但是,当处理较大区域和多个数据源时,熟悉这些概念并标准化您的投影和项目范围的坐标系非常重要。

理论够了,让我们获取一些数据!

在这一点上,我们有足够的 GIS 理论来理解我们在做什么,并开始房地产规划项目。在这个阶段,我跟踪所需的数据。

这个项目涉及在密歇根州沃什特纳县找到一块土地,在那里我可以建造一片位于自然环境中的房屋。我正在寻找一块合适的土地,它曾经是湿地,但现在是农业用地,适合恢复为湿地。理想的地点将靠近河流或湖泊,交通便利,并且尽可能靠近安娜堡市。

当您开始基于 GIS 的项目时,明智的做法是指定您需要的所有要素,因为一般来说,每个要素都可能是您必须获取的图层之一。因此,对于这个项目,我们需要分别描绘土地利用、具有湿地恢复潜力的区域、道路和水文(河流和湖泊)的图层。一般来说,每个图层最常见的格式将是 shapefile 格式,QGIS 可以轻松处理。

那么我在哪里可以获得这些 shapefile 呢?幸运的是,存在大量优秀的免费、可下载的地理空间数据存储库。一个很好的例子是公共密歇根地理数据图书馆 (MGDL),它提供了大量流域、县和州级别的矢量和栅格数据。可用数据集仅包括我正在寻找的那些,以及整个州的航空照片、联邦人口普查信息、地质、土壤类型、公共土地所有权和地形。在 MGDL 中,基于矢量的数据的默认格式是 shapefile。

从 MGDL,我可以下载以下县级数据集

  • 密歇根地理框架水文(湖泊和河流)。

  • 1992 年国家土地覆盖数据集。

  • 密歇根地理框架交通运输(道路)。

  • 潜在湿地恢复。

将 Shapefile 加载到 QGIS 中

将 shapefile 加载到 QGIS 中是通过单击标记为“添加矢量图层”的工具栏图标来完成的,该图标看起来像一个加号悬停在地图上;它会打开一个标准的打开文件对话框。通过从“文件类型”中预选 ESRI shapefile(后缀 .shp),我可以确保我正在打开正确的文件,这很有用,因为 shapefile 实际上是一组文件。当我加载每个 shapefile 时,它会在左侧“图例”窗口下的原始名称下显示,该窗口充当某种目录。

解压数据集后,我按以下顺序加载这五个 shapefile:allroads_161v7b.shp(道路)、hydro_161v7b.shp(河流)、hydropoly_161v7b.shp(湖泊)、Washtenaw_Potential_Restoration_Area.shp(名称说明了一切)和 Washtenaw_nlcd_1992.shp(土地利用)。

让事物看起来正确

不幸的是,加载 shapefile 后,在“地图视图”窗口右侧显示的地图总和看起来像一个大矩形,上面覆盖着随机的黑色和绿色斑点,没有线条。我加载的道路、湖泊和河流在哪里?奇特的显示和缺少要素的一个原因是,我首先添加的图层被县级土地利用图层覆盖了,该图层位于所有其他图层的顶部。我可以开始通过将土地利用图层向下拖动到“图例”的底部并调整其他图层来解决这个问题,以便它们都可见。

地图看起来奇怪的另一个原因是 QGIS 默认显示 shapefile 中每个特征的一种颜色。对于道路图层,默认使用一种颜色是可以的,因为它只是一组线条。但是,包含数千个多边形的图层更复杂。所有许多土地利用类型都默认为相同的颜色,因此它们之间没有区分。我必须手动为每种土地利用类型提供自己独特的颜色。为此,我首先右键单击图例中的土地利用条目,然后从菜单中选择“属性”。在“符号系统”选项卡上,我将“图例类型”旁边的下拉菜单从默认值“单一符号”更改为“唯一值”。使用“分类字段”中的下拉菜单,我可以选择数据库中要分类的字段。在我的例子中,我分类了一个名为 GRIDCODE 的字段,其中包含指定图层中每个多边形的土地利用代码的代码。

我如何知道我应该分类哪个数据库字段,以及每个分类的含义?为了弄清楚,有时我需要离开“图层属性”菜单并检查属性表,属性表是包含图层属性数据的数据库的显示。例如,我可以右键单击“图例”(在主 GUI 上)中的标题,然后选择命令“打开属性表”来检查土地利用图层的属性表。图 2 显示了属性表的示例。土地利用属性图层包含一个字段 ID 来指定每个多边形,以及一个字段 GRIDCODE 来分类每个多边形。通常,属性表还包含一个字段,其中包含每个分类的标签。虽然土地利用属性表中缺少这样的字段,但在下载的数据集中包含的文本文件中找到了一个单独的包含分类的文件。

Quantum GIS: the Open-Source Geographic Information System

图 2. 属性表显示了特定图层(例如 shapefile)中包含的数据。

在查阅属性表和包含分类的文件后,我准备好继续在“图层属性”菜单中对字段 GRIDCODE 进行分类。按下“分类”按钮会在下面的窗口中填充图层中找到的唯一分类代码。我可以使用“标签”字段随意标记每个分类,并且可以使用“填充颜色”选项为每个分类提供自己的颜色。

完成分类后,我还想做更多的内务处理,以使“图例”和“地图视图”更有用,例如使其他图层的颜色更直观(例如,蓝色湖泊)并加粗指定道路和河流的线条。我也可以使用“图层属性”对话框来执行这些操作(右键单击图层名称→“属性”)。右键单击图层名称还让我可以选择更改“图例”中显示的图层名称。

内务处理后,QGIS 中的“地图视图”终于成形。我终于可以识别道路和河流等要素,并且现在土地利用类型已区分开来,我可以轻松分辨哪些区域是城市、农业、森林等。图 3 显示了最终结果。

Quantum GIS: the Open-Source Geographic Information System

图 3. 在修改每个图层的属性并更改“图例”中的图层名称后,“地图视图”变得可读并准备好进行分析。

为了简化地图上的视觉分析,我还将相同的颜色应用于相似的土地利用类别。例如,我对两个不同的农业类别以及三个不同的森林相关类别应用了相同的颜色。对于此应用程序,我只想知道土地利用是农业还是森林,而不是每种土地利用的具体类型。更少的颜色使我的地图不那么拥挤。

在 QGIS 中导航地图

尽管 QGIS 包含几个基本工具,但我在这里仅简要讨论三个工具:平移、缩放和识别要素工具。

导航图层周围最基本的工具是“平移”工具,即工具栏中手形图标。如果我单击该工具,我可以快速拖动我的地图在“地图视图”窗口周围移动。

但是,如果我想更改“地图视图”中的细节级别,我必须切换到“缩放”工具。尽管“缩放”工具的功能很直观,但请注意,由于以下三个原因,它在实践中令人失望地不直观。首先,“缩放”工具位于“视图”菜单中,并且不可用作工具栏选项。其次,“放大”和“缩小”功能仅在使用鼠标滚轮时才起作用。因为我使用笔记本电脑工作,所以我不得不购买一个 USB 鼠标才能拥有缩放功能。第三,与大多数 GIS 和图形应用程序不同,QGIS 不允许简单地在所需的缩放区域周围绘制一个框。

同时,“识别要素”工具更直接且不繁琐。要激活该工具,我只需按下工具栏图标,该图标由蓝色圆圈中字母 i 旁边的鼠标箭头指定。然后,我可以导航到“地图视图”窗口中的任何要素,并基本上调用该要素的特征——即其在属性表中的条目。但是,为了选择合适的要素,我必须在“图例”中选择正确的图层。例如,如果我正在搜索有关湖泊的信息,我不能在“道路”图层上——必须选择“湖泊”图层。图 4 显示了我如何单击一个大湖并了解其大小、海拔和名称福特湖。

Quantum GIS: the Open-Source Geographic Information System

图 4. “识别要素”工具为您提供有关特定要素的详细信息。请确保您已在“图例”中选择了正确的图层。

查找和保存理想位置

既然我已经介绍了 GIS 的基础知识,找到了所需的 shapefile,将这些文件加载到 QGIS 中并探索了基本导航,现在是时候查找和记录我的住房项目的位置了。为了找到理想的地点,在那里我可以恢复安娜堡附近农业用地上的湿地,我在地图上平移和缩放,并打开和关闭图层。

搜索一段时间后,我决定保存一些地点以供日后参考。最好的方法是创建我自己的图层(shapefile)。为此,我单击工具栏中的“新建矢量图层”图标,并且因为我只需要特定位置,所以我选择基于点的 shapefile。与此同时,我必须构建一个属性表,这是通过单击“添加属性”按钮来完成的。我只需要一个基于字符串的字段,我将其标记为“位置”。

现在我有了自己的 shapefile,只要该图层在“图例”中处于选中状态,我就可以通过选择“切换编辑”工具向其中添加我自己的点。选择该工具后,工具栏上旁边的按钮“捕捉点”工具将被激活,我可以随意在任何地方创建点。我为我找到的每个潜在建筑工地创建一个点,并为每个点添加一个标签,正如 QGIS 提示的那样。我再次按下“切换编辑”图标以离开编辑模式并返回正常浏览模式。

到目前为止,QGIS 在为我提供自然和人造要素以及土地利用特征的广阔视角方面很有用。这远远超过几乎所有纸质地图或 Google Earth 将给我的信息。尽管如此,QGIS 无法完成所有事情。不幸的是,我可能无法获取包含当前土地所有权状态的 shapefile。因此,我必须利用其他资源,例如县书记员,才能了解谁拥有哪些地块。显然,我的工作才刚刚开始。

QGIS 的结束语

免费和开源的 QGIS 最终被证明是适用于涉及土地利用的项目的合适工具,例如我寻找恢复湿地和建造生态友好型住宅开发项目的地点。在这个项目中,我能够从免费的地理空间数据存储库中找到我需要的地理空间数据,将其加载到 QGIS 中,根据我的喜好定制数据,并指定大量潜在的建筑工地。除了土地利用项目外,您还可以深入研究人口统计数据、卫星和航空照片图像、其他自然和人造要素等等。尽管需要临时抱佛脚 GIS 概念和惯例,但使用 QGIS 和其他 GIS 应用程序,虽然一开始有点挑战性,但非常有用、有益且有趣。

资源

QGIS 主页:www.qgis.org

QGIS 下载存储库:download.qgis.org/downloads.rhtml

OSGEO 主页:www.osgeo.org

密歇根地理数据图书馆:www.mcgi.state.mi.us/mgdl

James Gray 是Linux Journal 产品编辑,也是密歇根州立大学环境科学与管理专业的研究生。自 20 世纪 90 年代中期以来一直是 Linux 爱好者,目前与妻子和猫一起居住在密歇根州兰辛。

加载 Disqus 评论