跳转到内容
AI Agent
QGIS
指南

Claude 怎么连接 QGIS?3 种方法同一任务实测

发布于

Anthropic 没有为 QGIS 发布官方插件。在 QGIS 中使用 Claude 主要有三种方法:通过 QGIS MCP 服务器连接 Claude Desktop 或 Claude Code,让 Claude 编写 PyQGIS 代码再粘贴到 Python 控制台中运行,或者在 QGIS 内安装一个智能体插件。

2026 年 11 月 7 日,我测试了 Claude 处理一项真实任务的表现:加载印度浦那(Pune)的行政区和 OpenStreetMap 学校数据,统计每个多边形内的学校数量,并制作分级统计图。Claude Sonnet 5.5 写的两个 PyQGIS 脚本,粘贴后都没能直接运行,其中一个在我替换了数据服务器 URL 之后用 44 到 48 秒跑通。QGIS 内的智能体连续两次运行同一条提示词,分别在 45 到 63 秒内完成。

QGIS 窗口,显示蓝色调的浦那各选区学校数量分级统计图,左侧是图层树,右侧 AI Agent 聊天面板显示提示词、所选的浦那城市选区,以及最终结果:58 个选区共 256 所学校。
在 QGIS 中用一句话制作的浦那学校分级统计图:63 秒内统计出 58 个选区共 256 所 OpenStreetMap 学校。

在 QGIS 中使用 Claude 有哪些方法?

把 Claude 连接到 QGIS,要么是给 Anthropic 的模型搭一座桥,让它能在您打开的工程中运行工具,要么是在聊天窗口和 QGIS Python 控制台之间来回复制 PyQGIS 脚本。第三种方法不用搭桥,而是直接在 QGIS 内放一个 AI 智能体面板。

大多数教程只介绍 Model Context Protocol(MCP)这座桥。在安装额外的命令行工具或编辑配置文件之前,最好先看清三种方法各需要什么,以及给它们同一项任务时会发生什么。

方法 1:Claude + QGIS MCP方法 2:Claude 编写 PyQGIS方法 3:QGIS 内的智能体
设置步骤5 步(安装插件、uv、客户端、配置,每次会话都要点 Run MCP)0 个设置步骤(每项任务点 3 次:打开编辑器、粘贴、运行)3 步(从 QGIS 插件管理器安装、打开面板、登录)
需要什么Claude Desktop(免费或付费)或 Claude Code(付费套餐),外加 uv 和一个本地服务器任何 Claude 聊天,无需额外软件QGIS 3.28+ 和一个免费账户(无需 API 密钥或信用卡)
谁运行代码Claude 通过本地 MCP 端口触发工具您在 Python 控制台中粘贴并运行脚本插件运行 QGIS 工具并自己检查地图
能看到您的工程吗?能,前提是 MCP 服务器正在运行不能,除非您在提示词中写明图层名称和 CRS能,读取已打开的图层、字段和地图范围
撤销在 QGIS 中手动清理在 QGIS 中手动清理每条回答下都有一键撤销更改按钮
浦那任务结果未在浦那上运行(在类似的里昂学校任务上用了 9 分 28 秒)2 个脚本粘贴后 0 个能直接运行;改 URL 后 1 个在 44 到 48 秒内跑通(14 个 taluka 中 447 所学校)2 次运行均通过,分别用时 63 秒和约 45 秒(58 个城市选区中 256 所学校)

如果您想不借助任何 AI 手工完成这项任务,免费的 QGIS 做法需要四步:用 矢量 > QuickOSM > QuickOSM...(英文界面为 Vector > QuickOSM > QuickOSM...)下载边界和 amenity=school 点,运行 Vector > Analysis Tools > Count Points in Polygon...(native:countpointsinpolygon,即统计多边形内的点数),然后在 图层属性 > 符号化(英文界面为 Layer Properties > Symbology)中把新的计数字段设为“分级”(Graduated)。

QGIS 插件库里有 Claude 插件吗?

