GeoBridge

ChatGPT 写 QGIS 代码实测:能做什么,不能做什么

GeoAI · 空间智能12 阅读原文发布 2026/9/27编译收录 2026/10/6

在 GIS 工作中,让 ChatGPT 帮忙写一段 PyQGIS 脚本听起来很美好,但实际效果如何?2026 年 9 月 27 日,我们使用 OpenAI 的 GPT-5.5 进行了实测:向它提出三个难度递增的 QGIS 任务,将返回的代码粘贴到 QGIS 3.44 的 Python 控制台中运行,数据采用法国安纳西市的真实开放数据。结果发现,两个脚本首次运行即正确,而第三个脚本虽然运行无报错,却导出了一张空白地图。 聊天机器人本质上是基于浏览器的文本交互工具,它无法“看到”你的 QGIS 项目,不知道图层名称、字段、坐标系(CRS)或地图内容,也无法运行代码或检查结果。因此,它生成的每个脚本都是“盲写”的,只能靠猜测填补信息缺口。在本次测试中,它猜对了两次,猜错了一次,而错误的猜测没有触发任何报错。 测试选取了三个任务:制作安纳西市学校分布打印布局、对学校进行缓冲区分析、以及按名称裁剪出特定行政区。每个提示仅包含一行任务描述,不提供图层信息。当脚本出错时,我们会将错误信息反馈给 ChatGPT,每个任务最多尝试三次。 打印布局任务最能暴露问题。ChatGPT 的第一个脚本成功创建了布局、设置了样式并添加了所有元素,但导出的 PDF 中地图框却是空的。原因在于坐标系不匹配:图层存储为地理坐标系(EPSG:4326),而项目使用 Web 墨卡托(EPSG:3857)绘制地图。脚本直接使用图层的经纬度范围,导致地图缩放到了西非海岸的一片海域。

缓冲区分析脚本表现良好,它自动选择了合适的投影坐标系(UTM 32N),缓冲区面积与手动计算结果仅差 0.2%。裁剪脚本虽然数值正确,但查找行政区的方式存在隐患:它遍历所有图层的文本字段,找到第一个包含“Annecy-le-Vieux”的值。由于 86 所学校中有 11 所名称也包含该词,脚本仅因图层顺序靠前才选中了正确的行政区。 相比之下,我们开发的 AI Agent 插件在同一项目中表现更佳。它内置于 QGIS 中,能读取项目信息、自动运行工具并检查结果,无需粘贴代码。面对同样的三个任务,它首次尝试即全部成功,且能正确处理坐标系和布局。虽然它也有小瑕疵,比如遗留临时图层或配色不理想,但从未给出看似完成实则错误的结果。

那么,何时该用聊天机器人?当你需要可复用、可阅读的代码时——比如批量处理脚本、Processing 脚本或表达式——ChatGPT、Claude 或 Gemini 仍是好帮手。但务必在提示中明确告知 QGIS 版本、图层名称、字段和坐标系,并要求它检查输出。若想体验能直接操作项目的 AI 助手,可免费试用我们的 AI Agent 插件。

编译自 Planet OSGeo,原文链接