(5) 进阶QGIS操作

1. 近邻分析

GIS非常适合用于分析图征的空间关系。这些分析的其中之一是为特定的图征寻找最接近的另一个图征,这时QGIS的距离矩阵(Distance Matrix)工具就可以派上用场。在本教学中,会使用2个数据集,并且寻找这两个图层中,哪些点彼此最为靠近。

内容说明

已有许多重要地震位置,现在要找出这些离地震最近的人口聚居地。

会学到这些

• 如何在QGIS中操作数据表连结(如需更多介绍请看 数据表连接 )

• 使用查询建构器来显示图层中的次群组

• 使用MMQGIS附加组件画出枢纽线以呈现近邻分析的结果

取得资料

这里使用NOAA的美国国立地球物理数据中心(NGDC)的 Significant Earthquake Database ,内含所有的全球重大地震。下载 地震资料的tab分隔文件

NaturalEarth上有不错的 人口居住地数据库 ,其中也有 简化版(字段较少)的数据库

为了方便起见,也可以直接用下面的连结下载这两份数据集:

signif.txt

数据源:[NGDC][NATURALEARTH]

操作流程

打开QGIS,选择图层→加入分隔文字图层,然后选择刚下载的signif.txt。

这个档案是Tab分隔檔,所以可以在文件格式字段选择定位键。程序会自动选择X和Y字段,所以按下确定即可。

批注

可能会看到QGIS显示读取档案的时候出现了一些错误,这是由于档案中的某些值异常所引起的,这些异常的数据不会被读取。在本教学中,就先忽略这些错误没关系。

由于地震数据采用经纬度坐标,输入的CRS应该会采用EPSG:4326,可在窗口右下角检查是否正确。接下来来开启人口聚居地图层,选择图层→加入向量图层。

选择刚下载的ne_10m_populated_places_simple.zip并按下确定。

稍微缩放一下浏览这两个数据库。每个紫色的点都是一个重要地震,而每个蓝色的点都是一个人口聚居地(注:点颜色可能会不同,请对照图层各自的名字)。要做的是为每个地震点找出最接近的人口聚居地。

选择向量→分析工具→距离矩阵。

在开启的窗口中,「输入点图层」选择signif,「目标点图层」选择ne_10m_populated_places_simple。此外,还要为这两个图层选择一个「唯一ID字段」(每个点的此域值都不相同),输出档将会依照此字段显示。在此例中,只要寻找最接近的1个点,所以要勾选仅使用最邻近(k)目标点,然后输入1。把输出档命名为matrix.csv,然后按下确定。程序执行完毕后,点选关闭。

批注

有件事值得一提:可以只针对单一图层执行近邻分析,只需要把输入点图层和目标点图层都设为相同图层即可。输入就会是在1个图层中的点的近邻结果。

程序执行完毕后,在距离矩阵窗口点选关闭。现在可以使用Notepad或任何的文本编辑器浏览matrix.csv。QGIS也可以把此档案汇入,这样就可以把结果加到QGIS中浏览了。选择图层→加入分隔文字图层。

选择刚刚产生的新档案matrix.csv,因为它只包含了文字的字段,所以要在几何字段定义选项中勾选无几何字段(仅产生属性表格)。按下确定。

现在此CSV档案已以表格的形式汇入QGIS中。在这个表格上右键单击,选择开启属性表格,

现在就可以看到近邻分析的结果了。InputID字段是从地震的图层过来的,TargetID则是从人口聚居地的图层过来的,代表距离地震最近的人口聚居点。Distance则是2个点的距离。

批注

这里距离的计算是使用图层的CRS,也就是说因为来源图层是经纬度坐标,输入距离的单位也会是角度。如果想要把距离用公尺呈现,在执行近邻分析之前,要先重投影输入的图层。

本结果已相当接近想要的样子。对某些用户来说,得到一张表格已显足够;然而,可以把结果进一步连接到原本的地震图层属性表格上。以右键点选地震图层,选择属性。

前往连结(Joins)的分页,按下+按钮。

连接分析结果到此图层上,所以必须要为两个表格各选择一个能够连接起来(具有相同数值)的字段。为连结(Join)图层选择matrix,再为连结字段选择InputID,而目标字段就选择I_D。其他选项使用默认值,最后按下确定。

在连结(Joins)的分页中,就出现了一笔连接信息。按下确定。

现在在signif图层上右键单击选开启属性表格。

现在每个地震的图征,都多了新属性显示最近的(人口聚居地)点图征,以及其距离。

接下来要来看看怎么视觉画这些结果。首先,要另存新图层,把数据表连接的结果永久保存下来。以右键点选signif然后选择存盘为…

点选在另存为字段侧边的浏览钮,把新档案命名为earthquake_with_places.shp,确认一下加入储存档案至地图中有开启,最后按下确定。

新图层加载后,就可以把signif图层取消勾选以隐藏起来。由于本数据集相当大,所以可以先对数据集的一部分进行可视化试试看。QGIS可以不用另存新档或汇入新图层,就载入某个图层的子集。在earthquake_with_places上以右键点选进入属性。

在「一般」分页中,找到Feature subset(或Provider feature filter)的字段,选择查询建构器。

本教学中,要把焦点放在墨西哥附近的地震和人口聚居地。因此,请在查询建构器中输入以下的表达式。

"COUNTRY"='MEXICO'

可以看到在QGIS窗口中,只剩下落在墨西哥境内的地震会显示。接下来对人口聚居地的层进行相同操作,在ne_10m_populated_places_simple上以右键点选进入属性。

在「一般」分页中,开启查询建构器,输入以下的表达式。

"adm0name"='Mexico'

数据呈现的准备已经完成。接下来要使用一个称为MMQGIS的核心附加组件,可参考 使用附加组件 进行搜寻及安装等相关操作。安装后,选择MMQGIS→Create→HubLines。

Hub Point Layer字段选择ne_10m_populated_places_simple,Hub ID Attribute字段选name,Spoke Point Layer字段选择earthquake_with_places,Spoke Hub ID Attribute字段选择matrix_Tar。此程序会藉由比对属性域值,把每个地震点和最邻近的人口点用线连接起来。点选Browse然后把Output Shapefile命名为earthquake_hub_lines.shp,最后按下确定开始执行。

程序可能会花几分钟时间。可在QGIS屏幕左下角看到目前进度。

处理结束后,earthquake_hub_lines图层会载到QGIS中,可以看到现在每个地震都附带一条线,连接到最接近的人口聚居地。

发表评论

邮箱地址不会被公开。 必填项已用*标注