使用QGIS製作面量圖

文章推薦指數: 80 %
投票人數:10人

本教學將一步一步帶領讀者使用開源GIS軟體— QGIS,製作面量圖。

面量圖是主題地圖的一種,其製作方法是根據統計數值的多寡來將不同的地理區域上色,如此可有效呈現地理 ...       Published LinkedwithGitHub Like Bookmark Subscribe --- title:'使用QGIS製作面量圖' disqus:hackmd --- 使用QGIS製作面量圖 === ##大綱 [TOC] ##內容說明 本教學將一步一步帶領讀者使用開源GIS軟體—QGIS,製作面量圖。

面量圖是主題地圖的一種,其製作方法是根據統計數值的多寡來將不同的地理區域上色,如此可有效呈現地理區域間目標數值的分布情形,常使用於資料視覺化的各種應用場合,例如:縣市長全國選舉時用以呈現各縣市的勝選政黨。

本教學包括下列各點: 1.使用QGIS開啟shapefile檔。

2.插入以逗號分隔檔(.csv)存在的統計資料。

3.進行「資料表連接(tablejoin)」,將圖徵與統計資料連結起來。

4.調整面量圖參數。

5.出圖設定。

##教學 ###安裝QGIS3.X版 製作此指南時,我安裝的QGIS版本號為3.4,理論上3.X版本都可以適用此指南。

