[QGIS教學系列]QGIS Model Builder入門教學:打造屬於自己的GIS工作流程
關鍵字: #QGIS #數據處理 #地理資訊系統 #Graphical Modeler #自動化 #Model Builder
文章目錄
如果有需要相關的GIS家教課程也歡迎Email給我
[QGIS教學系列-Model Builder自動化工作流設計]
1. 功能介紹
QGIS-Model Builder(Graphical Modeller)是一個強大的工具,可以讓使用者在QGIS環境下快速且容易地建立自己的地理資訊處理模型。使用Model Builder,使用者可以選擇一系列的空間處理工具並將它們組合成一個流程,然後將其保存為一個模型以便重複使用,同時還可以對這些工具進行進一步的設置和配置。這個工具對於處理大型地理數據集以及自動化常見任務非常有用。
![QGIS-Model Builder版面配置](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-88.png?resize=900%2C639&ssl=1)
2. 適用情境
1.批次處理:
使用者可以利用Model Builder建立一個流程,以批次處理地理數據集,例如:批次處理多個向量圖層的空間運算並結合多個網格圖層的資料提取。
2.資料清理:
在地理數據分析過程中,使用者經常需要清理和糾正資料。使用Model Builder可以自動化這些任務,例如:從不同來源導入和匯出數據、清理數據中的空值和錯誤值。
3.應用程式開發:
使用Model Builder可以幫助開發人員快速創建地理數據處理應用程式流程,並將其整合到其他應用程式中。
4.地理數據分析:
使用Model Builder可以將多個工具組合起來,以自動化地理數據分析任務,例如:空間統計分析、空間交互作用和空間預測。
3. 練習資料介紹
1.小台中市交通路網圖(線資料)
2.台灣交通事故統計資料
4. Model Builder 步驟教學
以下將示範一個使用QGIS Model Builder的範例,目標是用於分析縣市交通事故資料與縣市路網圖的關聯性,流程簡介如下。
步驟1:建立模型與載入資料
- 新建一個模型(Toolbox頁面->左上齒輪圖案->Create New Model)
- 載入全台交通事故點資料和小台中市路網線資料
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-86.png?resize=900%2C485&ssl=1)
![Toolbox頁面->左上齒輪圖案->Create New Model](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-87.png?resize=369%2C389&ssl=1)
步驟2:萃取小台中市區事故點位
- (Input頁面) 拖曳兩個”Vector Layer”參數,分別命名為Input Layer(traffic point)、Input Layer(city later)加入到模型當中用來讀取點位資料、台中市範圍資料
- (Algorithm頁面) 拖曳Extract by location”工具,以全台交通事故點資料作為輸入,以小台中市範圍圖層作為分析單位,選擇”包含(are within)”萃取出台中市區內部的事故點位。
- ****這邊額外新增一個功能”Create Spatial index”,建立空間索引可以加速後續的運算
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-98.png?resize=281%2C389&ssl=1)
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-100.png?resize=282%2C387&ssl=1)
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-101.png?resize=530%2C460&ssl=1)
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-112.png?resize=900%2C535&ssl=1)
![上半部分流程圖](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-113.png?resize=807%2C235&ssl=1)
步驟3:建立縣市路網緩衝區
- 拖曳一個”Vector Layer”參數,命名為Input Layer(Road),作為Buffer功能的輸入
- 利用“緩衝區(Buffer)”工具,以縣市路網線資料作為輸入,建立緩衝區(範例採用10m),也可以新增一個”Number”參數供使用者輸入這樣更有彈性,其他參數採用預設即可。
![採用固定參數](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-103.png?resize=326%2C273&ssl=1)
![新增Number參數,供使用者輸入](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-108.png?resize=324%2C275&ssl=1)
步驟4:建立路段與事故點的關聯性
- 這邊先額外建立一個”Vector Field”參數作為Spatial Join的統計參數,由於Vector Field必須要搭配一個Vector Layer作為母體,這邊選擇交通事故點的屬性資料作為依據。
- 利用“Join attributes by location sum.(Spatial Join)”工具,以縣市路網線-Buffer資料作為主體,以縣市交通事故點資料作為參考對象,若要讀取其他運算功能產出的資料點選左邊按鈕選擇”Algorithm Output”,按照以下參數設定進行空間關聯性分析。
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-109.png?resize=900%2C537&ssl=1)
![步驟5:計算每個路網Buffer的事故密度](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-107.png?resize=900%2C567&ssl=1)
步驟5:計算每個路網Buffer的事故密度
- 利用“計算欄位(Field Calculator)”工具,以剛剛經Spatial Join後的成果作為輸出,計算出每個區域的事故密度,即事故數量除以緩衝區面積。
![更正: 圖片中的 @buffer_distance 應該更改成 $area(每個道路的面積)](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-111.png?resize=645%2C389&ssl=1)
成果展示
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-110.png?resize=645%2C490&ssl=1)
![](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-114.png?resize=645%2C430&ssl=1)
![成果展示(symbology採用累積事故數量做漸層)](https://i0.wp.com/www.spatialgeolab.com/wp-content/uploads/2023/03/image-115.png?resize=900%2C487&ssl=1)
透過這個範例,我們可以分析出每個縣市事故密集區的空間分佈情況以及與路網的關聯性,今天的分享就到這裡了 希望對你們有幫助,喜歡我的內容的話請可以訂閱我的YT頻道或是追蹤我的FB專頁,支持我產出更多教學內容
*另外也希望可以把我的網站加入Adblock白名單。
練習檔下載
下載請點擊這裡