惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
Hugging Face - Blog
Hugging Face - Blog
D
Docker
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
G
Google Developers Blog
Simon Willison's Weblog
Simon Willison's Weblog
Recorded Future
Recorded Future
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Palo Alto Networks Blog
博客园 - 三生石上(FineUI控件)
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Security Latest
Security Latest
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
Y
Y Combinator Blog
K
Kaspersky official blog
F
Full Disclosure
L
LINUX DO - 最新话题
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Latest news
Latest news
N
News and Events Feed by Topic
B
Blog
有赞技术团队
有赞技术团队
博客园_首页
Hacker News: Ask HN
Hacker News: Ask HN
MyScale Blog
MyScale Blog
IT之家
IT之家
NISL@THU
NISL@THU
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 热门话题
N
News | PayPal Newsroom
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
云风的 BLOG
云风的 BLOG
The Hacker News
The Hacker News
S
Secure Thoughts
博客园 - 聂微东
T
Tor Project blog

WSH

凑数日子 2026年,大概将会是最后一个人口保持在14亿以上的年份 感谢之人 数字经济中的注意力交易 突然的噩耗 一株洋瓜藤 再见到姑妈 港澳掠影 Miniflux 中文搜索能力增强 慢慢吹~~~轻轻送~~~ 房子梦 探索云南-大理 证书过期导致的错误 过年被追问工资 在秋天开始 水里的鱼 斩断联系1 云南壮族婚恋 我有一颗乳牙 世界的底色是争,抢,偷 无题4 无题3 人来人往 AI见闻 无题2 滇池掠影 WebGIS 三维空间分析之参考超图实现的天际线分析 我原来是个同步单线程 往事如烟1 净月潭之行 一万次悲伤 开源丑闻的碎碎念 提高开发幸福感所做的举措之构建前端基础设施 浏览器标签页进程引发的性能问题 山的那边 想回到过去去去去去去去去去去去去~ WebGIS开发之glsl支持 WebGIS三维空间分析之坡度计算 WebGIS 三维分析之阴影率分析 幸福(或我的女儿叫波兰) 最后一课 Markdown解析高亮及Mermaid 上海掠影 Cesium/QGIS加载图新地球LRC自定义图层 端午粽子 如何清晰地写作 清明扫墓 自编写,自用的开源工具 饮食 燕南飞 WebGIS 三维空间分析之剖面线分析 WebGIS三维开发中的面积量测 WebGIS空间分析之坡向分析的实现 收藏自由-新的书签工具 月夜杂谈 花海,指弹版 三维之Cesium分屏显示 请验证您是真人 GIS数据转换——从点到栅格 自定义「ONE · 一个」订阅源 西湖美人峰徒步 给开源RSS服务应用Miniflux添加「标题翻译」 五一青山湖骑行 将chatGPT集成到微信机器人 动手更换旧手机——google pixel3的电池 Vue组件检测无效属性 ArcGIS复杂插件处理 两件关于博客网站变更的事情 Vue开发个人守则 账户注销后遗症 《纳瓦尔宝典 财富与幸福》前两章的一些摘录 听一首黄歌—Yellow 坏事总是成双 出差消小记 cesium-控高分析 当你孤单你会想起谁 穿越城市-青山湖 Harry Browne关于个人金融安全17条黄金守则—财富之道 批量裁剪矢量数据的几种途径 小而美的软件 想回到过去 热!热!热! 那么近,又那么远——遥望 为什么win笔记本触摸板没有mac好用呢 一只猫 二月份的检讨 自定义Cesium缩放控件 线段简化的几种算法 今天看球了吗? HDF转为GeoTIFF QGIS插件编写 乐高风格地图 基于Python的遥感可视化记录 使用Python提取遥感影像中的土壤线 接触pandas QQ音乐评论可视化 拆分-应用-联合 阳光打在我身上 淘宝商品信息可视化
AI在GIS领域的实践之QGIS-MCP
WSH · 2025-03-29 · via WSH

目录

    • 写在前面
    • 如何安装
      • 注册模型服务
      • 安装uv
      • 安装QGIS插件以及MCP服务器
        • 安装QGIS插件
        • 安装MCP服务器
    • 使用案例
      • 渲染地图风格
      • 属性统计
      • NDVI计算
      • 获取地理位置以及显示
    • 背后的原理
    • 写在后面
    • 参考