請自[QGIS官網](https://qgis.org/en/site/)下載軟體,並依照指示安裝。

![](https://i.imgur.com/K7RrAN9.png) ▲安裝好後,預設在「開始」選單中會出現這些捷徑。

點選「QGISDesktop3.4.3」,開啟QGIS主程式。

![](https://i.imgur.com/mPgB6sy.png) ▲載入主程式的畫面。

QGIS以專案(project)來管理每一次的地理分析作業,可以想像成每一次開啟新的專案,就等同開始一份新的專題研究。

![](https://i.imgur.com/MySPSEI.png) ▲初始介面如上,中間會顯示曾經開啟過的專案。

###插入向量圖層 ![](https://i.imgur.com/gjo1D5s.png) ▲ 點選「Project/New」,開啟新專案。

![](https://i.imgur.com/Z62pFMw.png) ▲ 這是新專案的介面。

![](https://i.imgur.com/xki30p5.png) ▲ 點選「Layer/AddLayeer/AddVectorLayer」,載入Shapefile。

![](https://i.imgur.com/ljrFvM3.png) ▲ 依序設定欲載入的Shapefile: 1.選擇「File」。

2.選擇編碼格式,一般會是「UTF-8」,但若是台灣產出的Shapefile檔,可能會使用「Big-5」。

3.選擇檔案位置。

我會建議將所有專案會用到的圖資都放在同一個資料夾內以便搜尋,除非檔案很大,不方便移動。

4.點選「Add」,加入圖層。

![](https://i.imgur.com/VqVNE0m.png) ▲ 順利載入Shapefile檔。

![](https://i.imgur.com/Y1aRgDq.png) ▲ 在左下角的「Layer」選單中,左鍵點選剛才加入的圖層,然後點右鍵,在選單中點選「OpenAttributeTable」,開啟屬性資料表。

![](https://i.imgur.com/zto1HPC.png) ▲ 順利開啟屬性資料表。

![](https://i.imgur.com/kZ09sDw.png) ▲ 上方會顯示該Shapefile檔的欄位名稱。

###修改特定欄位 ![](https://i.imgur.com/xWPIQ4g.png) ▲ 點選屬性資料表上方,左邊第一個按鈕「Toggleeditingmode」,開啟編輯模式。

![](https://i.imgur.com/RJ1FMDn.png) ▲ 左鍵雙擊特定欄位,可以修改該欄位內容。

![](https://i.imgur.com/lsnAS4M.png) ▲ 修改後,再次點選「Toggleeditingmode」,QGIS會詢問是否要儲存剛才的變更。

**注意**此步驟會直接修改Shapefile檔的內容,建議每次進行新專案時先行備份新的Shapefile檔,利用新建立的檔案進行GIS分析。

###插入逗號分隔檔圖層 ![](https://i.imgur.com/i0H3S4j.png) ▲透過文本編輯器,我們可以先行確認.csv檔中欄位的名稱及其對應的資料。

在範例中,第二欄(Third_Name)為我們要用來連結兩資料表的主鍵(Key)。

![](https://i.imgur.com/1cAUvgt.png) ▲點選加入逗號分隔檔的圖層。

![](https://i.imgur.com/GHqvLNh.png) ▲依照數字順序依序選擇檔案: 1.選擇要插入的.csv檔。

2.選擇編碼,一般而言是UTF-8(有時是Big5,可以從下方的預覽功能中看到文字有無正常顯示。

) 3.選擇.csv格式 4.勾選「此檔無地理資訊」。

5.點選「Add」加入圖層,然後點選「Close」關閉視窗。

![](https://i.imgur.com/heWfidu.png) ▲完成後可以看到資料表格已經順利讀入QGIS。

###資料表連結 ![](https://i.imgur.com/NTfQvka.png) ▲點選「Processing/Toolbox」。

![](https://i.imgur.com/Ko5qDiM.png) ▲點選設定。

![](https://i.imgur.com/m1lFXLc.png) ▲勾選「Processing/General/Usefilenameaslayername」,以方便之後步驟進行。

勾完後點選下方的「OK」。

![](https://i.imgur.com/kfqJbIe.png) ▲在ProcessingToolbox中開啟「join」功能。

1.搜尋「join」。

2.找到「Vectorgeneral/Joinattributebyfieldvalue」,雙擊左鍵打開。

![](https://i.imgur.com/PPKtCTa.png) ▲設定資料表連結的選項。

1.選擇具地理資訊的圖層(即A檔)。

2.選擇該圖層中的主鍵欄位。

3.選擇具統計資料的.csv檔(即B檔)。

4.選擇該圖層中的主鍵欄位。

![](https://i.imgur.com/vqURkEX.png) ▲設定連結好的資料表的存檔格式,請點選「SavetoGeoPackage...」。

接著依照彈出的視窗設定檔名及圖層名,並按下「Run」。

![](https://i.imgur.com/9YBtFF7.png) ▲確認資料表是否有正常連結。

1.確認配對成功的圖徵(feature)數,在本次範例中,台灣共有368個鄉鎮,但是.csv資料檔只有107列。

QGIS顯示有105列配對成功,263列未成功(以紅字顯示),表示在資料配對的過程中有些微錯誤,導致結果不符合預期,此時應重新省視.csv檔以確認是否有重複或是與Shapefile檔的主鍵不相符之處。

本指南先假設無問題,繼續下方說明。

2.點選「Close」關閉視窗。

3.可以看到連結好的圖層「joined」已經被加入QGIS專案中。

![](https://i.imgur.com/ZRiGbyG.png) ▲點選「joined」圖層的屬性資料表,可以看到.csv檔中的資料已經配對到相對應的列中。

空白處則表示該欄位為配對而呈現缺失值(Missingdata,NULL)。

###缺失值處理 使用QGIS製作面量圖時,如果屬性資料表中有缺失值,則步驟會較為繁瑣。

我們先手動修改「joined」圖層的屬性資料表,將所有的缺失值欄位改成「-999(-999是資料科學上常用於表示缺失值的一個數字)」,以便後續作業。

![](https://i.imgur.com/R76W7xx.png) ▲點開「joined」圖層的屬性資料表,在上方工具列中找到、點選「Select/filterfeaturesusingform」。

![](https://i.imgur.com/zYgAM0c.png) ▲設定選取規則。

1.找到目標欄位「Plant_Area」,在右方「Excludefield」中找到、點選「ismissing(NULL)」。

2.點選「Selectfeatures」。

![](https://i.imgur.com/bTABIu0.png) ▲完成後可以發現所有「Plant_Area」為缺失值的圖徵都已經被選取。

![](https://i.imgur.com/xWPIQ4g.png) ▲開啟編輯模式。

![](https://i.imgur.com/wGDLiBz.png) ▲設定修改數值。

1.選擇「Plant_Area」欄位。

2.輸入「-999」。

3.點選「UpdateSelected」。

4.再次點選「Toggleeditingmode」,儲存變更並關閉編輯模式, ![](https://i.imgur.com/VwWubvO.png) ▲點選「Deselectall」。

![](https://i.imgur.com/S6fPkfz.png) ▲點選「Switchtotableview」。

![](https://i.imgur.com/JD5vAPA.png) ▲可以看到所有的缺失值欄位已經被取代成「-999」。

###調整面量圖參數 接下來進入作圖設定,已經可以把「ProcessingToolbox」關閉了。

![](https://i.imgur.com/RJ07D1T.png) ▲選擇「joined」圖層,並點選左上方的「OpentheLayerStylingpanel」。

![](https://i.imgur.com/IlThZUZ.png) ▲將這個選項改成「Graduated」。

![](https://i.imgur.com/CXPyxkh.png) ▲依序設定參數。

1.選擇資料來源欄位。

2.選擇使用的顏色色階。

3.點選「+」加入分級單位。

![](https://i.imgur.com/SgooGCd.png) ▲依序設定參數。

1.調整小數位數至「Precision-2」。

2.雙擊每個級距單位的「Values」與「Legends」,更改為需要的數值。

我這邊將第一個級距單位設為「-999-0」,如此便會顯示出缺失值欄位。

3.點選「Apply」進行分級著色。

![](https://i.imgur.com/tVA7bqo.png) ▲完成後已可見面量圖之雛形,但我們還可以加以美化。

![](https://i.imgur.com/rkE2tFw.png) ▲選擇所有級距單元後,按下上方的「Symbol/Change...」。

![](https://i.imgur.com/TPpZPg7.png) ▲依許點選「Fill/Simplefill」,並點選下方的「Srokecolor」右邊的下拉選單,勾選「Transparentstroke」,並按下「Apply」。

除此之外,這個繪圖面板還有很多細部設定可以調整,可以自行嘗試。

![](https://i.imgur.com/VhXv8i4.png) ▲完成面量圖設定,剩下出圖面板的設定了。

###合併圖徵 此指南使用的Shapefile檔的最小級別是「鄉鎮市」,我們可以透過合併圖徵來獲得「縣市」級別的圖徵。

![](https://i.imgur.com/2S1xxok.png) ▲點選「Vector/GeoprocessingTools/Dissolve...」。

![](https://i.imgur.com/NruSOec.png) ▲依序設定參數: 1.選擇欲合併的圖層。

2.選擇欲用以合併的欄位(主鍵),QGIS將會依此欄位將較次級的圖徵合併。

3.設定是否要另存成新的獨立圖資檔案,或是僅使用暫存圖層,建議儲存成獨立檔案以便下一次載入專案檔時使用。

4.點選「Run」。

![](https://i.imgur.com/FiHpglH.png) ▲此為上述第2步驟的畫面,可以選擇單一用以合併的目標欄位。

![](https://i.imgur.com/heYbtN9.png) ▲QGIS程式合併中。

![](https://i.imgur.com/AqYbjDv.png) ▲完成圖徵合併,後續可以依照上面的說明調整視覺化設定,以另地圖美觀,例如:調整縣市級的邊框粗細。

###出圖面板設定 最後一步是設定出圖面板(PrintLayout),出圖面板式儲存於專案檔(.qgz)中的,理論上下一次開啟同一個專案檔也可以載入相同的出圖設定,而不用重複調整。

![](https://i.imgur.com/xlySuq6.png) ▲點選「Project/NewPrintLayout」,開啟出圖面板。

![](https://i.imgur.com/HjB7XAU.png) ▲出圖面板為一個獨立彈出的視窗。

點選「AddItem/AddMap」。

![](https://i.imgur.com/TZt4nV6.png) ▲透過游標拉出要插入地圖的範圍。

![](https://i.imgur.com/a8PZGh8.png) ▲放開游標後,已插入地圖。

![](https://i.imgur.com/lyQxCEM.png) ▲同上,點選「AddItem/AddScaleBar」,插入比例尺。

![](https://i.imgur.com/n7coTIe.png) ▲同上,點選「AddItem/AddLegend」,插入圖例。

![](https://i.imgur.com/dnCrRkE.png) ▲同上,點選「AddItem/AddPicture」,插入方向標。

![](https://i.imgur.com/gY6geBP.png) ▲方向標的選項很多種,位於右方「ItemProperties/SearchDirectories」中,可以自行挑選。

![](https://i.imgur.com/nJLnM27.png) ▲插入的地圖範圍是根據原本QGIS操作頁面的可視範圍決定的,現在在QGIS專案頁面中縮放(Zoom)到目標位置(金門)。

![](https://i.imgur.com/XMjCQqt.png) ▲回到出圖面板,再次插入地圖,可以發現金門的範圍已被加入出圖面板中,代號為「Map2」。

![](https://i.imgur.com/v1DZuaK.png) ▲點選「AddItem/AddLabel」,插入文字標籤,我們在這邊插入金門與馬祖的標示,以便閱讀者判斷。

![](https://i.imgur.com/iPTnAJH.png) ▲點選「Layout/ExportasImage」,挑選欲匯出的圖片格式後,即可匯出完成的地圖。

QGIS也提供了SVG檔與PDF檔可供匯出。

![](https://i.imgur.com/ccWKJrD.png) ▲完成! ###補充-AgriMap_TW輸出的Shapefile AgriMap_TW專案所輸出的Shapefile檔也可以透過這個流程開啟,因為在專案中已經做過資料表連結的動作,所以直接從「**缺失值處理**」這一步開始即可,以下簡單說明載入流程。

![](https://i.imgur.com/Xnw7Ui1.png) ▲依據上面的流程,指定載入AgriMap_TW所輸出的.shp檔(單一個Shapefile檔由五個子檔案所構成,只須點選副檔名為「.shp」的檔案,電腦會自動載入同一資料夾內的其他子檔案。

) ![](https://i.imgur.com/u7SKYTa.png) ▲順利載入Shapefile檔。

![](https://i.imgur.com/tSCLl18.png) ▲透過圖層選單開啟資料屬性表(OpenAttributeTable)。

![](https://i.imgur.com/7l0RIWp.png) ▲資料屬性表的視窗。

![](https://i.imgur.com/rFppaSm.png) ▲上方第一列可見資料屬性表的表頭。

注意2號方框,AgriMap_TW產出的Shapefile檔並未將缺失值補齊,可以利用上述教學補齊缺失值欄位後,再進行出圖設定。

##延伸閱讀 1.[QGIS官方指南](https://www.qgistutorials.com/zh_TW/docs/3/performing_table_joins.html) 我是參考這個指南來製作本教學的,基本上內容一致。

##變更日誌 *2020/07/19-18:08完成第1.0版說明。

*2020/07/19-18:46完成第1.1版說明。

:::info **Findthisdocumentincomplete?**Leaveacomment! ::: ######tags:`GIS``Documentation` × Signin Email Password Forgotpassword or Byclickingbelow,youagreetoourtermsofservice. SigninviaFacebook SigninviaTwitter SigninviaGitHub SigninviaDropbox SigninviaGoogle NewtoHackMD?Signup



請為這篇文章評分?