跳至內容
AI Agent
QGIS
指南

ChatGPT 能寫 QGIS 程式碼嗎?三項實測結果

發布於

可以,ChatGPT 能為您撰寫 PyQGIS 程式碼,簡單的工作通常一次就能跑成功。但它看不到您的專案,也無法在專案中執行任何東西,只能猜測您的圖層和坐標參考系統。猜錯時,腳本可能不報任何錯誤就跑完,卻產出錯誤的地圖。

我在 2026 年 9 月 27 日測試了這件事。我把三項 QGIS 任務交給 OpenAI 的 GPT-5.5,提示的寫法就是一般人在聊天視窗裡的打法,再把它回傳的每個腳本放進 QGIS 3.44 執行,使用的是法國安錫的真實開放資料。兩個腳本第一次回答就是對的,第三個腳本順利執行,卻匯出了一張地圖是空白的列印圖面配置。

三張已匯出的 A4 列印圖面配置,標題為「安錫的學校」。第 1 次回答:有標題、含 Ecole、Collège 和 Lycée 的圖例、延伸出頁面右邊緣的黑色比例尺和指北針,但地圖框是空的。第 2 次回答:出現了行政區和著色的學校,但市區下方被頁面邊緣切掉。第 3 次回答:整個市區都放得下,但只縮小畫在頁面左半部。
同一個列印圖面配置需求,在聊天機器人回答第 1、2、3 次之後的結果。三次都沒有報錯。

ChatGPT 能為 QGIS 使用者做什麼

ChatGPT 是聊天機器人:您在瀏覽器分頁輸入文字,它以文字回覆。用在 QGIS 時,這些文字通常是 PyQGIS,也就是 QGIS 的 Python 介面,您把它貼到 Python 主控台(「外掛程式」→「Python 主控台」)執行。Claude 和 Gemini 的用法也一樣。如果您還不熟悉主控台,可以先看我們的 PyQGIS 指南,了解腳本在哪裡執行。

這樣使用時,聊天機器人很擅長處理 QGIS 工作中瑣碎的部分:

  • 起草會重複使用的腳本,例如對五十個檔案做同樣的環域或裁切。
  • 解讀錯誤訊息,您把主控台的錯誤貼回去即可。
  • 撰寫 QGIS 表示式,用在欄位計算器或規則式樣式。
  • 說明各個空間運算工具的功能,以及它需要哪些參數。

試用不用花錢,對懂一點 Python 的 GIS 使用者來說確實能省時間。問題出在它的運作方式。

它做不到的事:看見或操作您的專案

瀏覽器分頁裡的聊天機器人從來看不到 QGIS。它不知道您的圖層名稱、欄位、坐標參考系統(CRS),也不知道地圖上有什麼。它無法執行自己寫的程式碼,也看不到結果。貼上、執行、檢查,全都由您來做。

所以每個腳本都是盲寫的,缺少的資訊由模型自己猜。在我的測試中,它猜對了兩次、猜錯了一次,而猜錯的那次完全沒有報錯。

測試:三項任務,一般人會寫的 prompt

我挑了三項難度遞增的任務,並在執行前就先寫下正確結果應該長什麼樣子。資料都是開放資料:法國政府地理 API 提供的安錫六個行政區、全國學校名錄中該市的 86 所學校(55 所小學、21 所國中、10 所高中),以及 30 m 的 Copernicus 高程模型。

每個 prompt 只有一行:「I use QGIS 3.44. Write PyQGIS code I can paste into the QGIS Python console」,後面接任務內容,不描述圖層。腳本出錯或輸出看起來不對時,我就把看到的狀況貼回去,每項任務最多三次回答。接著,我在同一個專案中把同樣的三句話交給我們開發的代理外掛 AI Agent。

任務ChatGPT(GPT-5.5)QGIS 內的 AI Agent
為 86 所學校建立 300 m 環域、合併重疊部分、儲存並回報面積第 1 次回答就對:印出 1,472 ha,重新量測為 1,469 ha第 1 則訊息就對:1,472 ha,20 秒
將高程模型裁切到 Annecy-le-Vieux 行政區,回報最小值、最大值和平均值第 1 次回答就對:419 m、1,165 m、575 m第 1 則訊息就對,數值相同,24 秒
列印圖面配置:依類型顯示學校、標題、圖例、比例尺、指北針、輸出 PDF第 1 次地圖是空的,第 2 次地圖被切掉,第 3 次才堪用第 1 則訊息就對,51 秒