[TOC]

写在前面

近期MCP1很火哎,不断涌现出各种各样的工具。例如利用MCP进行代码补全/生成,浏览器控制,地图导航,寻址,网络搜索等2,一切都是基于自然语言实现的自动化。当然除了上述,我最关心的还是它在GIS领域开出了什么花,一番搜索之下发现当前开源社区已经存在了一款功能强大的插件——qgis_mcp

代码仓库地址:https://github.com/jjsantos01/qgis_mcp

在我搜索过程中, 几个头部的国内外传统GIS公司,都还没有发布正式的MCP工具,如ESRI,Mapinfo和SuperMap(或许已经在开发中只是仍未成熟等待发布,又或许还没有,又或许是我没找到)。相较于开源的QGIS,任何人,如果你有能力,都可以给它加上你想要的功能,这一点我认为非常棒,这使得它在某些功能/特性方面推进的更快,虽然效果不一定比闭源好。

尝试使用这个MCP工具,看看效果如何。

如何安装

尽管仓库作者写的安装说明已经很清晰明了,但由于描述语言是英文,对中文母语者可能不太友好,所以在这里记录自己的完整安装过程。

这个插件系统包含两个组件,一个是QGIS插件,另一个是MCP服务器。除此之外,还需注册有一个能正常使用的大模型,可以使用在线的Claude或者DeepSeek等模型提供商。

这些是运行的环境要求:

  • 安装有QGIS版本 3.X
  • 安装有Claude desktop(如果使用Claude需要)
  • 安装有5ire(如果使用DeepSeek,OpenAI等其它模型需要)
  • 安装有Python 解释器版本为3.10 或更新
  • 安装有Python包管理器uv

注册模型服务

一步步来,首先最重要的是模型提供商的账户。Deepseek等直接到官网注册即可,而Claude以及OpenAI等并未在中国大陆及港澳台提供模型服务,所以注册步骤会有点曲折,网上也有许多相关资料攻略,这里就不再延伸展开。

安装uv

用它来运行MCP 服务器本体,macOS用户可使用homebrew安装,执行如下命令:

brew install uv

windows用户可使用powershell安装,执行如下命令:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

如若通过上述命令无法安装,则直接上官网下载。

安装QGIS插件以及MCP服务器

安装QGIS插件

下载仓库源码,使用Git或者直接以zip格式下载后解压。

打开QGIS,依次点击Settings->User profiles->Open active profile folder,进入目录之后,再进入 python -> plugin目录,将上一步下载好的插件文件夹里的qgis_mcp_plugin复制到plugin,接着重启QGIS。

image-20250328231749719

再次打开,进入 Plugins -> Mange Plugins,选择Installed,勾选启用插件。

image-20250328231828274

接着你的软件界面会出现如下窗口,点击Start Server,插件就安装好了。

image-20250328232004308

安装MCP服务器

如果用的是Claude则安装该客户端,否则跳过。

先到Claude官网按照操作系统下载客户端,安装后运行。

进入设置 Settings -> Developer -> Edit Concig

image-20250328232434289

编写如下,其中只需要修改一项,然后重启Claude客户端。

{
    "mcpServers": {
        "qgis": {
            "command": "uv",
            "args": [
                "--directory",
              "/这里是填写下载仓库代码后打开的目录/qgis_mcp/src/qgis_mcp",
                "run",
                "qgis_mcp_server.py"
            ]
        }

    }
}

打开Claude对话框,聊天框底部有个小锤子,就代表安装成功了(如果仅安装了QGIS MCP一个服务的话,不放心可以点击小锤子,查看是否有QGIS相关服务)

image-20250328233029608

如果使用DeepSeek或者OpenAI等,则安装该客户端。

打开5ire发行页面,根据操作系统选择合适版本下载后安装,打开设置页面。

image-20250329164725217

先设置大模型

image-20250329164830318

接着设置MCP服务

image-20250329164959170 image-20250329165109929

名称,标识什么的随便填写,但是命令必须如以下格式一致。

image-20250329165220176

使用案例

这里使用Claude客户端来测试,而使用5ire的话流程是一样的。

