一个脚本,你就是拥抱AI的GISer了

Apr 16, 2026

上周我写了一篇文章,说GIS从业者面对AI时的那种茫然感,本质上是认知层面失去了坐标参考系。文章发出来之后,收到两份私信:

一个说"你写得对,但你没给解药"。

另一种更直接:"道理我都懂,你给我看个具体的。"

想想也是,大道理说了一箩筐,不如来点实在的。罗胖老师常说:一具体就深刻。这周我就给具体的。

今天下午发生的事

上周末我打开QGIS,准备做一张全国地级市GDP分级地图,一张霸王茶姬全国分布图,还有几家门店的辐射范围图(简单buffer)。手边有几样东西:一份整理好的全国345个地级市十年GDP的Excel表格,一份地级行政区矢量底图,还有霸王茶姬门店的分布列表,同样也是Excel的。

这种活儿我做过无数遍了。流程烂熟于心:加载矢量图层,转换Excel,再导入CSV,字段关联,设置分级渲染,选色带,调断点,出图。每次大概要二十分钟到半小时,取决于数据脏不脏、要不要重投影。

但这次我换了一种做法。

我写了三个脚本,让本地跑着的大模型替我干了三件事。整个过程,从写脚本到地图渲染完毕,没有打开任何一个工具箱对话框。

这不是什么"AI重构工作流"的宏大叙事。就是三件小事,三步台阶。

第一步:别再手查EPSG了

GIS从业者有一个共同经历:你拿到一份经纬度数据,要做缓冲区分析,第一件事是什么?

投影转换。从WGS84转到一个以米为单位的投影坐标系,否则buffer出来的是个椭圆。

问题是——转到哪个投影?

如果数据在北京,你可能条件反射地知道是UTM 50N,EPSG:32650。但如果数据在乌鲁木齐呢?在昆明呢?在海口呢?

大多数人的做法是打开搜索引擎,输入"昆明 UTM zone"或者"EPSG 云南",然后在一堆结果里找到那个六位数编号,复制,粘贴到QGIS的重投影对话框里。

这件事每次花两分钟。一年做一百次,三个小时就这么没了。

现在的做法:脚本里嵌了一个本地大模型调用。你只需要告诉它"这份数据在云南",模型返回一个EPSG编号,脚本自动验证这个坐标系是否有效,然后直接执行重投影。

整个过程三秒钟。其实关键就是把那些拿不准的,没有提前准备好的答案转给一个大模型的API。实在是简单(模型随便,我选了个免费的):

代码只有一个函数。它问模型一个问题:"这个地区最适合用什么投影坐标系?只输出EPSG编号。"模型回答,正则提取,验证,完事。模型不可用?兜底用UTM 50N,也不会崩溃。

这就是上周文章里说的"低惊讶闭环"。你不需要理解Transformer架构,不需要知道什么是temperature和top_p,你只需要知道:有一个东西能帮你查EPSG,而且比你自己查更快。

第二步:一键从Excel到地图

第二个场景更日常。

假设你手头有一份品牌门店数据的Excel,里面有经纬度、营业状态、门店名称。你想把它加载到QGIS里,按营业状态过滤,在地图上显示为彩色散点。

传统做法是什么?

打开Excel,另存为CSV。加载CSV到QGIS,设置X/Y字段,选坐标系。然后打开图层属性,进入符号设置面板,选一个颜色——等等,这个品牌的主色调是什么?瑞幸是蓝色还是灰色?霸王茶姬是红色还是棕色?打开浏览器,搜索"瑞幸咖啡品牌色",找到一个十六进制色值,复制,粘贴到颜色选择器里。

现在的做法:脚本从Excel文件名自动提取品牌名,调用本地大模型获取品牌主色调,自动匹配经纬度列,自动过滤营业状态,一键生成带品牌色的点状符号图层。

模型在这里做的事非常简单:你告诉它"瑞幸咖啡",它告诉你"#0078D4"。就这样。脚本里预置了二十个常见品牌的颜色缓存,命中缓存连模型都不用调。只有遇到不认识的品牌才会问模型。

以及是不是做Draw Effect,stroke的line多粗多细,你都可以设置默认或者自动智能化的。

有人可能会说,这不就省了查颜色那三十秒吗?

不只是三十秒。关键在于流程连续性。原来从"拿到Excel"到"看到地图"之间有六七个手动步骤,每一步都可能被打断——列名不对、坐标系没选、颜色不满意。现在是一个入口进去,一张图出来。你的注意力始终在 "数据本身",而不是在"工具怎么操作"

第三步:让AI帮你挑色带

第三个脚本是这次折腾时间最长、但效果最好的一个。

做分级色彩地图时,每个GIS从业者都面对过这组选择题:

  • 分几级?5级?7级?10级?
  • 用什么分级方法?自然断点、等间距、分位数?
  • 用什么色带?红黄?蓝绿?光谱色?

