動態

詳情 返回 返回

AI在GIS領域的實踐之QGIS-MCP - 動態 詳情

內容可能有改動,一切以原文為準。

目錄
  • 寫在前面
  • 如何安裝
    • 註冊模型服務
    • 安裝uv
    • 安裝QGIS插件以及MCP服務器
      • 安裝QGIS插件
      • 安裝MCP服務器
  • 使用案例
    • 渲染地圖風格
    • 屬性統計
    • NDVI計算
    • 獲取地理位置以及顯示
  • 背後的原理
  • 寫在後面
  • 參考

寫在前面

近期MCP[1]很火哎,不斷涌現出各種各樣的工具。例如利用MCP進行代碼補全/生成,瀏覽器控制,地圖導航,尋址,網絡搜索等[2],一切都是基於自然語言實現的自動化。當然除了上述,我最關心的還是它在GIS領域開出了什麼花,一番搜索之下發現當前開源社區已經存在了一款功能強大的插件——qgis_mcp。

代碼倉庫地址:https://github.com/jjsantos01/qgis_mcp

在我搜索過程中, 幾個頭部的國內外傳統GIS公司,都還沒有發佈正式的MCP工具,如ESRI,Mapinfo和SuperMap(或許已經在開發中只是仍未成熟等待發布,又或許還沒有,又或許是我沒找到)。相較於開源的QGIS,任何人,如果你有能力,都可以給它加上你想要的功能,這一點我認為非常棒,這使得它在某些功能/特性方面推進的更快,雖然效果不一定比閉源好。

嘗試使用這個MCP工具,看看效果如何。

如何安裝

儘管倉庫作者寫的安裝説明已經很清晰明瞭,但由於描述語言是英文,對中文母語者可能不太友好,所以在這裏記錄自己的完整安裝過程。

這個插件系統包含兩個組件,一個是QGIS插件,另一個是MCP服務器。除此之外,還需註冊有一個能正常使用的大模型,可以使用在線的Claude或者DeepSeek等模型提供商。

這些是運行的環境要求:

  • 安裝有QGIS版本 3.X
  • 安裝有Claude desktop(如果使用Claude需要)
  • 安裝有5ire(如果使用DeepSeek,OpenAI等其它模型需要)
  • 安裝有Python 解釋器版本為3.10 或更新
  • 安裝有Python包管理器uv

註冊模型服務

一步步來,首先最重要的是模型提供商的賬户。Deepseek等直接到官網註冊即可,而Claude以及OpenAI等並未在中國大陸及港澳台提供模型服務,所以註冊步驟會有點曲折,網上也有許多相關資料攻略,這裏就不再延伸展開。

安裝uv

用它來運行MCP 服務器本體,macOS用户可使用homebrew安裝,執行如下命令:

brew install uv

windows用户可使用powershell安裝,執行如下命令:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

如若通過上述命令無法安裝,則直接上官網下載。

安裝QGIS插件以及MCP服務器

安裝QGIS插件

下載倉庫源碼,使用Git或者直接以zip格式下載後解壓。

打開QGIS,依次點擊Settings->User profiles->Open active profile folder,進入目錄之後,再進入 python -> plugin目錄,將上一步下載好的插件文件夾裏的qgis_mcp_plugin複製到plugin,接着重啓QGIS。

image-20250328231749719

再次打開,進入 Plugins -> Mange Plugins,選擇Installed,勾選啓用插件。

image-20250328231828274

接着你的軟件界面會出現如下窗口,點擊Start Server,插件就安裝好了。

image-20250328232004308

安裝MCP服務器

如果用的是Claude則安裝該客户端,否則跳過。

先到Claude官網按照操作系統下載客户端,安裝後運行。

進入設置 Settings -> Developer -> Edit Concig

image-20250328232434289

編寫如下,其中只需要修改一項,然後重啓Claude客户端。

{
    "mcpServers": {
        "qgis": {
            "command": "uv",
            "args": [
                "--directory",
              "/這裏是填寫下載倉庫代碼後打開的目錄/qgis_mcp/src/qgis_mcp",
                "run",
                "qgis_mcp_server.py"
            ]
        }

    }
}

打開Claude對話框,聊天框底部有個小錘子,就代表安裝成功了(如果僅安裝了QGIS MCP一個服務的話,不放心可以點擊小錘子,查看是否有QGIS相關服務)

image-20250328233029608

如果使用DeepSeek或者OpenAI等,則安裝該客户端。

打開5ire發行頁面,根據操作系統選擇合適版本下載後安裝,打開設置頁面。

image-20250329164725217

先設置大模型

image-20250329164830318

接着設置MCP服務

image-20250329164959170 image-20250329165109929

名稱,標識什麼的隨便填寫,但是命令必須如以下格式一致。

image-20250329165220176

使用案例

