
文章目錄
[QGIS教學系列] 出一張嘴AI畫地圖-QGIS_MCP!
上次筆者介紹了透過AI Agent自動化操作QGIS的外掛套件,其開發概念透過LLM自動化產生程式碼然後調用軟體對應的SDK或是API來達到自動化操作,但由於沒有統一的串接規格,導致不同模型以及軟體的整合不易,今天要介紹的Model Context Protocol應運而生,目前網路上有許多介紹影片可以參考
1. QGIS-MCP介紹
QGIS MCP是一個連接 QGIS 與大型語言模型(LLM)的協議,允許 LLM 直接與 QGIS 互動並進行控制。
主要特性:
- 雙向通訊:透過基於 socket 的伺服器,將 LLM(如 Claude AI;Cline)連接至 QGIS。
- 專案操作:在 QGIS 中創建、載入和保存專案。
- 圖層操作:向專案中添加或移除向量或柵格圖層。
- 執行處理:執行處理算法(Processing Toolbox)。
- 代碼執行:從 LLM 遠端運行任意 Python 代碼於 QGIS 中,功能強大,但需謹慎使用(可能毀壞現有檔案!!!)
2. 教學影片
2. 實際範例提示詞(Prompt)
對於實際操作可以參考上方的的YT教學影片,這邊提供範例練習以及對應的提示詞。
1.確認套件是否連接成功
2.替我加入QGIS 內建的OSM tile
3.替我zoom to 台北區域
4.請搜尋網路上是否有關於台北市區或台灣相關的鄉鎮市區界線geojson
0.如果我沒有請你生成地圖時 請不要主動生成
以下的所有分析其圖層跟輸出檔案都都儲存在K:\250321_QGIS_MCP,並確保要載入到QGIS當中
- 檢查 QGIS MCP 是否連線成功。
(功能:確認 MCP server 可正常回應,使用 `ping` 指令)
- 建立一個新的 QGIS 專案名為 `taichang_green_stat`,並儲存於 `K:\250321_QGIS_MCP\taichang_green_stat.qgz`。
(功能:`create_new_project`,建立與儲存專案)
- 添加 QGIS 內建的 OSM tile 為底圖。
(功能:使用 `XYZ Tile` 建立底圖圖層並加入 QGIS)
- 載入城市行政區邊界圖層 `K:\250321_QGIS_MCP\town.gpkg`,圖層命名為 `town`,並縮放至該圖層。
(功能:`add_vector_layer` + `zoom_to_layer`)
- 載入 Sentinel-2 波段影像:K:\250321_QGIS_MCP\S2\
- 紅光:`B04.tiff`
- 近紅外:`B08.tiff`
(功能:`add_raster_layer`,為 NDVI 計算準備所需波段)
- 計算 NDVI 並輸出至 `K:\250321_QGIS_MCP\ndvi.tif`。
(功能:`qgis:rastercalculator`,公式為 `(B08 - B04) / (B08 + B04)`)
- 使用 `town.gpkg` 中 `COUNTYNAME` 欄位為「臺中市」的區域為遮罩,裁切 NDVI 至台中範圍,輸出為 `ndvi_taichung.tif`。
(功能:`native:extractbyattribute` 篩選台中 → `gdal:cliprasterbymasklayer` 裁切)
- 縮放視圖至臺中市區域。
(功能:`zoom_to_layer` 或 PyQGIS canvas zoom 至指定區域)
- 將 `ndvi_taichung.tif` 重新分類:NDVI 值大於 0.4 者設為 1(綠地),其餘設為 0(非綠地),輸出為 `ndvi_binary.tif`。
(功能:`gdal:reclassifybytable`)
- 根據適當網格大小(例如 10m x 10m)將 `ndvi_binary.tif` 轉換為向量圖層,輸出為 `green_vector.shp` ,確認已經轉換成投影座標(3826)採用`add geometry attributes` 加入面積屬性
(功能:`gdal:polygonize` 將二值影像轉換為多邊形)
- 將 `green_vector.shp` 與 `town.gpkg` 中的台中區域圖層進行空間統計*(,計算每個行政區中的綠地總面積。
(功能:`Join attributes by location (summary)`->統計方法為”SUM” )
- 將綠地統計結果加回臺中市行政區屬性表中,並另存為 `taichung_green_stat.shp`。
(功能:`native:joinattributestable` 或直接輸出統計結果為新圖層)
- 對 `taichung_green_stat.shp` 設定樣式:
- 使用綠地覆蓋率欄位
- 分級方式使用等分位數(Quantile)
- 分 5 級
- 色帶使用 Spectral 或 Jet
(功能:`execute_code` + PyQGIS 設定 `QgsGraduatedSymbolRenderer`)
- 縮放地圖視圖至整個行政區圖層範圍。
(功能:`zoom_to_layer`)
- 匯出目前地圖畫面為圖片,儲存為 `K:\250321_QGIS_MCP\taichung_green_stat_map.png`。
(功能:`render_map`)
- 儲存整個 QGIS 專案,更新後內容寫回 `taichang_green_stat.qgz`。
(功能:`save_project`)