渲染地图风格

先来测试一下,我预先往地图画布中添加一个矢量图层,然后按照字段让它分层设色。

原始图

接着提问它:

当前图层中,帮我按照“地级码”对图层进行分组,并设置不同颜色风格

分层设色

属性统计

可以看到它正确理解了我的指令并完成相关工作。然后我又让它统计即每个要素(即图中的区县)的面积,并生成统计表格和图表。

帮我统计当前矢量图层中,每一个要素的面积,并制作一份柱状图统计表格,我使用的是macOS,桌面路径为/Users/wsh/Desktop。

要素统计

执行结果有一份excel和下面这张图片。我猜测它使用Matplotlib来绘制,因为没有正确设置字体,所以中文标签变成口口口。

需要再点拨一下,将提示词修改为如下,再次执行,图表就显示正常了。

帮我计算所有要素的面积,并生成一个柱状图,图表标签是地名,地名字段的名称为“地名”。图表标签是中文,所以你需要正确设置绘制指令以至显示,最后将结果保存在我的桌面上。

统计图表

NDVI计算

难度提升,让它计算Landsat 5 多波段遥感影像的NDVI指数,

在路径为/Users/wsh/Desktop/data的文件夹,里面的子文件夹是一期Ladsat 5卫星遥感影像,包含多个波段。根据这些影像,请帮我计算NDVI指数,并显示在地图上

下图的NDVI计算结果是错误的,不知道是不是因为我没有提供足够的信息,调整了好几次提示词,都没有成功。

计算NDVI指数

下图是我手动计算的结果。

获取地理位置以及显示

我让它帮忙查看杭州所有大学在地图上的分布。

帮我获取杭州所有大学的名单及其经纬度坐标,并显示在地图上

大模型获取到了坐标信息,但是并不能将其渲染到QGIS地图画布中,因为该MCP工具暂时还不支持根据文本坐标创建点图层。不过它令人惊喜的一点是,在MCP不支持自动生成点图层的情况下,它通过生成一份HTML网页这种“曲线救国”的方式完成了我的需求,用浏览器打开,可以进行简单的交互查看。

image-20250329115034893

背后的原理

那么这一切是如何发生的呢,背后的魔法是什么?先暂时抛开那些专业且复杂的名词,定义,简单了解下大模型,MCP服务器,QGIS插件,QGIS四者,它们之间如何互相协同完成需求3

graph TD
user[用户1] --> llm[大模型]
user2[用户2] --> llm[大模型]
llm <--> mcp[MCP服务器]
mcp <--> plugin[QGIS插件]
plugin <--> QGIS

大模型作为总指挥,它理解人类语言将需求分解,然后间接控制QGIS执行一系列动作来完成需求,而MCP服务器和QGIS插件可以看作是控制的手段(类似计算机里的中间件)。它通过MCP协议与MCP服务器交互。

MCP服务器作为工具箱的角色,它告诉大模型它内部实现了什么服务,通过它可以执行哪些功能,执行功能的时候需要提供哪些输入数据等一系列上下文信息。

QGIS插件则是MCP服务器所描述的功能的实现者。通俗点说就是MCP服务器画大饼,然后它来干活。它与服务器一般采用WebAPI来通信。

最后是QGIS,其实它才是真正的打工人,因为QGIS插件只是调用了它的API来完成具体工作。

写在后面

目前MCP在GIS领域的应用尚在起步阶段,功能还不是很丰富,未来应该会有越来越多服务集成进来,特别是基于位置的服务(LBS)。

附带一些小吐槽,首先是整个MCP体系太繁琐了,安装这又那的,而且每一个MCP服务都是独立的,也就是说A电脑安装后无法与B电脑共享(未来会不会出现那种MCPServerHub)。

其次MCP服务的运行环境是Python或者Node,如果安装多个服务是否会造成资源浪费,毕竟不是每一个服务都时刻在用,能不能复用一套环境呢。

最后这一条仅针对GIS,使用它来处理地理数据有泄密风险。因为GIS特殊的行业性质,导致许多数据涉密,不能使用互联网上公开的大模型服务来处理,除非是个人或者企业内部部署,光这一条我觉得就已经将一半的人拦在门外。

参考