聊天機器人每次回答要等 23 到 41 秒,這還不含貼上、執行和開啟 PDF 的時間。AI Agent 的時間則包含在 QGIS 中執行的時間。

哪裡會出錯:能執行,結果卻是錯的

列印圖面配置最能看出問題。ChatGPT 的第一個腳本建立了圖面配置、設定學校的樣式、加入我要求的所有項目,並印出「Exported layout」。但 PDF 裡只有標題、圖例、指北針,和一個空白的地圖框。

原因出在 CRS。我的圖層以度為單位儲存(EPSG:4326),但專案以公尺為單位繪製地圖(EPSG:3857),這是您先加入 OpenStreetMap 底圖時的預設結果。腳本取了圖層以度為單位的範圍,卻交給以公尺為單位的地圖,於是地圖縮放到西非外海的一小塊區域,寬度不到 1 公尺。聊天機器人無從得知專案的 CRS,因為我沒有告訴它,而它也看不到。我們的坐標參考系統介紹說明了為什麼這種不一致這麼常見。

我描述空白 PDF 的狀況後,第二次回答立刻找到原因並修正了範圍。地圖出現了,但地圖框高度達 281 mm,而頁面只有 210 mm 高,所以市區南邊掉出頁面外。第三次回答根本不是完整腳本,而是要貼到第二個腳本某一段上的程式碼片段。看得懂 Python 的人覺得沒問題,不懂的人很容易貼錯。

三次回答之後,圖面配置勉強堪用,但偏小,市區只佔頁面約三分之一。

成功的兩個,有一部分是運氣

環域腳本寫得很乾淨。它依圖層位置選了公制 CRS(UTM 32N 帶),建立環域、合併並儲存,面積與我的量測誤差在 0.2% 以內。

裁切腳本也給出了正確數字,但請看它是怎麼找到行政區的。它不知道哪個圖層存放行政區,也不知道哪個欄位存放名稱,於是讀取每個圖層的每個文字欄位,遇到第一個包含「Annecy-le-Vieux」的值就停下。在這份資料中,86 所學校裡有 11 所的名稱也包含「Annecy-le-Vieux」。它之所以選到行政區,只是因為 QGIS 剛好把行政區圖層排在學校圖層前面。圖層命名不同的話,同一個腳本就可能抓到學校而不是行政區。

看不到專案的聊天機器人就是這種模式。程式碼往往合理,卻建立在猜測上,只有自己檢查輸出,才會知道哪個猜測是錯的。我們先前在 PyQGIS 指南中用另一個聊天機器人做的測試也有同樣的發現:在 prompt 中描述您的圖層、欄位和 CRS,結果會好很多。

QGIS 內的代理會替您檢查

我們開發 AI Agent,所以這一節談的是我們自己的外掛。它是 QGIS 內的對話面板。它會先讀取專案再動手,自行執行 QGIS 工具並查看結果,因此不必貼上程式碼,也不必描述專案。

給它同樣的三句話,三項任務它都在第一則訊息就答對。在裁切任務中,它的記錄顯示它先讀取行政區圖層,依名稱擷取出那一個多邊形,然後才裁切。在圖面配置任務中,它以 Lambert-93 建立地圖、為行政區加上標籤,並檢查每個項目都在頁面範圍內。

QGIS 顯示安錫與湖泊的 OpenStreetMap 底圖,其中 Annecy-le-Vieux 行政區範圍內的高程模型被裁切出來,以灰階顯示,學校點位為粉紅色。右側的 AI Agent 面板寫著已將 dem 裁切至 Annecy-le-Vieux 多邊形並儲存,接著列出 26,676 個有效像素,最小值 419.00 m、最大值 1,165.20 m、平均值 574.55 m,以及兩個新圖層和 6 個動作。
AI Agent 中的裁切任務:一句話、依名稱找到行政區、裁切網格並回報統計值。

它並不完美。環域任務結束後,它在專案中留下了一個工作圖層(「Schools UTM 32N」);在圖面配置中,它把高中畫成灰色,頁面右半邊也大多空著。但它從沒給我一個看起來完成、其實不對的結果。

