3.4. 用自由/开源软件处理空间数据

想象一下,您已经确定了一些要在网络地图中使用的空间数据,但是这些数据还不完全符合您的目的。它所涵盖的区域比您的研究区域更广,并且您希望它处于不同的投影范围。也许您有一个栅格DEM需要转换为山体阴影,或者您想插入一些可以在时间序列动画中使用的栅格表面。确实,在将数据集合并到网络地图中之前,可能需要对其进行很大的预处理。

在这些情况下,您需要:

  • 确定可以帮助您进行数据处理的自由/开源软件工具;

  • 学习如何成功使用工具;

  • 记下你做了什么,这样你就能记住以后怎么做了!

如果你习惯了一个专有的地理信息系统软件包,其中包含数百个现成的工具和统一的文档,那么迁移到自由/开源软件可能会让你感到沮丧。把一系列工具拼凑起来,收集零碎的文档,似乎是在浪费宝贵的时间。这是你在使用自由软件时所做的权衡。幸运的是,要学习的操作数量是有限的,而且大多数情况下,您可能要执行十几个或更少的常见操作之一,例如选择数据、投影、剪裁和缓冲。一次学会如何做之后,您可以返回并对任何数据集重复这些步骤,尤其是当您记下了很好的笔记时。此外,用脚本编写这些操作或批量运行它们可能比使用专有软件所需的开销和处理时间更少。

这不是一门关于空间数据处理的课程;但是,本课程试图给您一些使用自由/开源软件进行数据处理的经验。您将学习一些处理数据处理的资源,并了解如何使用新工具。

3.4.1. 本课程中用于数据处理的工具

在本课程中,您将使用QGIS及其相关插件作为数据处理的GUI工具。您还将学习如何使用GDAL和OGR命令行实用程序。下面将更详细地解释这些问题。

3.4.1.1. QGIS

QGIS提供了许多最常用的矢量和栅格处理工具。此外,QGIS用户社区的开发人员还提供了可以扩展QGIS功能的插件。

打开QGIS并浏览Vector菜单,查看处理矢量数据的一些操作。您将注意到用于合并、汇总、相交、缓冲、剪裁等的工具。

../../_images/qgis34_692_1.PNG

图3.2 QGIS地理处理工具菜单

右键单击矢量层时,某些最强大的选项隐藏在“导出”上下文菜单项中。“将特征另存为...”对话框允许您在不同格式之间转换数据(例如,将shapefile转换为GeoJSON),然后将数据重新投影到新的坐标系。

../../_images/qgis34_692_2combined.png

图3.3矢量数据的QGIS另存为菜单选项

现在,返回到QGIS屏幕的顶部,单击“栅格”菜单以查看处理栅格的一些选项。请注意,您可以扭曲、剪裁、等高线和插值为栅格格式,以及其他各种操作。

除了这些常见的矢量和栅格处理选项之外,QGIS屏幕顶部的processing>Toolbox菜单还为您提供了一个可停靠的侧窗口,您可以访问许多其他功能,其中一些功能比其他功能更模糊。这个工具箱类似于您在Esri软件中看到的完整的“ArcToolbox”。一个区别是它包含来自多个软件包的工具,包括GDAL、GRASS和SAGA(一个流行的用于处理raster的开源库)。我在这个工具箱中使用的一个更常见的“算法”(在QGIS中称为“算法”)是Create Grid,它可以创建正方形或六边形的网格,用于地图“装箱”,或者换句话说,聚集到形状一致的区域,以便更好地显示点模式。创建六边形晶格是一项不易手工完成的任务,非常适合预先封装的工具。

如果您在上述任何位置都没有找到想要的东西,则可能有人为它开发了一个插件。QGIS附带了一些已经安装的更有用的插件。单击插件>管理和安装插件以查看它们的含义。如果您不喜欢其中的插件,可以在此处禁用其中的一些插件。

如果要添加更多插件,可以通过单击“未安装”直接从该对话框中进行添加。现在就这样做,并检查您可以添加的一些插件的描述(列表可能与您在下面看到的有所不同)。

../../_images/qgis34_692_3.PNG

图3.4 OpenLayers的QGIS插件安装

你甚至可以选择一个并安装它,如果你喜欢的话。上面显示的OpenLayers插件是在QGIS中查看OpenStreetMap、Google地图等的一种便捷方式。这个插件在QGIS 3中仍然被声明为“实验性的”,所以很可能只有当你首先点击Settings选项卡并选择显示实验性插件的选项时,你才能看到这个插件。插件将在Web菜单中添加一个新条目,您可以从中选择不同的basemap选项。请注意,插件的质量和可用性可能会有所不同。

3.4.1.2. GDAL和OGR实用程序

许多空间数据处理功能使用众所周知的逻辑或已记录的算法。如果每个FOSS开发人员必须从头开始编写这些相同的操作,这将导致额外的繁琐工作,并可能导致错误和不一致。因此,许多FOSS程序利用称为GDAL(地理空间数据抽象库)的单个开源代码库来执行最常见的功能。

GDAL通常被认为是栅格处理库。但是在GDAL中,有一个重要的矢量处理功能存储库,称为OGR简单功能库。在使用FOSS时,您会多次听到GDAL和OGR术语,因此请习惯它们。 您可以感谢一个名叫Frank Warmerdam的人长期启动和维护这些库。尽管您可能从未听说过他,但您可能已经做过一些事情可以在某一点或另一点运行他的代码。

使用GDAL和OGR的一种方法是从QGIS或其他一些基于GUI的程序启动函数,就像从上面的菜单选项中获得的一样。另一种方法是用Python、C#或其他直接调用这些库的语言编写代码。在复杂度和灵活性方面位于中间的第三种方法是使用命令行实用程序调用GDAL和OGR。这些实用程序是在安装QGIS时为您安装的。你将在课程演练中感受到它们。

3.4.1.3. 其他工具

还有许多其他的FOSS工具可用于处理空间数据。新的东西总是出现。 在本课程的稍后部分,您将需要找到一个,对其进行测试,对其进行复习并与班级共享。成为一名探险家,如果您发现适合自己的东西,那就坚持下去。当然,您可以使用任何适合您的FOSS工具来完成术语项目。