并非要使用的每个数据集都采用空间格式,并且数据通常以表格数据(如 CSV、TSV 或电子表格)的形式出现。您需要将其与现有空间数据链接以用于分析。此操作称为表联接,使用“处理算法工具箱”中的 完成。Join attributes by field value
任务概述
我们将使用加利福尼亚州人口普查区域的形状文件和美国人口普查局的人口数据表来创建加利福尼亚州的人口密度地图。
您将学习的其他技能
-
加载 QGIS 中不包含任何几何图形的 CSV 文件。
-
消除 CSV 中的其他标头。
-
向图层添加附加列。
-
使用透明描边设置图层样式。
获取数据
我们想为美国加利福尼亚州准备一张人口密度图。我们将首先获得一个表格,其中包含该州每个人口普查区域的人口计数。
下载人口普查表
-
访问美国人口普查局,然后单击查看表格。
-
单击左上角的过滤器图标。
-
让我们先过滤到加利福尼亚。单击地理。
-
单击区域,这将提供人口普查区域信息。
-
选择加利福尼亚。
-
检查加利福尼亚州内的所有人口普查区域。这使我们能够将所有信息下载为单个文件,而不是为每个区域单独下载。现在我们已经设置了地理位置,请单击主题。
-
在“选择主题”下,选择“人口”和“人口”。
-
检查人口和人口。现在我们已经选择了所有必要的过滤器。关闭筛选器窗口。
-
在下载表窗格中,向下滚动以查找 S0101 |年龄和性别
-
这将打开数据的详细视图。我们只关心人口,因此取消选择误差幅度,以便我们只能获取必要的信息并节省文件存储空间。
-
点击下载按钮。
-
所选数据可以使用多年,并使用不同的估计技术。建议使用 ACS 5 年估计主题表,因为多年估计可提高数据的可靠性。它也没有数据差距,并包含所有区域的信息。选择年份 。,然后单击下载。这将下载一个 zip 文件。完成后,将其解压缩到本地磁盘上。
2019
下载人口普查区域边界
要根据人口普查表创建地图,我们还需要表示加利福尼亚州每个人口普查区域的边界。
-
访问 TIGER 线形状文件并单击 Web 界面。
-
在选择年份下选择 ,在选择图层类型中,然后单击提交。
2019
Census Tracts
-
在选择状态中选择,然后单击下载。这将下载一个包含矢量文件的 zip 文件。
California
为方便起见,您可以从以下链接直接下载两个数据集的副本:
程序
-
在QGIS浏览器中找到该文件并将其展开。选择文件并将其拖动到画布上。
tl_2019_06_tract.zip
tl_2019_06_tract.shp
-
“选择转换”对话框将提示从 EPSG:4269 转换为 EPSG:4326。此对话框显示多个变换,可在这些投影之间的坐标之间进行转换。将所选内容保留为默认选项,然后单击“确定”。
-
您将看到图层已加载到“图层”面板中。此图层包含加利福尼亚州人口普查区域的边界。右键单击图层,然后选择打开属性表。
tl_2019_06_tract
tl_2019_06_tract
-
检查图层的属性。要连接具有此图层的表,我们需要每个要素的唯一且通用属性。在本例中,该字段有 8057 条单独的区域记录。此列可以将此图层链接到包含相同 ID 的任何其他图层或表。
GEOID
-
若要加载表格数据,请单击“打开数据源管理器”。
-
在“数据源管理器”对话框中,选择“分隔文本”。然后在右侧,单击“文件名”旁边的“并浏览到包含加利福尼亚人口 CSV 的解压缩文件夹。
...
-
现在,在示例数据下,我们甚至可以在将数据作为图层加载之前检查数据。表示形式显示数据表包含 2 个标题行。
-
要消除额外的标题行,请在“记录和字段选项”下,将“要放弃的标题行数”设置为 。现在,该表将包含正确的列标题。由于此图层仅包含表格数据,因此请在几何定义下选择。单击添加将其添加为图层,然后单击关闭关闭此对话框。
1
No geometry (attribute only table)
-
CSV 现在将作为表格导入到 QGIS 中,并显示在“图层”面板中。现在右键单击图层并选择打开属性表。
ACST5Y2019.S0101
-
该列包含每条记录的唯一 ID,可用于将此表与图层连接起来。如果将 的值与 中的列进行比较。您会注意到它以 1400000US为前缀。若要成功合并这两个表,值必须完全匹配。让我们删除此前缀并添加一个包含最后 11 个字符的新列,其中包含完全匹配的值。
ID
tl_2019_06_tract
ID
GEOID
tl_2019_06_tract
-
要创建包含最后 11 位数字的新列,请转到处理 ‣ 工具箱,然后搜索并找到向量表 ‣ 字段计算器算法。
-
在字段计算器对话框中,选择作为输入图层,输入字段名称,然后选择结果字段类型。现在在表达式中搜索。我们可以使用此函数从 id 字段中提取所需的部分。
ACST5Y2019.S0101
geoid
string
substr
-
输入以下表达式。我们使用 substr 函数并从位置 -11 中提取值(负值从末尾计数)。最终结果可以在“预览”部分中查看。单击运行。
substr("id", -11)
-
现在,将在画布中加载一个新图层,让我们检查属性表。将出现一个新列,其值可与 cencus 道匹配。
Calculated
geoid
-
要创建表连接,请转到处理 ‣ 工具箱打开处理工具箱,然后搜索并找到矢量常规 ‣ 按字段值连接属性算法。
-
在按字段值连接属性对话框中,选择输入图层和表字段。选择作为输入图层 2 和表字段 2。在要复制的第 2 层字段下,单击 .
tl_2019_06_tract
GEOID
Calculated
geoid
...
-
检查 和 。单击“确定”。
Geographic Area Name
Estimate!!Total!!Total population
geoid
-
检查无法联接的丢弃记录。这将消除人口表中的任何额外记录。单击连接图层下的 ...(...) 按钮以选择输出文件位置,然后选择 。
Save to File...
-
将输出地理包命名为 。单击运行。
california_total_population.gpkg
-
处理完成后,如果连接了所有 8057 要素,则验证算法是否成功。单击“关闭”。
-
您将看到在“图层”面板中加载了一个新图层。此时,CSV 文件中的字段已与人口普查区域图层连接。现在,我们在人口普查区域图层中拥有了人口数据,我们可以设置其样式以创建人口密度分布的可视化效果。单击打开图层样式面板按钮。
california_total_population
-
在图层样式面板中,从下拉菜单中进行选择。由于我们希望创建人口密度地图,因此我们希望根据人口密度为每个人口普查区域要素分配不同的颜色。我们有人口在估计中!!总!!总人口字段和 ALAND 中的面积字段。单击表达式按钮,以计算每个仙人区中总人口的百分比。
Graduated
注意
创建此类专题(choropleth)地图时,规范化要映射的值非常重要。映射每个面的总数不正确。规范化除以面积的值非常重要。如果要显示犯罪等总计,则可以通过除以总人口来对其进行归一化,从而映射犯罪率而不是犯罪率。了解更多信息
-
输入以下表达式以计算人口密度。要素的面积以平方公里为单位。然后,我们通过乘以并使用公式计算人口密度来将其转换为平方米 人口/面积.预览结果并单击“确定”。
1000000
1000000 * ("Estimate!!Total!!Total population"/"ALAND")
-
在图层样式面板中,单击分类并将类输入为 。
10
-
单击色带以选择色带。
RdYlGn
-
高密度越高,更值得关注,让我们将绿色分配给较低密度,将红色分配给高密度区域。单击色带并选择反转色带。
-
现在,我们有一个非常漂亮的加州人口密度信息可视化。为了使其更好,让我们使每个人口普查区域的边界透明。单击符号选项卡。
-
单击描边颜色,然后单击 。
Transparent stroke
-
可以调整箱,单击“值”,这将弹出一个对话框以输入上限和下限值。
-
满意后,关闭图层样式面板。我们现在有一个漂亮的加州人口密度信息可视化。