一張 A4 橫向列印圖面配置,標題為「安錫的學校」,副標題為「安錫上薩瓦省六個行政區共 86 所學校」。六個行政區以淺藍色繪製並標示名稱,學校以紅色、橘色和灰色圓點表示,另有 Collège、Ecole 和 Lycée 的圖例、指北針、2 km 比例尺,以及註明地圖 CRS 為 Lambert-93 的資料來源行。
AI Agent 以同一句話製作的圖面配置,第一則訊息就匯出為 PDF。

它只會把專案的描述(圖層名稱、欄位、CRS、範圍)傳送到託管在歐盟的服務,不會傳送您的資料檔案,而且一鍵就能復原整則訊息的所有變更。另有 Free 方案。

在 QGIS 免費試用 AI Agent,無須信用卡

什麼時候用哪一種

當您想要的是留存並閱讀的程式碼時,就在瀏覽器分頁使用 ChatGPT、Claude 或 Gemini,例如要對許多檔案重複執行的腳本、空間運算腳本或表示式。請告訴它您的 QGIS 版本、圖層名稱、欄位名稱和專案 CRS,並在地圖上檢查輸出,不要只看主控台。

當您想直接在專案中得到結果,不想當那個負責貼上、執行並描述哪裡出錯的傳話人時,就使用 QGIS 內的代理,例如 AI Agent。大多數一次性的工作都屬於這類:環域、裁切、屬性連結、設定好樣式的圖面配置。我們的 QGIS 內的 AI 代理指南比較了各種選項;如果您已經在 Claude Desktop 或 Cursor 中工作,QGIS MCP 是另一條路。

有些 QGIS 外掛會把 ChatGPT 放進面板,例如 QChatGPT,但它自 2023 年 7 月起就沒有更新,而且需要您自己的 OpenAI 金鑰。QGIS AI 總覽列出了我們今天會考慮的工具。

在 QGIS 免費試用 AI Agent,無須信用卡

我們如何量測。 時間是 2026 年 9 月 27 日,環境為 macOS 上的 QGIS 3.44.7,使用上述安錫資料(專案為 EPSG:3857,圖層為 EPSG:4326)。聊天機器人是 OpenAI 的 GPT-5.5,透過 OpenAI 的 Codex 命令列以 ChatGPT 帳戶存取,關閉網頁搜尋和 shell,也無法存取 QGIS。其 system prompt 是 Codex 的,不是 ChatGPT 應用程式的,因此應用程式中的回答可能不同。每個腳本都原封不動地在 Python 主控台執行,唯一例外是第三次圖面配置的回答,我依其要求把它接到第二個腳本中。只有另一個檢查腳本通過、且 PDF 看起來正確,結果才算對。有一次聊天機器人的測試在我們修正測試用 QGIS 的環境問題後重跑,該問題與程式碼無關。AI Agent 1.4.1 使用預設設定執行。三項任務的樣本很小。

常見問題

ChatGPT 能自動化 QGIS 嗎?

它能寫出 PyQGIS 程式碼,由您在 Python 主控台執行。在我們的三項任務測試中,兩個腳本第一次就對,另一個腳本沒有報錯,卻匯出了空白地圖。ChatGPT 本身無法在 QGIS 中執行任何東西,所以貼上、執行和檢查都要由您來做。像 AI Agent 這樣的代理外掛,則是直接在 QGIS 內執行這些步驟。

ChatGPT 看得到我的 QGIS 專案嗎?

看不到。除非您自己輸入,否則它不知道您的圖層名稱、欄位或坐標系統。缺少這些資訊時,腳本只能靠猜,猜錯就可能得到錯誤的結果,而且沒有任何錯誤訊息。把圖層清單、欄位和專案 CRS 貼進 prompt,可以得到比較好的程式碼。

QGIS 有 ChatGPT 外掛嗎?

有,有幾個外掛用您自己的 API 金鑰把 QGIS 連到 OpenAI 的模型。QChatGPT 是下載次數最多的,但它自 2023 年 7 月起就沒有更新。較新的代理外掛會讀取您的專案並自行執行工具。我們的 AI Agent 內含 AI 模型,不需要 API 金鑰,並有 Free 方案。

為什麼 ChatGPT 寫的 PyQGIS 腳本能執行,卻什麼都沒顯示?

最常見的原因是坐標系統不一致:腳本用度量測某個值,卻用在以公尺繪製的地圖上,或是相反。請查看 QGIS 右下角的專案 CRS,並告訴聊天機器人是什麼。量測前先重新投影到公制 CRS,可以解決大部分這類問題。