给 QGIS 装个 AI,让它自己画地图
GeoPilot空间智能体
GIS 圈最近都在聊「空间智能体」:给 GIS 软件接个大模型,让它听懂人话、自己跑分析、自己出图。听起来很美,但到底能不能真干活?
我把这件事当成了测试题:装一个免费的 QGIS AI 插件(GeoPilot),接上 DeepSeek,用真实的企业点数据跑了 3 个递进任务——统计、专题图、热力图。
结论先放这儿:基础任务 AI 一次就成,涉及出图的多步任务,它写得出「专业级代码」,却会在细节上反复翻车。而且,装这个插件本身就让我踩了 13 个坑,其中有一个还是能把 API key 发错服务器的安全级隐患。
一、怎么测的
测试对象是 GeoPilot——QGIS 官方插件库里的免费插件,内置对 18 家 AI 提供商的接入,包括 DeepSeek。环境是本机 QGIS 3.40.12 + PostgreSQL/PostGIS,数据是 shangpu_dy 企业点图层(11304 条,山东企业,以鲁北为主)。
三个任务难度递增:①统计要素总数和各区县企业数;②按区县字段生成分类专题图;③生成企业分布核密度热力图。
图 1 GeoPilot 设置面板:选择 DeepSeek 服务商,填入 API Key 即可使用
二、三个真实发现
发现 1:基础统计,AI 一次就成
任务 1 的指令是「统计 shangpu_dy 图层的要素总数,并按区县统计企业数量,列出前 3」。GeoPilot 生成代码后一次执行成功,结果干净利落:
表 1 任务 1 结果
区县 | 企业数量 |
东营区 | 4008 |
(空值) | 2589 |
垦利区 | 1160 |
这个结果有两个看点:一是 AI 能正确理解「按字段分组统计」的 GIS 逻辑;二是数据本身存在 2589 条区县字段为空的质量问题——AI 没有报错,而是如实统计为「空值」,处理很稳。
发现 2:装这个插件,我先踩了 13 个坑
真正劝退人的不是 AI,是插件本身。GeoPilot 从安装到能跑,我陆续修了 13 处:漏 import、相对导入写错、执行环境没注入 QGIS 类、DeepSeek 思考模式吞掉输出预算……挑几个有代表性的:
表 2 13 处修复里最值得记住的 4 个
坑 | 表现 | 后果 |
key 默认发错服务器 | base_url 未配置时打到 openai.com | DeepSeek key 会发往错误服务器(高危) |
漏 import 连锁反应 | 一处 import 失败让整个注入链失效 | QColor/QVariant 等全报未定义 |
DeepSeek 思考模式 | max_tokens 被推理过程吞掉 | 返回半截代码或长时间卡住 |
相对导入写错 | from base 应为 from .base | 插件直接无法加载 |
其中最关键的一条:如果你的 key 发错服务器,等于把密钥送给了第三方。用任何 AI 插件前,务必先确认 provider 的 base_url 指向正确的服务商——我这次就差点踩进去。
DeepSeek 的坑也值得单独说:它的思考模式默认开启,会把输出预算大量消耗在推理过程上,导致代码生成到一半被截断。实测把 thinking 显式关闭(thinking: disabled)并把 max_tokens 调到 8000 后,23.5 秒返回完整代码,问题解决。
发现 3:AI 能写专业代码,但细节执行不稳
任务 2 和任务 3 才是见真章的地方。任务 2 按区县生成分类专题图,AI 生成的代码逻辑相当专业——它甚至主动处理了「点图层 vs 面图层」的符号类型问题。但执行层一路报错:点图层误用面符号导致「图层有数据但地图不显示」、漏 import QColor/QVariant、QgsFeatureIterator 没有 size 方法……最终靠人工修正兜底才跑通。
图 2 按区县分类的专题图
任务 3 热力图更典型,AI 经历了 4 次迭代:第一次把栅格输出写进 memory:(只能存矢量)直接报错;第二次修好输出路径,却把半径从 0.045 度错改成「200 米」,忘了 EPSG:4326 坐标系下单位是度;第三次补了 import 却把渲染逻辑弄丢了;第四次跑通但仍是灰度,最终人工补上彩色渲染才出成品。
图 3企业分布核密度热力图
一句话总结:AI 在任务 2、3 里展现的 GIS 知识是对的(它懂坐标系、懂 KDE、懂伪彩色渲染),但「一次写对并能执行」和「写对代码」之间还有不小的距离——细节错误需要人来兜底。
三、实用结论
1. 简单统计任务,AI 可以独立完成,交付质量稳定。
2. 涉及渲染、出图、多步空间分析的任务,AI 大概率需要人工兜底,别指望全自动。
3. 用任何 AI 插件前,先检查 provider 配置,确认 base_url 指向正确的服务商,别让 key 发错服务器。
4. 用 DeepSeek 生成代码,务必显式关闭思考模式并把 max_tokens 调到 8000 以上,否则会拿到半截代码。
5. 判断一个 AI 是否「真懂 GIS」,就看它能不能处理坐标系单位、符号类型这类隐性知识——这比会不会调 API 更能说明问题。
空间智能体确实是趋势,但现阶段它的准确定位是「专业助手」,不是「全自动 GIS 工程师」。它负责把专业逻辑写对,你负责让它跑起来——这正是现在最现实的分工。