
给我的ArcGIS Pro装个“AI外挂”,开发过程全公开!
- Published on
【ArcGIS Pro AI助手开发日志 #1】
嘿,各位还在用ArcGIS Pro“搬砖”的兄弟姐妹们,ArcGIS Pro这个软件,强是真强,但烦也是真烦。想写个ArcGIS脚本自动处理点东西,是不是经常不记得要用哪一个工具,或者ChatGPT信誓旦旦告诉你要用某个工具,但是在你的ArcGIS Pro软件中,你却找不到它。
又或是写arcpy代码却卡在这种地方:
比如,你要用arcpy.da.UpdateCursor
。你的VS Code很聪明,提示你field_names
参数需要一个列表。官方文档也给你看了个基础示例。但真正的麻烦,藏在细节里:
可读性的噩梦:你定义了
field_names = ["PROCESS_STATUS", "LAST_EDITOR", "SHAPE@X"]
。进了for row in cursor:
循环后,你就得开始玩“猜猜我是谁”的游戏。row[0]
是状态,row[1]
是编辑者,row[2]
是X坐标... 等你写到row[4]
的时候,早忘了它对应哪个字段了。你想的明明是row.status = 'Complete'
,写的却是row[0] = 'Complete'
。这种代码,过一个月连你自己都看不懂。恼人的语法“陷阱”:只想更新一个字段?行。但如果你想用元组,就得写成
("my_field",)
。忘了那个逗号,写成("my_field")
?恭喜,它变成了一个字符串,程序会在运行时给你一个莫名其妙的错误,让你排查半天。“然后呢?”的困惑:文档示例告诉你怎么
updateRow()
,但它没告诉你,在复杂的脚本里,更新完之后通常最佳实践是什么。需不需要手动释放锁?这个游标跟另一个要素类的编辑会话有冲突吗?你需要的是一套解决问题的“组合拳”,而不只是一个孤零零的招式。
Esri官方倒是在搞AI助手,但现在还是Beta版,想用上不知道得等到猴年馬月。
看过“AI焦虑”与 Esri 的“答案”文章的应该感受到来自于ai的压力了。
我就想,求人不如求己。咱也是玩Python的,现在AI这么火,干嘛不自己动手,给ArcGIS Pro搞一个“AI外挂”呢?一个能随叫随到、啥都懂的私人小助理。
于是,这个疯狂又好玩的项目就这么开始了!
我想要个什么样的“AI外挂”?
我理想中的它,应该特简单、特直接。
初期,它是一个文档和代码专家。直接在一个对话框里问它:
“哥们儿,咋用代码把一个图层按另一个图层的边界给切了?给个最佳实践的例子。”
然后它会告诉我:
“用
arcpy.analysis.Clip()
,来,代码都给你写好了,拿去用吧!不光如此,我还加了try...except块来处理可能的错误,并用了arcpy.Exists()
来检查输入文件,更稳当!”
但我们的野心不止于此!未来,我希望它能进化成一个真正的数据分析师。我可以直接问它:
“帮我查一下,在我项目里的
'商业设施'
图层里,'设施类型'
字段为'超市'
的要素有多少个?”
然后它能自己去理解我的项目、查询数据、并返回答案:“一共有37个。”
它得是我的第二个脑子,帮我记住所有那些繁琐的工具名、最佳实践和代码片段,甚至能直接帮我分析数据,让我能专心于更高层次的思考。
本系列的完整冒险地图(动态更新)
这篇文章是我《给我的ArcGIS Pro装个“AI外挂”》系列的第一期,主要是立个Flag,顺便看看大家对哪个方向最感兴趣。我初步规划了咱们的冒险地图,后续更新的文章链接我也会在这里补上,方便大家索引:
- 【第一站】万丈高楼平地起:手把手带你构建我们所有实验的“统一知识大脑”——一个塞满了ArcGIS Pro帮助文档的Weaviate向量数据库。(本文就是序章)
- 【第二站】零代码的快乐:体验Google NotebookLM、Dify这类无代码/低代码平台,看看不动一行代码,我们能把AI助手做到什么程度。
- 【第三站】核心代码揭秘(上):深入了解LangChain,用Python从零开始实现一个基于文档的问答机器人,了解如何实现Dify一样的效果,并把它和Dify的效果做个横向评测。
- 【第三站】核心代码揭秘(中):深入LangChain和Langgraph,实现更复杂、更准确的索引查询。
- 【第四站】核心代码揭秘(下):继续深挖,用LlamaIndex实现更高级RAG工具能不能让我们的文本嵌入和检索更进一步,看看它对比LangChain效果能提升多少。
- 【未来展望】:探索如何让我们的AI助手拥有“读懂”地理数据的能力,实现用自然语言直接查询和分析你的GDB/Shapefile!
别光看我做,一起来玩!
我决定,把我从零开始,捣鼓这个AI助手的整个过程,原原本本地记录下来。这个系列不玩虚的,不只给你看最后成功亮闪闪的代码。我会把所有走过的路,包括:
- 怎么想的:我为啥选这个技术,不选那个。
- 踩了哪些坑:有哪些地方我搞了半天发现是错的,帮大家提前避雷。
- 不同方案的PK:咱会试试各种不同的玩法,看看哪个效果最好,哪个最省事。
总之,跟着这个系列,你就算是个AI小白,也能看明白、学得会。
开工!先给AI造个“大脑”
下一篇文章,我们就正式动工!第一件事,就是给咱们未来的AI助手,准备一个装满知识的“大脑”。具体来说,我们要:
- 把ArcGIS Pro自带的那些HTML帮助文档都扒下来。
- 把这些文档切成一小块一小块,让AI能“消化”。
- 用OpenAI的模型把这些知识转化成AI能理解的“向量”。
- 最后,把这些“向量”都塞进一个叫 Weaviate 的向量数据库里。
这个数据库,就是我们所有后续实验的“大本营”!
说实话,我自己也对这个项目充满了期待。我相信AI不是来抢我们饭碗的,而是我们手里最好用的“瑞士军刀”。
如果你也觉得这事儿有意思,想一起见证一个专属的AI小助理的诞生,或者想第一时间收到后续的更新,可以通过页面底部的联系的方式找到我。
欢迎在评论区里疯狂吐槽你在ArcGIS里遇到的烦心事,或者聊聊你对这个系列、对哪个技术方向最感兴趣。你们的反馈会直接影响我后续内容的侧重点!