资料表连接

你想要用的资料集可能不是 shapefile,或是任何一种空间资料格式。这些资料的格式往往是表格或试算表,要把它们加入你的资料分析中, 必须让它们和你手上的空间资料产生关联。操作这件事情称为资料表连接 Table Join 。 这篇教学会说明在 QGIS 中要如何将资料表连接起来。

内容说明

我们会使用美国加州的人口统计分区 shapefile,与美国人口调查局提供的人口数资料表,做一份加州的人口分布图。

你还会学到这些

  • 为 CSV 档案制作一份 .csvt 档案,以注明各栏位的资料型态
  • 在 QGIS 中载入不含任何地理资讯的 CSV 档案

取得资料

US Census Bureau 提供多种从 MAF/TIGER 资料库汇出的空间资料。 你可以查询并下载加州的人口统计分区 shapefile。 下载 Census Tracts for California 这个档案。

Americal FactFinder 提供所有美国的人口统计资料。 你可以用 Advanced Search ,查询 Topic - Total PopulationGeographies - All Census Tracts in California ,以建立并下载我们需要的 CSV 档案。 以下教学使用 Total Population 2010 Census Summary File 1 这份资料。

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

tl_2013_06_tract.zip

ca_tracts_pop.csv

资料来源 [TIGER] [USCENSUS]

操作流程

  1. 我们先载入人口统计分区的 shapefile。选择:menuselection:Layer –> Add Vector Layer
../_images/1104.png
  1. 浏览并选择载下来的 tl_2013_06_tract.zip 压缩档。QGIS 可以直接开启压缩档,所以档案不用事先解压缩。
../_images/249.png
  1. 选择``tl_2013_06_tract.shp`` 图层并点选 OK
../_images/329.png
  1. QGIS 就会载入人口统计分区资料。
../_images/421.png
  1. 图层上按右键,选择:guilabel:Open Attribute Table
../_images/522.png

6. 检视 shapefile 中每个分区的属性。要把表格资料与这份 shapefile 相关联,图层中的每个图征都需有个共同属性,其值在每个图征中各不相同。 在这个例子中,GEOID f属性可以识别每一个分区,这就可以把这份 shapefile 与任何包含同样 ID 的表格资料`link` 起来。

../_images/621.png

7. 用文字编辑器开启 ca_tracts_pop.csv 这份 CSV 档案。你会注意到,档案中的每一列都含有关于某个分区的资讯, 其中就有我们在上一步骤看到的识别属性。注意在这份 CSV 中,有个识别属性栏位叫作**GEO.id2**。你还会注意到 **D001**这个栏位记录了每个分区的人口数。

../_images/720.png

8. 我们可以不做任何加工,直接汇入这份 CSV 档案。不过,这样一来每个栏位预设的资料型态会是 String (文字)。 这样通常没有问题,除了像 D001 这样包含人口数字的栏位。如果这些数字栏位被当作文字汇入,我们就不能拿这些栏位做数学计算。 要让 QGIS 把这些栏位当作数字汇入,我们必须建立一个`.csvt` 的附加档案。这个附加档案只会有一列内容,用来指定每一栏位的资料型态。 我们把这个附加档案命名为``ca_tracts_pop.csvt`` 储存到原本的`.csv`档案所在的目录。你也可以`download the csvt file from here. <../../downloads/ca_tracts_pop.csvt>`_。

../_images/819.png
  1. 我们可以把 CSV 档案汇入 QGIS 了。选择:menuselection:Layer –> Add Delimited Text Layer
../_images/917.png
  1. 在目录下浏览并选择 CSV 档。注意 File format 要选择:guilabel:CSV (comma separated values)。 这份资料是单纯的表格,所以我们得注明档案中不包含地理资讯。选择 No geometry (attribute only table) ,再点选:guilabel:OK
../_images/1018.png
  1. 这样,CSV 档案就被汇入 QGIS 里成为一份表格。
../_images/1122.png

12.选择``tl_2013_06_tract`` layer图层,然后按右键选择:guilabel:Properties

../_images/1220.png
  1. 在:guilabel:Layer Properties`视窗中,选择:guilabel:`Joins`分页,按下底端的 `+ 号按钮,以建立新的资料表连结。
../_images/1318.png
  1. 在:guilabel:Add vector join 视窗中,guilabel:Join layer`选择 ``ca_tracts_pop`,然后我们需要为 shapefile 和 CSV 档选择用以连结的独特属性,也就是说 Join field 要填上`GEO.id2`和guilabel:Target field`要填上`GEOID 。最后按下:guilabel:OK
../_images/1417.png
  1. 关闭:guilabel:Layer Properties 视窗,回到 QGIS 主画面。现在 CSV 档中的资料已经与 shapefile 连结在一起了。 在 ``tl_2013_06_tract``图层上按右键,选择:guilabel:Open Attribute Table
../_images/1516.png
  1. 现在我们可以看见所有的图征都多了几个新的栏位,包括:guilabel:ca_tracts_pop_D001 这个栏位。现在你可以从 CSV 的资料表连结存取每个分区的人口了,请关掉属性表格并回到 QGIS 主视窗。
../_images/1615.png
  1. 在``tl_2013_06_tract`` 图层上按右键选择:guilabel:Properties
../_images/1714.png
  1. 选择:guilabel:Style 分页,然后从下拉式选单中选择:guilabel:Graduated。 由于我们要制作人口分布图,最好的颜色配置当然是基于人口的数量多寡来决定。在 行 栏位中选择:guilabel:ca_tracts_pop_D001,然后再从 Color ramp`下拉选单中选择你喜欢的:guilabel:`Column。接着在 Mode`中选择:guilabel:`Quantile (Equal Count)。按下 Next click Classify`后,就可看到不同的人口数量被指定成不同颜色,最后按下:guilabel:`OK
../_images/1814.png
  1. 这下我们就视觉化了一张不错的人口分区普查结果地图。你可以使用 :guilabel:`Zoom in`钮查看图层中较小的区域。
../_images/1912.png
  1. 精细、准确的加州的人口地图制作完成。你也可以试着使用同样的方法针对不同的普查结果制作地图。
../_images/209.png