4.1. 使用关键项的属性组合¶
4.1.1. 在Excel中导入统计数据¶
1.数据准备
通过将Excel等电子表格的各种统计数据与某些地图数据相结合,绘制 专题地图 是GIS的基本功能。 本节介绍如何将属性数据与空间数据相结合。我们首先使用属性表的关键项(成为关键代码的特定字段)来描述属性组合。 关系数据库能够组合来自两个或多个表的相关内容以创建新的表。GIS中的属性绑定与此功能相同,并且可以将空间数据的 属性表和表格数据通过关联字段组合。
2.阅读统计数据
首先,使用Excel处理统计数据,以便可以将其与QGIS的边界数据结合使用。为此,将统计数据读入Excel。
如果我们所下载的数据有text文件,则我们进行一下操作,启动Excel并从主菜单 "数据-自文本.scv" 打开“打开文件”窗口。在此窗口中, 将所有Excel文件中文件名输入字段旁边的目标文件,格式选择更改为“所有文件”,然后选择相应文件夹。 指定“省人口.txt”并单击 打开 按钮。出现“文本文件向导-1/3”时,在“原始数据格式”中选中“按分隔符 (如逗号或制表符分隔每个字段的数据)”,然后单击 下一步 按钮,如 图 4.1 。

图 4.1 文本文件向导¶
“文本文件向导1-2/3”确认“分隔符”的“逗号”中有检查,点击 下一步 按钮。请注意,由于显示数据的Excel工作表 被赋予了已读取的文件名,因此在这种情况下工作表名称为“省人口”。读取后,将此数据保存为“人口普查(小区域)”文件夹中名 为“全国人口普查.Xlsx”的Excel工作簿(.xlsx)文件。
4.1.2. 边界数据处理¶
1.绘制边界数据
将Excel处理的统计数据与QGIS结合到边界数据中。为此,启动QGIS,绘制边界数据。在这项工作中,我们将使用创建的人口密度.qgs。 启动QGIS,在主菜单中读取“人口密度.Qgs”, 导航到
,图层名称 "China100w2015_region" , 绘制了另一个人口密度图。2.关于边界数据的说明
将统计数据与此边界数据相结合时应小心。右键单击 Layers 中的“市界”以显示菜单, 选择 Open Attribute Table ,然后检查属性表。在PROVINCENA一栏中以“福建省”为例, 包含9个市,属性名name,且编号不同。如上所述,在人口普查(子区域)数据中, 由于包括市的区域被认为是一个统计区域,因此通常将相同的PROVINCENA编号分配给多个多边形。
在边界数据的属性数据中,即使PROVINCENA编号不相同,也输入每个区域和人口数据。 因此,如果统计数据与边界数据原样组合,可将PROVINCENA的统计数据将合并为一个省区域, 该统计区域的总体将被重复计算,如 图 4.2 。 因此,我们组织由多个多边形组成的统计区域,并确保每个name编号只有一个统计区域。