QGIS 插件库中没有 Anthropic 的官方插件。我在 2026 年 11 月 7 日查看插件库索引时(QGIS 3.44 有 4,399 个插件,QGIS 4.0 有 1,697 个),有 45 个插件的元数据中包含“claude”一词,但其中 36 个只是把 Claude 列为编程助手,或者作者名叫 Claude。

真正把 Claude 模型或订阅连接到 QGIS 的社区插件只有九个:

  • QGIS MCP(作者 Nicolas Karasiak,v0.15.2,截至 2026 年 11 月 7 日下载 77,002 次):开放一个本地端口,让 Claude Desktop、Claude Code 或 Cursor 能在 QGIS 内运行 125 个工具。
  • WAI QGIS MCP(v0.3.0,下载 753 次):通过单个 .mcpb 扩展文件连接 Claude Desktop,您不必自己安装 Node.js。
  • QGIS Agent(作者 bunkmr,v2.4.15,下载 3,783 次)、QGIS Agent Mcp(v0.5.0,下载 3,210 次)、QGIS Salah MCP(v1.1.1,下载 2,037 次)和 ClaudIA QGIS(v0.4.6,下载 784 次):其他 MCP 套接字服务器或面板,需要使用您自己的 API 密钥。
  • LandTalk.AI(v1.5.0,下载 5,927 次)和 AI Copilot(v1.8.0,下载 2,098 次):支持多种模型的聊天面板,可接入 Claude、OpenAI 或 Gemini 密钥。
  • Mapsuke(作者 MIERUNE,v1.6.0,下载 1,242 次,2026 年 10 月 30 日更新):QGIS 3.44+ 内的聊天面板,直接使用您现有的 Claude Code 或 Codex 登录,无需 MCP 服务器,前提是您已安装 Claude Code CLI。

需要哪种 Claude 套餐,取决于您的连接方式。根据 Anthropic 的套餐对比页面(2026 年 11 月 7 日查阅),Claude Desktop 聊天在 Free 套餐以及 Pro、Max、Ultra、Team 和 Enterprise 套餐中都可以使用,您可以通过 Settings > Developer > Edit Config 或 Desktop Extensions 接入本地 MCP 服务器。Claude Code 是 Mapsuke 等插件和命令行工作流所依赖的命令行工具,Free 套餐不包含它,需要 Pro、Max 或 Ultra 订阅。

测试:统计浦那各区的学校数量

我为分析搜索结果空白而读过的每篇教程,都是在作者硬盘上已有的文件上测试 Claude。而在真实的 GIS 工作中,您经常需要让工具去获取一座它从没见过的城市的开放数据。

2026 年 11 月 7 日,我在运行任何东西之前先写下了成功标准。提示词只有一句话:

Load the districts of Pune, India and the schools from OpenStreetMap, count schools per district and make a choropleth.

(意思是:从 OpenStreetMap 加载印度浦那的行政区和学校,统计每个区的学校数量,并制作分级统计图。)

我特意选了浦那,因为“districts of Pune”有歧义。浦那是马哈拉施特拉邦的一个县,下分 14 个分县(taluka 或 tehsil),而浦那市则分为 15 个行政区办事处和 58 个选区。好的工作流程要么会问您指的是哪种边界,要么会明确说明它加载的是哪一种。

方法 2:让 Claude 写 PyQGIS 代码再粘贴

对于复制粘贴这种方法,我用完全相同的提示词运行了 Claude Sonnet 5.5 两次(claude-sonnet-5-5,通过 Claude Code 2.1.306 调用,关闭所有工具和网络访问,相当于一个普通聊天窗口),只额外加了一句“I use QGIS. Write the PyQGIS code I can paste in the QGIS Python console for this task”。如果您从没用过控制台,我们的 PyQGIS 指南介绍了脚本在那里如何运行。

Claude 生成第一个 134 行的脚本用了 77 秒,第二个 108 行的脚本用了 67 秒。两次回答都指出“districts”有歧义,选择了 admin_level=6(浦那县的 14 个 taluka),并说明了如何在代码中修改级别。第二次回答末尾还加了一句中肯的提醒:“I haven't run it, so the first run is the test.”(我没有运行过它,所以第一次运行就是测试。)

