ChatGPT 能做 QGIS 吗?三项 PyQGIS 实测
发布于
可以,ChatGPT 能为您编写 PyQGIS 代码,简单任务的代码往往一次就能跑通。但它看不到您的工程,也无法在其中运行任何东西,只能猜测您的图层和坐标参照系。猜错时,脚本可能顺利结束、没有任何报错,交出来的却是一张错误的地图。
我在 2026 年 9 月 27 日做了这项测试。我给 OpenAI 的 GPT-5.5 布置了三项 QGIS 任务,措辞就是大多数人在聊天框里的写法,然后把它返回的每个脚本都放到 QGIS 3.44 中运行,数据是法国安纳西的真实开放数据。两个脚本第一次回答就是对的,第三个运行干净利落,导出的打印布局里地图却是空的。

ChatGPT 能为 QGIS 用户做什么
ChatGPT 是聊天机器人:您在浏览器标签页里输入,它以文字回答。对 QGIS 来说,这些文字通常是 PyQGIS,也就是 QGIS 的 Python 接口,您把它粘贴到 Python 控制台(插件 > Python 控制台,英文界面为 Plugins > Python Console)中运行。Claude 和 Gemini 的用法相同。如果您还不熟悉控制台,我们的 PyQGIS 指南介绍了脚本在哪里运行。
这样使用时,聊天机器人很擅长处理 QGIS 工作中许多枯燥的部分:
- 起草可重复使用的脚本,例如对五十个文件做同样的缓冲区或裁剪。
- 解释错误信息,您把控制台里的报错贴回去即可。
- 编写 QGIS 表达式,用于字段计算器或基于规则的样式。
- 告诉您某个处理工具有什么用,以及它接受哪些参数。
试用不花钱,对懂一点 Python 的 GIS 用户来说,确实能省不少时间。问题出在它的工作方式上。
它做不到的事:看到或操作您的工程
浏览器标签页里的聊天机器人从来看不到 QGIS。它不知道您的图层名称、字段、坐标参照系(CRS),也不知道地图上有什么。它不能运行自己写的代码,也看不到结果。粘贴、运行、检查,全部由您来做。
所以每个脚本都是盲写的,模型用猜测填补空白。在我的测试中,它有两次猜对,一次猜错,而猜错的那次完全没有报错。
测试:三项任务,大多数人会写的提示词
我挑了三项由易到难的任务,并在运行之前先写下了正确结果应有的样子。数据都是开放数据:来自法国政府 geo API 的安纳西六个街区,来自全国学校名录的该镇 86 所学校(55 所小学、21 所初中 collège、10 所高中 lycée),以及一份 30 m 的 Copernicus 高程模型。
每条提示词只有一行,原文为英文“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 底图时就会这样。脚本取了图层以度为单位的范围,交给了一幅以米为单位的地图,结果地图缩放到了西非外海的一小块海面上,宽度不到一米。聊天机器人无从知道工程的 CRS,因为我没有告诉它,而它也无法自己查看。我们的什么是 CRS一文解释了这种不一致为什么这么常见。
当我描述了空白 PDF 的情况后,第二次回答立刻找到了原因并修正了范围。地图出来了,但地图框高达 281 mm,而页面只有 210 mm 高,于是城镇南部掉出了页面。第三次回答根本不是脚本,而是一段要粘贴到第二个脚本某一部分之上的代码,会读 Python 的人处理起来没问题,不会读的人很容易出错。
三次回答之后,布局可以用了,但偏小,城镇只占页面的大约三分之一。
做对的两项,多少有些运气
缓冲区脚本很干净。它根据图层的位置选了一个以米为单位的 CRS(UTM 32N 带),然后做缓冲区、合并、保存,算出的面积与我的结果相差不超过 0.2%。
裁剪脚本给出的数字也是对的,但请看它是怎么找到街区的。它不知道哪个图层存放街区,也不知道哪个字段存放名称,于是读取了所有图层的所有文本字段,遇到第一个包含“Annecy-le-Vieux”的值就停下。在这份数据中,86 所学校里有 11 所的校名也包含“Annecy-le-Vieux”。它之所以选中了街区,只是因为 QGIS 碰巧把街区图层列在学校图层前面。换一种图层命名,同一个脚本就可能抓到一所学校,而不是街区。
看不到您工程的聊天机器人就是这样:代码往往合理,却建立在猜测之上,哪一个猜测错了,只有您自己检查输出才能发现。我们之前在 PyQGIS 指南中用另一款聊天机器人做过测试,结论相同:在提示词里描述清楚您的图层、字段和 CRS,结果会好得多。
QGIS 内的智能体替您做检查
我们开发了 AI Agent,所以这一节讲的是我们自己的插件。它是 QGIS 内部的一个对话面板。它在动手之前先读取工程,自己运行 QGIS 工具并查看结果,因此既不用粘贴代码,也不用向它描述工程。
给它同样的三句话,三项任务它第一条消息就全部做对。在裁剪任务中,它的日志显示它先读取了街区图层,按名称提取出那一个多边形,然后才做裁剪。在布局任务中,它用 Lambert-93 构建地图,给街区加了标注,并检查了每个元素都在页面之内。