这些选择没有标准答案。取决于数据分布、取决于你想表达什么、取决于审美偏好。大多数人的做法是反复试:选个色带,看看效果,不满意,换一个。有时候调到凌晨三点,就为了让深色底图上那些面状色块既能区分,又不刺眼。

现在的做法:脚本先统计数据的分布特征——均值、中位数、偏度、四分位数——然后把这些统计量丢给本地大模型,附带一句你的偏好,比如"绿色系,10级,等间距"。模型看完数据后,输出一个分级方案,包含方法、级数、色带名称和一句理由。

我测试了一下2024年全国344个地级市的GDP数据。数据偏度3.53,极度右偏——少数城市GDP极高,大量城市集中在低区间。

当我什么偏好都不给的时候,模型推荐了Jenks自然断点、5级、黄到红色带。理由是"右偏分布适合自然断点,暖色调渐变适合单一指标的量级展示"。

当我输入"绿色系 10级 等间距"的时候,模型直接尊重了我的要求,选了Greens色带、10级、等间距。理由是"尊重用户明确要求"。

当我什么都不说只选了2025年的时候,模型推荐了Jenks自然断点、7级、紫色系。理由是"数据呈右偏分布,Jenks算法能识别数值聚类特征,配合7级紫色系色带可清晰展示层级差异"。

黄红.jpg
绿色.jpg
紫色.jpg

三次都不一样。三次都说得出道理。而且整个过程里,我没有打开过一次"符号"面板。

台阶,而不是天梯

回到上周的话题。

上周说的是,GIS从业者面对AI时的阻力,不是因为懒或者固执,而是因为认知落差太大——那个空白输入框,就像一个没有坐标参考系的空间。

这周做的三个脚本,本质上是在做一件事:把那个空白输入框变回GIS从业者熟悉的操作面板。

不需要你知道怎么写prompt。不需要你理解模型背后的原理。你只需要运行一个脚本,它问你两个你本来就知道答案的问题——数据在哪个省?你想要什么颜色?——然后帮你把从前需要手动操作十分钟的事情在三秒钟内完成。

这就是我说的台阶。

不是从地面直接跳到楼顶的天梯,是一步一步、每步都踩得到的台阶。你脚下踩的还是GIS——QGIS还是那个QGIS,投影还是那个投影,分级渲染还是那个分级渲染——只不过中间有些步骤被模型接管了。

而且是本地模型。跑在你自己机器上的,不传数据、不用付费、甚至不要联网(Ollama本地模型测试也都OK)。QGIS的Python控制台就能运行,不需要装任何额外的软件。

一个更深层的变化

不过我觉得最值得说的,不是效率提升本身。

是使用过程中出现的一种微妙的变化:你开始用自然语言思考GIS操作了。

以前你的思维路径是:打开工具箱 → 找到"重投影"工具 → 选源图层 → 选目标坐标系 → 运行。这是一个工具驱动的路径,你的思考跟着界面走。

现在的路径是:我想把这份数据转到适合云南的投影。说完这句话,事情就发生了。

这个变化看起来很小。但它意味着一个根本性的转向:从"我要怎么操作工具"变成了"我想对数据做什么"。

工具在退向后台。意图在走向前台。

上周文章的结尾,我说分水岭不在"会不会AI",而在"面对不确定性时能不能用最小成本迈出一步"。

这三个脚本,就是最小成本的那一步。

它们不完美。匹配算法遇到"巴音郭楞蒙古自治州"和"巴音郭楞州"的时候需要查找表兜底。大模型有时候思考太久、JSON被截断,需要把超时时间拉长。数据缺口需要额外一轮搜集。

但它们跑起来了。地图渲染出来了。而且下一次再做同样的事情,不需要重新开始——脚本在那里,模型在那里,你只需要改一个Excel路径。

上周结尾我说,试着今天就问AI一个你工作中的小问题,只一个就够了。

这周我想把这句话说得更具体一点:那个"小问题"不用找,它就在你每天的琐碎工作里。

你每次查EPSG编号的那两分钟,是一个小问题。你每次从Excel另存CSV再手动加载的那五分钟,是一个小问题。你每次在色带列表里反复切换、对比、拿不定主意的那十分钟,也是一个小问题。

这些小问题太小了,小到你从来不觉得它们是"问题"——它们只是工作的一部分,是你早就习惯的操作成本。

但它们加在一起,就是你和AI之间最短的那段距离。

因为它们足够小,所以试一次不会有任何风险。因为它们足够日常,所以你不需要专门腾出时间"学AI"——下次做这件事的时候,顺手试一下就行了。

不需要全部三个脚本。就从最简单的那个开始。

然后你会发现,原来这件事真的没那么复杂。

王昊

用地图思考人生

评论正在加载...
Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
分享