目录

上一主题

4.5. 属性表与CSV表连接

下一主题

4.7. 使用要素选择工具


本教程由OSGeo中国中心维护。

4.6. 空间连接

空间连接是个经典的 GIS 课题,如何基于空间关系,把相关属性值从一个图层转到另一个图层? 在 QGIS 中,有个称为"Join Attributes by Location"的工具,可以实现这一功能。 我们要使用 2 个图层,分别为"nybb_13c_av/nybb.shp"数据,以及"nursinghomes.shp"数据。 最终目标是使用空间连接,找出每个区的"nursinghomes"的总承载人数。 可以在这里下载资料:

http://www.qgistutorials.com/downloads/nybb_12c.zip

http://www.qgistutorials.com/downloads/OEM_NursingHomes_001.zip

4.6.1. 空间连接操作

1. 首先选择 Layer ‣ Add Vector Layer ,加载"nybb.shp"图层,对另一个文件加载"OEM_NursingHomes_001.shp"图层。 两个图层都加载后,右键点选"OEM_NursingHomes_001"图层,然后选择 Open Attribute Table , 如 图 4.40

_images/5_xg1.png

图 4.40 属性表

4. 查阅每个图征的属性,由于我们要计算的是"nursinghomes"的总承载人数,因此我们可使用 Capacity 属性来连接行 政区的边界图层,如 图 4.41

_images/6_x6f.png

图 4.41 查看属性表

  1. 选择 Vector ‣ Data Mangement Tools ‣ Join attributes by location ,如 图 4.42

_images/7_xf7.png

图 4.42 Join attributes by location工具

6. 现在 Input layer 是我们要加入新属性的图层,因此在本节中为区边界的 "nybb" 图层。而 Join layer 则 是"nursinghomes"的分布图层"OEM_NursingHomes_001"。由于我们想要把所有在同一区的"nursinghomes"乘载人数加总, 因此请选择"Take summary of intersecting features"然后选择 Sum 。输出档命名为"join.shp", 在 Output table 一栏中,选择 Keep all records ,如 图 4.43

_images/8_x3j.png

图 4.43 Join attributes by location设置

7. 处理结束后新的图层 "join",含有从"nybb"复制过来的图征,而且属性已与"OEM_NursingHomes_001"连接完成。右键点选新图层, 选择 Open Attribute Table ,如 图 4.44

_images/9_xwp.png

图 4.44 属性表

8. 因为我们做了相交的处理,可以看到属性表中出现的栏位"Capacit",比原图层的属性少了一些,这就是原本属于同一区 "nursinghomes"的"Capacity"属性相交,如 图 4.45

_images/10_x7u.png

图 4.45 查看属性表

9. 我们已经找到想要的资讯,但是在输出中还存在着其他我们不需要的栏位,让我们来清理一下。 点选 Toggle editing 然后选择删除栏 Delete column 按钮,如 图 4.46

_images/11_xp3.png

图 4.46 属性表操作

10. 在 Delete Attributes 视窗中按下 Control-A ,以选择所有栏位,然后按住 Control 键, 取消选取你想保留的属性,最后按下 OK ,如 图 4.47

_images/12_xq1.png

图 4.47 删除属性表属性

  1. 回到属性表格,再次按下 Toggle editing 以储存刚才的变动,如 图 4.48

_images/13_xy4.png

图 4.48 属性表

12. 回到 QGIS 主画面中,我们可以使用 Identify 工具,验证输出档中每个区的要素只具有我们想要的属性, 如 图 4.49

_images/14_xtv.png

图 4.49 效果图