資料表連接

警告

本教學已經過時,如需閱讀新的版本請前往 資料表連接 (QGIS3)

你想要用的資料集可能不是 shapefile,或是任何一種空間資料格式。這些資料的格式往往是表格或試算表,要把它們加入你的資料分析中,必須讓它們和你手上的空間資料產生關聯。操作這件事情稱為資料表連接(Table Join)。這篇教學會說明在 QGIS 中要如何將資料表連接起來。

內容說明

我們會使用美國加州的人口統計分區 shapefile,與美國人口調查局提供的人口數資料表,做一份加州的人口分佈圖。

你還會學到這些

  • 為 CSV 檔案製作一份 .csvt 檔案,以註明各欄位的資料型態

  • 在 QGIS 中載入不含任何地理資訊的 CSV 檔案

取得資料

美國人口調查局提供多種從 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。選擇 圖層 ‣ 加入向量圖層

../_images/1207.png
  1. 瀏覽並選擇載下來的 tl_2013_06_tract.zip 壓縮檔。QGIS 可以直接開啟壓縮檔,所以檔案不用事先解壓縮。

../_images/2172.png
  1. 選擇 tl_2013_06_tract.zip 圖層並點選 確定

../_images/3107.png
  1. QGIS 就會載入人口統計分區資料。

../_images/472.png
  1. 圖層上按右鍵,選擇 開啟屬性表格

../_images/566.png
  1. 檢視 shapefile 中每個分區的屬性。要把表格資料與這份 shapefile 相關聯,圖層中的每個圖徵都需有個共同屬性,其值在每個圖徵中各不相同。在這個例子中,GEOID 屬性可以識別每一個分區,這就可以把這份 shapefile 與任何包含同樣 ID 的表格資料「連接」起來。

../_images/664.png
  1. 用文字編輯器開啟 ca_tracts_pop.csv 這份 CSV 檔案。你會注意到,檔案中的每一列都含有關於某個分區的資訊,其中就有我們在上一步驟看到的識別屬性。注意在這份 CSV 中,有個識別屬性欄位叫作 GEO.id2。你還會注意到 D001 這個欄位記錄了每個分區的人口數。

../_images/763.png
  1. 我們可以不做任何加工,直接匯入這份 CSV 檔案。不過,這樣一來每個欄位預設的資料型態會是「字串」(文字)。這樣通常沒有問題,除了像 D001 這樣包含人口數字的欄位。如果這些數字欄位被當作文字匯入,我們就不能拿這些欄位做數學計算。要讓 QGIS 把這些欄位當作數字匯入,我們必須建立一個 .csvt 的附加檔案。這個附加檔案只會有一列內容,用來指定每一欄位的資料型態。我們把這個附加檔案命名為 ca_tracts_pop.csvt,儲存到原本的 .csv 檔案所在的目錄。你也可以從這裡下載這個 csvt 檔案。

../_images/861.png
  1. 我們可以把 CSV 檔案匯入 QGIS 了。選擇 圖層 ‣ 加入分隔文字圖層

../_images/960.png
  1. 在目錄下瀏覽並選擇 CSV 檔。注意 檔案格式 要選擇 CSV (逗號分欄值)。這份資料是單純的表格,所以我們得註明檔案中不包含地理資訊。選擇 無幾何欄位 (僅產生屬性表格) ,再點選 確定

../_images/1068.png
  1. 這樣,CSV 檔案就被匯入 QGIS 裡成為一份表格。

../_images/11106.png
  1. 選擇 tl_2013_06_tract 圖層,然後按右鍵選擇 屬性

../_images/1270.png
  1. 圖層屬性 視窗中,選擇 連結(Joins) 分頁,按下底端的 + 號按鈕,以建立新的資料表連結。

../_images/1367.png
  1. 加入向量連結 視窗中,連結(Join)圖層 選擇 ca_tracts_pop,然後我們需要為 shapefile 和 CSV 檔選擇用以連結的獨特屬性,也就是說 連結欄位 要填上 GEO.id2目標欄位 要填上 GEOID。最後按下 確定

../_images/1463.png
  1. 關閉 圖層屬性 視窗,回到 QGIS 主畫面。現在 CSV 檔中的資料已經與 shapefile 連結在一起了。在 tl_2013_06_tract 圖層上按右鍵,選擇 開啟屬性表格

../_images/1556.png
  1. 現在我們可以看見所有的圖徵都多了幾個新的欄位,包括 ca_tracts_pop_D001 這個欄位。現在你可以從 CSV 的資料表連結存取每個分區的人口了,請關掉屬性表格並回到 QGIS 主視窗。

../_images/1653.png
  1. tl_2013_06_tract 圖層上按右鍵選擇 屬性

../_images/1750.png
  1. 選擇 樣式 分頁,然後從下拉式選單中選擇 漸層。由於我們要製作人口分布圖,最好的顏色配置當然是基於人口的數量多寡來決定。在 欄位中選擇 ca_tracts_pop_D001,然後再從 色彩映射表 下拉選單中選擇你喜歡的色條。接著在 模式 中選擇 分位數 (每個顏色相同計數)。按下 分類 後,就可看到不同的人口數量被指定成不同顏色,最後按下 確定

../_images/1846.png
  1. 這下我們就視覺化了一張不錯的人口分區普查結果地圖。你可以使用 放大 鈕查看圖層中較小的區域。

../_images/1937.png
  1. 精細、準確的加州的人口地圖製作完成。你也可以試著使用同樣的方法針對不同的普查結果製作地圖。

../_images/2032.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)