两个脚本粘贴到 QGIS 3.44.15 后都没能直接运行:

  1. **第 1 次回答在 1 秒后失败,报错 URLError: <urlopen error [Errno 61] Connection refused>。**脚本调用的是主公共 Overpass 服务器(overpass-api.de),那天上午它拒绝了来自我们 IP 的连接。
  2. **第 2 次回答在第 3 行就失败了,还没发出任何网络请求。**它报错 ImportError: cannot import name 'QgsClassificationNaturalBreaks' from 'qgis.core'。
QGIS Python 控制台显示红色的 Traceback,粘贴脚本第 3 行报错 ImportError: cannot import name QgsClassificationNaturalBreaks from qgis.core。
Claude 的第二个 PyQGIS 脚本停在第 3 行:QGIS 3.44.15 中不存在 QgsClassificationNaturalBreaks(真正的类是 QgsClassificationJenks)。

在 QGIS 3.44 中,自然断点分类的类名是 QgsClassificationJenks,而不是 QgsClassificationNaturalBreaks。没有工具的聊天机器人无法针对您的 QGIS 版本测试自己的导入语句,所以一个编造的类名就能让整个脚本停下来。我们在安纳西用三项任务测试 ChatGPT 用于 QGIS 时,也看到了完全相同的盲猜模式。

为了看看 Claude 的第一个脚本其他部分是否可靠,我在第 1 次回答中改了一个常量,把 overpass-api.de 换成法国镜像 overpass.openstreetmap.fr,然后在干净的图层树上运行了三次。服务器可用时,它分别用 48、44 和 45 秒完成。

浦那县 14 个 taluka 的地图,以红色分级色调显示,上面叠加黑色学校点,由修改 Overpass 服务器 URL 后的 Claude 第一个 PyQGIS 脚本生成。
替换 Overpass URL 后 Claude 的第一个脚本:在浦那 14 个 taluka 中统计出 447 所学校,按分位数分级设置样式。

第 1 次回答的计算是对的:它加载了 14 个 taluka 多边形和 447 个学校要素,我独立重新计算点在多边形内的数量后,447 所学校全部与 n_schools 字段吻合,零误差(Pune City Subdistrict 246 所,Haveli 75 所,Mulshi 55 所,Indapur、Velhe 和 Ambegaon 都是 0 所)。不过,这张地图还有一些需要人工收拾的毛病:分位数图例对整数的学校数量打印出了 0,0000 - 1,2000 这样的小数断点,中心区的标注在默认缩放下互相重叠。

方法 1:通过 QGIS MCP 连接 Claude Desktop 或 Claude Code

给 Claude 配一个 QGIS MCP 服务器,就解决了它看不见的问题:Claude 可以检查您的图层,运行 execute_code,看到错误回溯,然后重试。

我没有在浦那上重新运行 MCP 服务器,因为那天上午公共 Overpass 服务器拒绝了我们的网络,同样的 OpenStreetMap 调用也会被挡住。不过,我们在 2026 年 9 月下旬和 10 月已经测量过 Claude Sonnet 5.5 在 Claude Code 中驱动 QGIS MCP(v0.15.0 到 0.15.2)的表现,涵盖四项真实任务和一个 41 题的基准测试:

  • 设置需要 5 步,约 3 分钟(前提是已装好 uv 和客户端),第一次调用还要多花 16 秒,下载一个提供 125 个工具的 90 MB 服务器。每次重启 QGIS,都要记得再点一次 Run MCP,否则 Claude 会返回 Error executing tool ping。我们的 QGIS MCP 设置与测试指南逐一介绍了每个步骤和配置文件。
  • 在类似的里昂学校任务上(统计有轨电车站 300 m 范围内的学校),Claude + QGIS MCP 用 9 分 28 秒得出了正确数量(87 所学校)。它的十个步骤中有六个是原始 Python,脚本遇到 Overpass 的 406、504 和 502 错误时,QGIS 卡住了约 7 分钟。
  • **数据已经干净时,MCP 很快。**在波尔图的建筑物和打印布局任务上,Claude + QGIS MCP 用 2 分 48 秒完成,比我们自己的智能体的 5 分 26 秒还快。
  • 在 Google 的 GeoExpertQueries 基准测试(41 个保留任务)中,Claude Code 中的 Claude Sonnet 5.5 加 QGIS MCP 得分为 24.9 分(满分 100),而 Low 强度的 AI Agent 为 43.8 分(查看完整基准测试结果)。

