空间连接是一个经典的 GIS 问题 - 根据属性的空间关系将属性从一个图层转移到另一个图层。在 QGIS 中,此功能可通过处理算法获得。Join attributes by location
任务概述
我们将使用 2 个图层 - 纽约市自治市边界的形状文件和纽约市所有街道街道路面评级的另一个形状文件。第一个任务是使用具有汇总算法的空间连接来查找每个行政区街道的平均评级。第二个任务是通过一对多空间连接将自治市镇的名称添加到街道要素中。
您将学习的其他技能
-
创建过滤器以暂时从计算中排除某些特征。
获取数据
纽约市开放数据门户是纽约市免费数据的绝佳来源。
使用门户上的导出选项下载自治市镇边界 zip 文件。
使用门户上的导出选项下载街道路面评级 zip 文件。
为方便起见,您可以从以下链接直接下载数据集的副本:
数据来源 [纽约市]
程序
-
在QGIS浏览器中找到该文件并将其展开。选择图层并将其拖动到画布上。这是一个面图层,表示纽约市的自治市镇边界。
nybb_19a.zip
nybb_19a/nybb.shp
-
接下来,找到该文件并将其展开。选择图层并将其添加到画布中。这是城市中所有街道的线图层。
V_SSS_SEGMENTRATING_1.zip
dot_V_SSS_SEGMENTRATING_1_20190129.shp
-
让我们检查图层的每个要素可用的属性。右键单击并选择打开属性表。
dot_V_SSS_SEGMENTRATING_1_20190129
-
您会注意到名为该属性的属性,该属性的值在 0-10 范围内,表示街段的评级。该属性具有描述性评级。我们可以使用该字段来计算平均评分。
Rating_B
RatingWord
Rating_B
-
您可能已经注意到某些功能的评级为 .这些是未评级的细分市场。将它们包含在我们的分析中是不正确的。在执行空间联接之前,让我们设置一个筛选器来排除这些记录。右键单击图层,然后选择过滤器。
NR
dot_V_SSS_SEGMENTRATING_1_20190129
-
在查询生成器中,键入以下表达式以选择所有未评级的记录。您还可以通过单击字段、运算符并选择适当的值来交互构建表达式。单击“确定”。
NR
"RatingWord" != 'NR'
-
您会注意到图层现在有一个过滤器图标,指示已将活动过滤器应用于此图层。现在我们可以使用此图层进行空间连接。转到处理 ‣ 工具箱。
dot_V_SSS_SEGMENTRATING_1_20190129
-
搜索并定位矢量常规 ‣ 按位置连接属性(摘要)算法。双击以启动它。
-
在按位置连接属性(摘要)对话框中,选择作为输入图层。街道图层将是连接图层。您可以将几何谓词保留为默认值 。单击要求和的字段旁边的 ... 按钮。
nybb
dot_V_SSS_SEGMENTRATING_1_20190129
Intersects
注意
帮助您选择正确的输入和连接图层的提示:输入图层是将在空间连接中修改新属性的输入图层。由于我们希望将平均评级字段添加到自治市镇图层,因此它将是输入图层。
-
选择并单击确定。
Rating_B
-
同样,单击“摘要”旁边的“...”按钮进行计算。
-
选择作为摘要运算符,然后单击确定。现在我们准备开始处理了。单击运行。
mean
-
处理算法将遍历要素并应用空间连接。验证处理作业是否成功,然后单击关闭。
-
回到QGIS主窗口,您将看到一个新图层添加到画布中。打开此图层的属性表。您将看到一个新列已添加到输入自治市镇图层,其中包含与该要素相交的所有街道的平均评级。
Joined layer
Rating_B_mean
-
现在我们可以执行反向操作。有时,您的分析需要根据空间关系从另一个图层获取属性,但不计算任何汇总。我们可以使用该算法进行此类分析。任务是根据与街道图层相交的行政区面,将自治市镇的名称添加到街道图层中的每个要素。在运行此算法之前,让我们从图层中删除过滤器。单击过滤器图标,然后在查询构建器中按清除。单击“确定”。
Join attribute by location
dot_V_SSS_SEGMENTRATING_1_20190129
-
在“图层”面板中转动。在处理工具箱中找到矢量常规 ‣ 按位置连接属性算法,然后双击它以启动。
Joined layer
-
选择作为输入图层和连接图层。您可以将几何谓词保留为默认值 。单击“要添加的字段”旁边的“...”按钮,然后选择 。单击“确定”。
dot_V_SSS_SEGMENTRATING_1_20190129
nybb
Intersects
BoroName
-
线段可能跨越自治市镇边界,因此我们选择 连接 类型为 。单击运行。
Crate separate feature for each located feature (one-to-many)
-
处理完成后,打开新添加的属性表。您将看到每个街道要素都添加了一个新属性。
Joined layer
BoroName