图 4.2 属性查询窗口¶
3.边界数据的处理
如果选择QGIS的主菜单 Parameters 后, 在 Input layer 中选择 “市界_polygon(EPSG:4326)” ,然后选中 "Selected features only" 。 此外,对于 "Single parts" ,按右侧的 ... 按钮,选择 "Save to file" , 然后打开 "Save file" 窗口。在此窗口中,“保存类型”中选择 "SHP files(.shp)" , 将文件夹改为“人口数_单部件.shp”按名称保存。此外,在 "Multipart to singleparts" 窗口中, 选中 "Open output file after running algorithm" ,然后单击 Run 按钮。 然后,将一个名为 "Single parts" 的图层添加到 "Layer" ,并绘制地图。 “人口数_单部件.shp”在文件夹中创建,并在 "Layer" 中显示为 "Single parts" 。 如果是这种情况很容易出错,请将 "Single parts" 的图层名称更改为“人口数_单部件”。 右键单击 Single parts 中的“单部件”,然后从弹出菜单中选择 Rename layer 。 然后,可以在 "Single parts" 中更改图层名称,因此将 "Single parts" 更改为 “人口数_单部件”,如 图 4.3 。
, 将出现 "Multipart to singleparts" 窗口。选择此窗口的选项卡菜单
图 4.3 属性表窗口¶
4.1.3. 将Excel数据加入边界数据¶
1.增加数据
使用QGIS处理的统计数据与边界数据组合。选择 Source Type 中的 "File" , 然后在 Encding 中选择 "UTF-8" 。在 "Source" 中,单击 ... 按钮 以显示 "Open OGR Supported vector Dataset(s)" 窗口,在“文件名”旁边的文件类型菜单中选择 "All file" 。 选择后,选择Excel文件“省人口数 .xlsx”,然后单击 Open 按钮。 此外,当按下 "Data SourceManager/Vector" 窗口中的 Add 按钮时,会在 "Layers" 中添加一个新图层, 由于此图层仅是属性表,因此在地图视图中不会绘制任何内容。如果要读取的Excel文件中有多个工作表, 按 "Data SourceManager/Vector" 窗口中的 Open 按钮后,将出现“选择要添加的矢量图层”窗口,将显示工作表列表。 显示时,单击相应的项目将其选中,然后单击 0K 按钮将包含工作表名称的图层添加到 "Layers" 中。
, 然后调出 "Data SourceManager/Vector" 窗口。在此窗口中,选中2.重命名层
如果使用长的图层名称,则在数据组合后将删除部分项目名称,因此它必须在3个字符以内。然后右键单击 Layers 的层以显示菜单, 并选择 Rename layer 。然后,可以在 "Layers" 中更改图层名称。
3.组合数据
双击 Layers 中的“人口数_单部件”以显示 "Layer Properties" 窗口,然后选择此窗口左侧的选项卡菜单 Joins , 如 图 4.4 。