如果您已经付费订阅了 Claude Pro 或 Max,并且整天都在 Claude Code 里工作,MCP 不需要额外花钱,还能让您在一个终端里自由组合 shell 脚本、本地文件和 QGIS。

方法 3:使用 QGIS 内的智能体插件

AI Agent 是我们开发的,所以这一节讲的是我们自己的插件。它不是把外部应用桥接到 QGIS,而是在地图画布旁边直接停靠一个聊天面板,读取您的工程状态,从内置的数据目录中取数据(约 90 个来源、2,800 个数据集,外加 OpenStreetMap 和 Overture Maps),回答之前会检查渲染出的地图图像,并在每条回答下放一个撤销更改按钮。

我在 QGIS 3.44.15 中把完全相同的浦那提示词运行了两次(Balanced 权限,Medium 强度)。

第一次运行时,11 秒后面板暂停,显示一张澄清卡片,问 “Which subdivisions of Pune should the school counts use?”(学校数量应按浦那的哪种分区统计?),并提供两个可点击的选项:Pune city wards(浦那城市选区)和 Pune district tehsils(浦那县分县)。选择 Pune city wards 后,从点击发送开始算起,总用时 63 秒,共 15 步。

浦那 58 个选区的地图渲染特写,按五个 Jenks 分级从浅蓝到深海军蓝着色,256 所 OpenStreetMap 学校以深色点标记显示。
第 1 次运行渲染出的地图:58 个选区(2022 年 DataMeet 边界),分为五个 Jenks 级别,学校最多的是 Ward 16 Fergusson College - Erandwane(39 所)。

第二次运行在一个新的聊天中进行,它没有提问,而是在回答中说明它把浦那的 58 个选区作为城市的区,用时约 45 秒(16 步),并用橙色色板为选区设置了样式。

第二次运行的 QGIS 窗口,左侧是以五级橙色分级统计图显示的浦那选区,右侧 AI Agent 的回答确认 58 个选区共有 256 个 OpenStreetMap 学校要素。
同一提示词的第 2 次运行:约 45 秒完成,同样是 58 个选区中的 256 所学校,五个 Jenks 级别(0-1、1-5、5-11、11-22、22-39)。

为什么两次运行都成功了,而粘贴的脚本却遇到了连接错误?因为智能体没有从原始脚本中调用超负荷的 overpass-api.de 接口;它从 DataMeet 获取了 2022 年的选区边界,并通过内置的数据工具获取了 256 个学校要素(108 个节点和 148 条路径,把多边形学校转换为面内点)。我对两次输出都做了独立的点在多边形内核查,256 个学校点全部位于 58 个选区内,与 schools 属性字段零误差。

它还把三个中间图层收进了一个隐藏的 Working layers 组,让图层树保持整洁,并在回答中提醒我 OpenStreetMap 不是官方的学校普查数据。我唯一的不满是:在第 1 次和第 2 次运行之间,它对是该问我“选区还是分县”还是自己决定,改了主意。

在 QGIS 中免费试用 AI Agent,无需信用卡

该选哪种方法?

在我自己的工作中,编写可复用的处理脚本,或者调试一个横跨二十个文件的自定义插件时,我仍然会在浏览器或终端里用普通的 Claude。这时您希望读得到 Python 代码,把它提交到 Git,并在图形界面之外运行。只是要记得把 QGIS 版本、图层名称、字段名称和 CRS 贴进提示词,并做好修一两处导入语句的准备。

