
本文为【给我的 ArcGIS Pro 装个“AI 外挂”系列】[1]开篇。
各位 GIS 领域的同行,在日常工作中,你是否也被下面这些场景反复折磨?
场景一:面对分析需求,在工具箱里“猜谜” 一个再普通不过的任务:你想统计每个街道面内,落了多少个商业网点。你点开工具箱,面对一排排看似相似的工具,脑子里开始打鼓:“我是该用‘空间连接’?还是‘相交’?或者是分析工具箱下的那个‘标识(Identity)’?它们的结果到底有什么细微差别?”
场景二:求助通用 AI,却被它一本正经地“欺骗” 你决定求助 AI。你问 ChatGPT:“请用 arcpy 写一个空间连接的例子”。它自信满满,秒回一段代码,里面赫然写着arcpy.analysis.SpatialJoin(...)。你满心欢喜地复制粘贴,运行,然后——红色报错!你查了半天,崩溃地发现,ArcGIS Pro 里根本没有这个函数,正确的名字是arcpy.analysis.SpatialJoin_analysis。通用 AI 因为缺少专业语料的训练,一本正经地“说谎”,浪费了你宝贵的时间。
场景三:找到正确工具后,又陷入 arcpy 的代码细节 你终于找到了正确的工具,开始写真正的业务逻辑。这次你需要用arcpy.da.UpdateCursor来更新字段。然后,新的痛苦开始了:
["STATUS", "EDITOR", "SHAPE@XY"]。在for row in cursor:循环里,你面对的就是row[0]、row[1]、row[2]... 当业务逻辑复杂时,你很快就忘了哪个索引对应哪个字段,写出的代码难以阅读和维护。with arcpy.da.UpdateCursor(...) as cursor:是官方推荐的最佳实践,可以自动管理游标的生命周期。但如果你不慎在with语句块之外调用row或cursor对象,就会引发难以排查的运行时错误。where_clause查询条件前置,比在 Python 循环里用if语句判断,性能会高出几个数量级。这三个场景,暴露了我们 GIS 从业者在自动化工作流中的一个核心困境:从“我想做什么”的用户意图,到“计算机该怎么做”的精确执行之间,存在一条又深又宽的鸿沟。
Esri 官方倒是在搞 AI 助手,但现在还是 Beta 版,想用上不知道得等到猴年马月。

求人不如求己。 于是,我决定启动这个系列——从零开始,为自己、也为所有同行,打造一个真正懂 ArcGIS Pro、不“说谎”的 AI 助手。
它必须精准、高效,成为我 GIS 工作的“第二大脑”。
近期目标:一个顶级的 ArcGIS Pro“代码专家”。 当我问它:“如何用代码将 A 图层按 B 图层的边界进行裁剪,并给出生产环境下的最佳实践代码?” 它不仅能立刻给出arcpy.analysis.Clip的正确用法,更会附上try...except错误处理、arcpy.Exists()文件检查,甚至提示我注意空间参考的一致性。
远期目标:一个更懂数据的 GIS“分析助手”。 我希望最终能用自然语言对它说:
“帮我查询一下项目数据库
'project.gdb'里的'商业设施'图层,统计出'设施类型'字段为'超市'且'建筑面积'大于 500 的要素有多少个?”
然后它能自主理解,将自然语言转化为精确的查询语句,并返回结果。
这篇文章是我系列的第一期,重在立下目标,明确路线。我规划了如下的探索地图,并将随着进度更新文章链接:
在这个系列里,我将 100%透明地公开我的整个开发过程,包括:
欢迎在评论区里疯狂吐槽你在 ArcGIS 里遇到的烦心事,或者聊聊你对这个系列、对哪个技术方向最感兴趣。你们的反馈会直接影响我后续内容的侧重点!
参考资料
[1]
【给我的 ArcGIS Pro 装个“AI 外挂”系列】: https://www.renhai.online/tags/arcgis-pro-ai-assistant-dev-log
[2]
“AI 焦虑”与 Esri 的“答案”: blog/geospatial-data-analysis/arcgis-pro-3-5-ai-assistant-introduction
[3]
Dify: https://dify.ai/
[4]
Langflow: https://www.langflow.org/
[5]
Cursor: https://cursor.com/cn
[6]
LangChain: https://python.langchain.com/v0.2/docs/introduction/
[7]
Langgraph: https://langchain-ai.github.io/langgraph/
[8]
个人网站: https://www.renhai.online/
[9]
我的知乎: https://www.zhihu.com/people/Ing_ideas
[10]
我的博客: https://www.renhai.online/blog
[11]
我的 GITHUB: https://github.com/renhai-lab
[12]
我的 GITEE: https://gitee.com/renhai-lab
[13]
RSS: https://www.renhai.online/rss.xml