图 4.4 添加矢量连接¶
此时,按下窗口底部的绿色 运算符+ 按钮,当“添加矢量连接”窗口出来时,在“连接图层”中选择“人口”,在“连接字段”中 选择 "field1" ,在“目标字段”中选择 "PROVINCENA" 。确认选中“在虚拟内存中的缓存组合层”后,单击 0K 按钮。 设置显示在 "Layer Properties" 窗口中,因此单击 0K 按钮。如果要重做此任务,请在 "Layer Properties" 窗口的选项卡 菜单中选择显示的设置,然后单击 红色1 按钮。释放数据绑定,因此再次执行绑定。
4.确认数据
为了确认统计数据的结合是否顺利,右键点击 Layers 的“人口数_单部件”,选择 "Open Attribute Table" 。 当属性表向右滑动时,在边界数据的属性数据之后,可以确认,在下拉杠上连接了 "field" 这样的层名和项目名的新项目名, 追加了统计数据。确认后,按右上方按钮关闭窗口。如果属性表的统计数据添加部分显示所有数据都是空值(在没有包含数据的状态下), 则无法组合统计数据,因此再次尝试操作是必要的。
5.创建新数据和协调转换
此时的层图层是临时组合了边界数据和统计数据,并不是制作了带有统计数据的shapefile文件。 因此,有必要在属性表格中创建统计数据结合的SHEP文件。
右键单击 Layers 的“人口数_单部件”以显示菜单,选择 "Save As..." ,然后调出 "Save Vector Layer As" 窗口。 在此窗口中,选择 "ESRI Shapefile" 作为“格式”,然后单击 "File name" 的 ... 按钮,设置为保存。 在 "CRS" 中,单击右侧的 CRS 按钮以打开 "Coordinate Reference Syetem System Selector" 窗口。 在 "Coordinate Reference Syetem System Selector" 窗口中,在 "Filter" 中输入 "WGS84" ,在“空间参考系统”列表中 选择 "WGS84(EPSD:4326)" ,单击 OK 按钮。通过该操作,在 "Save Vector Layer As" 窗口中, 然后选中 "Add saved file to map" 。单击 OK 按钮。然后,在文件夹中,创建组合边界数据和统计数据的shapefile文件 “人口数_单部件2.shp”并显示在地图视图中。
4.1.4. 区域修正后的人口密度图的创建¶
1.统计区域的面积计算
使用层“人口数_单部件2”结合统计数据新创建人口密度图。为此,首先确定多部分后人口普查区域的面积。从QGIS主菜单中 选择 Calculate using 中选择 "Layer CRS" 。 在 Added geom info 中选择 "Save to file" 。显示 "Save file" 窗口时,在“保存类型”中选择 "SHP文件(.shp)" , 为了将来的工作,指定在“空间分析”文件夹中保存为“省人口普查.Shp”。然后,单击 Save 按钮。 此外,当选中 "Open output file after running algorithm"并单击 Run 按钮时, 会在 "Layers" 面板中添加一个名为 "Add Geometry Attributes" 的图层,并绘制一个地图。
,调出 "Add Geometry Attributes" 窗口。 在该窗口的 "Input layer" 中选择“人口数_单部件2”,然后在“省人口普查.Shp”在文件夹中创建,并在 "Layers" 中显示为 "Add Geometry Attributes" 。要更改此图层名称, 请右键单击 Layers 中的 "Add Geometry Attributes" ,然后从出现的菜单中选择 Rename Layer 。 可以在图层面板中更改图层名称,因此将 "Add Geometry Attributes" 更改为“省人口普查”。 表示该层“省人口普查”的属性表中的区域的 "area_l" 的数值是QGIS唯一计算多边形面积的结果, 并且最初输入的层“市界”的属性值与表中的 "AREA" 值略有不同。 如果需要使用图层“市界”的区域值,则需要添加多部分的多边形区域并修改属性表中的值。
2.人口密度的计算
使用新计算的统计区域 "area_1" 的面积来确定总人口的密度。在 Layers 中双击“省人口普查”以显示 "Layer Properties" 窗口, 然后选择窗口左侧的选项卡菜单 Source Fields 。在这里,如果单击 "Field" 中的 Field Calculator 按钮并 将 "Field Calulator" 设置为自动生成将显示 "Field Calulato" 窗口。在此窗口中,选中 "Create virtual field" 并选择“密度” 作为更新字段,如 图 4.5 。

图 4.5 人口密度计算¶
当您在列表中的 Fieid and Values 中双击 "perimeter" 时,"perimeter" 将显示在 "Expression" 中。
此时,按 "Expression" 的 运算符/ 按钮,在 "Fieid and Values" 中双击 "area" ,
然后单击 Expression 的 "运算符*"
按钮。然后在 Expression 中输入“半宽”为 "1000000" 。
确认在“公式”输入字段中输 "perimeter"/"area"*1000000
后,单击 "Field Calulato" 窗口中的 OK 按钮。
此外,当在 "Layer Properties" 窗口中按下 "Source Fields" 的 Toggle editing mode 按钮时, 将显示“退出编辑”窗口。单击 Save 按钮。因此,记录在层“省人口普查”的属性数据中 在“密度”中新计算的人口密度,如 图 4.6 。

图 4.6 人口密度计算¶
3.地图符号设置
选择 "Layer Properties" 窗口左侧的 Symbology 选项卡菜单,单击窗口底部的 Style 按钮, 然后选择 Load Style 。当出现 "Database styles manager" 窗口时,在 "File" 右侧的菜单中选择 "QGIS图层样式文件" , 然后在人口普查(小区域)文件夹中选择“人口密度”。并按 打开 按钮。在窗口的 "Power Ram" 中选择“密度”, 然后单击 0K 按钮。显示分为五个等级的人口密度分布图,如 图 4.7 。

图 4.7 地图符号设置¶
完成上述工作后,选择主菜单
,并将其作为“省人口普查 .qgs”保存在“空间分析”文件夹中。