如果您已经有付费的 Claude 订阅,熟悉 uv 和 JSON 配置文件,并且想在 Claude Desktop 或 Claude Code 中把本地文件操作和 QGIS 调用结合起来,就选 Claude + QGIS MCP。它在您现有的套餐之外不额外收费,数据图层已经加载好时速度很快。

如果您想要地图和数字,而不想时刻盯着 Python 回溯、Overpass 超时或断开的端口,就选 QGIS 内的智能体。对于赶截止日期的分析人员,或者需要统一符号、数据来源引用和一键撤销的团队来说,把智能体和数据目录内置在 QGIS 中最省时间。您可以在我们的指南什么是 QGIS 中的 AI 智能体中了解架构上的区别,或者在 QGIS AI 中心浏览目前所有的工具。

**我们如何测量。**所有浦那测试都在 2026 年 11 月 7 日巴黎时间 10:29 到 11:03 之间进行,环境为 macOS 上的 QGIS 3.44.15-Solothurn(Qt 5.15.19)。成功标准在第一条提示词之前的 10:14 写好。Claude Sonnet 5.5(claude-sonnet-5-5)通过 Claude Code 2.1.306(claude -p --safe-mode --tools "" --model sonnet)在一个空目录中调用,没有 MCP 服务器,也没有网络访问;返回的两个脚本在 QGIS Python 中执行,并用独立的点在多边形内脚本核查。AI Agent 1.9.4(Balanced 模式,Medium 强度)在干净的工程中对同一句话运行了两次。测试期间同一台 Mac 上还运行着其他 QGIS 会话,所以实际用时比空闲机器上慢。每种方法在一项任务上运行两次是很小的样本,而 overpass-api.de 拒绝连接的情况只是在一个网络、一个上午观察到的。

常见问题

QGIS 有官方的 Claude 插件吗?

没有。Anthropic 没有发布 QGIS 插件。截至 2026 年 11 月 7 日,QGIS 插件库中有九个把 Claude 连接到 QGIS 的社区插件,连接方式有三种:本地 Model Context Protocol(MCP)服务器(例如 QGIS MCP 和 WAI QGIS MCP)、您自己的 API 密钥,或者本地的 Claude Code 登录(Mapsuke)。另一个选择是 AI Agent,它直接从 QGIS 插件管理器安装,内置 AI 模型和数据目录。

Claude Desktop 能免费控制 QGIS 吗?

能,但有限制。根据 Anthropic 的套餐文档,Claude Desktop 聊天在 Free 套餐中可用,并支持通过 claude_desktop_config.json 或 Desktop Extensions(.mcpb)接入本地 MCP 服务器。从终端运行 Claude Code 则需要付费的 Claude Pro、Max 或 Ultra 套餐。

Claude 能写出在 QGIS 3.44 中运行的 PyQGIS 代码吗?

能,Claude Sonnet 5.5 写的 PyQGIS 结构清晰,但它看不到您的 QGIS 安装,也无法测试自己的代码,所以有时会编造类名,或者依赖会失败的外部服务器。在我们于 QGIS 3.44.15 上做的两次样本测试中,一个脚本因 QgsClassificationNaturalBreaks 报 ImportError 而失败(真正的类是 QgsClassificationJenks),另一个直到我们替换了 Overpass API URL 才跑通。

不设置 MCP,在 QGIS 中使用 AI 最简单的方法是什么?

在 QGIS 中从 插件 > 管理和安装插件(英文界面为 Plugins > Manage and Install Plugins)安装一个集成的智能体插件。使用 AI Agent,无需维护 Python 环境、uv 包管理器或配置文件:免费登录,每月 5 个任务(Pro 为 300 个),在停靠的面板中输入您的需求即可。

免费试用 AI Agent

在 QGIS 里,说一句就能完成

AI Agent 会在你自己的 QGIS 项目中,完成你描述的任务。免费使用,无需绑卡。

免费试用 AI Agent
由以下作者撰写Yvann Barbot
·6 min read