這裏使用Claude客户端來測試,而使用5ire的話流程是一樣的。

渲染地圖風格

先來測試一下,我預先往地圖畫布中添加一個矢量圖層,然後按照字段讓它分層設色。

原始圖

接着提問它:

當前圖層中,幫我按照“地級碼”對圖層進行分組,並設置不同顏色風格

分層設色

屬性統計

可以看到它正確理解了我的指令並完成相關工作。然後我又讓它統計即每個要素(即圖中的區縣)的面積,並生成統計表格和圖表。

幫我統計當前矢量圖層中,每一個要素的面積,並製作一份柱狀圖統計表格,我使用的是macOS,桌面路徑為/Users/wsh/Desktop。

要素統計

執行結果有一份excel和下面這張圖片。我猜測它使用Matplotlib來繪製,因為沒有正確設置字體,所以中文標籤變成口口口。

需要再點撥一下,將提示詞修改為如下,再次執行,圖表就顯示正常了。

幫我計算所有要素的面積,並生成一個柱狀圖,圖表標籤是地名,地名字段的名稱為“地名”。圖表標籤是中文,所以你需要正確設置繪製指令以至顯示,最後將結果保存在我的桌面上。

統計圖表

NDVI計算

難度提升,讓它計算Landsat 5 多波段遙感影像的NDVI指數,

在路徑為/Users/wsh/Desktop/data的文件夾,裏面的子文件夾是一期Ladsat 5衞星遙感影像,包含多個波段。根據這些影像,請幫我計算NDVI指數,並顯示在地圖上

下圖的NDVI計算結果是錯誤的,不知道是不是因為我沒有提供足夠的信息,調整了好幾次提示詞,都沒有成功。

計算NDVI指數

下圖是我手動計算的結果。

獲取地理位置以及顯示

我讓它幫忙查看杭州所有大學在地圖上的分佈。

幫我獲取杭州所有大學的名單及其經緯度座標,並顯示在地圖上

大模型獲取到了座標信息,但是並不能將其渲染到QGIS地圖畫布中,因為該MCP工具暫時還不支持根據文本座標創建點圖層。不過它令人驚喜的一點是,在MCP不支持自動生成點圖層的情況下,它通過生成一份HTML網頁這種“曲線救國”的方式完成了我的需求,用瀏覽器打開,可以進行簡單的交互查看。

image-20250329115034893

背後的原理

先暫時拋開那些專業且複雜的名詞,定義,簡單瞭解下大模型,MCP服務器,QGIS插件,QGIS四者,它們之間如何互相協同完成需求[3]

graph TD user[用户1] --> llm[大模型] user2[用户2] --> llm[大模型] llm <--> mcp[MCP服務器] mcp <--> plugin[QGIS插件] plugin <--> QGIS

大模型作為總指揮,它理解人類語言將需求分解,然後間接控制QGIS執行一系列動作來完成需求,而MCP服務器和QGIS插件可以看作是控制的手段(類似計算機裏的中間件)。它通過MCP協議與MCP服務器交互。

MCP服務器作為工具箱的角色,它告訴大模型它內部實現了什麼服務,通過它可以執行哪些功能,執行功能的時候需要提供哪些輸入數據等一系列上下文信息。

QGIS插件則是MCP服務器所描述的功能的實現者。通俗點説就是MCP服務器畫大餅,然後它來幹活。它與服務器一般採用WebAPI來通信。

最後是QGIS,其實它才是真正的打工人,因為QGIS插件只是調用了它的API來完成具體工作。

寫在後面

目前MCP在GIS領域的應用尚在起步階段,功能還不是很豐富,未來應該會有越來越多服務集成進來,特別是基於位置的服務(LBS)。

附帶一些小吐槽,首先是整個MCP體系太繁瑣了,安裝這又那的,而且每一個MCP服務都是獨立的,也就是説A電腦安裝後無法與B電腦共享(未來會不會出現那種MCPServerHub)。

其次MCP服務的運行環境是python或者node,如果安裝多個服務是否會造成資源浪費,畢竟不是每一個服務都時刻在用,能不能複用一套環境呢。

最後這一條僅針對GIS,使用它來處理地理數據有泄密風險。因為GIS特殊的行業性質,導致許多數據涉密,不能使用互聯網上公開的大模型服務來處理,除非是個人或者企業內部部署,光這一條我覺得就已經將一半的人攔在門外。

參考


  1. https://www.claudemcp.com/ ↩︎

  2. https://www.bilibili.com/video/BV1MjZ5YrESn/?spm_id_from=333.1007.top_right_bar_window_dynamic.content.click&vd_source=10d0f86227f3c318f8237345caac47c8 ↩︎

  3. https://www.cnblogs.com/lwp-nicol/p/18793956 ↩︎

Add a new 評論

Some HTML is okay.