它并不完美。缓冲区任务之后,它在工程里留下了一个工作图层(“Schools UTM 32N”);在布局中,它把高中画成了灰色,页面右半部分也基本空着。但它从未交给我一个看起来完成、实际上没完成的结果。

它向欧盟境内托管的服务发送的是工程的描述(图层名称、字段、CRS、范围),从不发送您的数据文件,并且一键即可撤销整条消息的所有操作。提供 Free 套餐。
如何选择
如果您想要一段会保留、会阅读的代码,就在浏览器标签页里使用 ChatGPT、Claude 或 Gemini,比如需要对很多文件重复运行的脚本、处理脚本或表达式。请告诉它您的 QGIS 版本、图层名称、字段名称和工程 CRS,并且要在地图上检查输出,而不是只看控制台。
如果您想直接在工程里得到结果,不想当那个粘贴、运行、再描述哪里出错的“传话人”,就使用 QGIS 内的智能体,例如 AI Agent。大多数一次性任务都属于这种情况:缓冲区、裁剪、连接、带样式的布局。我们的 QGIS 中的 AI 智能体指南对各种方案做了比较;如果您本来就在 Claude Desktop 或 Cursor 中工作,QGIS MCP 是更合适的路线。
有些 QGIS 插件把 ChatGPT 放进了面板里,比如 QChatGPT,但它自 2023 年 7 月起就没有更新过,而且需要您自己的 OpenAI 密钥。QGIS AI 专题页列出了我们今天会考虑的工具。
我们是怎么测的。 2026 年 9 月 27 日,在 macOS 上的 QGIS 3.44.7 中,使用上述安纳西数据(工程为 EPSG:3857,图层为 EPSG:4326)。聊天机器人是 OpenAI 的 GPT-5.5,通过 OpenAI 的 Codex 命令行工具并使用 ChatGPT 账户访问,关闭了联网搜索和 shell,也无法访问 QGIS。它使用的系统提示词是 Codex 的,而不是 ChatGPT 应用的,所以应用中的回答可能有所不同。每个脚本都按返回的原样在 Python 控制台中运行,只有第三次布局回答例外,我按它的要求把它拼接进了第二个脚本。只有在另一个检查脚本通过且 PDF 看起来正确时,结果才算正确。有一次聊天机器人的运行重做过,原因是我们修复了测试用 QGIS 中一个与代码无关的配置问题。AI Agent 1.4.1 使用默认设置运行。三项任务只是一个小样本。
常见问题
ChatGPT 能自动化 QGIS 吗?
它能编写 PyQGIS 代码,由您在 Python 控制台中运行。在我们的三项任务测试中,两个脚本第一次就是对的,一个脚本运行没有报错,却导出了空白地图。ChatGPT 自己无法在 QGIS 中运行任何东西,所以粘贴、运行和检查都要由您来做。像 AI Agent 这样的智能体插件则直接在 QGIS 内部执行这些步骤。
ChatGPT 能看到我的 QGIS 工程吗?
不能。除非您自己输入,否则它不知道您的图层名称、字段或坐标参照系。在缺少这些信息的情况下写出的脚本只能靠猜,猜错了可能得到错误的结果,而且没有任何错误信息。把图层列表、字段和工程 CRS 贴进提示词,就能得到更好的代码。
QGIS 有 ChatGPT 插件吗?
有,一些插件可以用您自己的 API 密钥把 QGIS 连接到 OpenAI 的模型。QChatGPT 是下载量最多的一个,但它自 2023 年 7 月起就没有更新过。较新的智能体插件会读取您的工程,并自己运行工具。我们的 AI Agent 内置 AI 模型,无需 API 密钥,并提供 Free 套餐。
为什么 ChatGPT 写的 PyQGIS 脚本能运行,却什么都没显示?
最常见的原因是坐标参照系不一致:脚本以度为单位测量了某个值,却用在以米为单位绘制的地图上,或者反过来。请查看 QGIS 右下角的工程 CRS,并告诉聊天机器人它是什么。测量之前先重投影到以米为单位的 CRS,可以解决大部分这类问题。


