跳到主要内容
返回文章
文章数据资源
2026年4月21日/8 分钟阅读

用 AI 编写栅格计算器和字段计算器公式

本文介绍如何在昕图中使用 AI 辅助编写栅格计算器和字段计算器公式,包括适用场景、提问方式、检查重点和多个实用示例。

栅格栅格数据矢量数据

很多人第一次接触表达式计算时,思路其实是清楚的,但一到真正下手写公式,问题就来了。

  • 波段号容易写错
  • where(...) 套多层时很容易漏括号
  • 逻辑条件一复杂,就开始怀疑自己到底有没有写反
  • 想得到的是“人口密度”“风险等级”“高程分带”,但脑子里想的是业务规则,不是公式语法

现在昕图里的栅格计算器和字段计算器都支持 AI 编写公式了。更直接一点说,你可以先把需求用人话说出来,再让 AI 帮你整理成当前窗口能直接运行的表达式。

这篇文章主要讲 3 件事:

  1. 哪些场景适合用 AI 写公式
  2. 怎样提问更容易一次生成正确结果
  3. 栅格计算器、字段计算器、属性表中的计算字段分别怎么用

AI 写公式适用场景

如果只是 a + b 这种很简单的表达式,自己手写往往更快。

AI 真正省时间的,通常是下面几类情况:

  • 你知道业务规则,但不想手工把它翻译成公式
  • 你需要写多层 where(...) 的分类逻辑
  • 你要同时处理多个条件,担心括号和优先级出错
  • 你已经写了一版公式,但想改成更清晰的多行结构
  • 你要用面积、长度、波段、空值判断这些容易混的内容

简单理解就是:只要你已经开始担心“我是不是哪写错了”,就很适合先让 AI 帮你起草一版。

如何使用AI 生成公式

1. 你到底想算什么

不要只说“帮我写个公式”。

更好的说法是:

  • “计算 NDVI”
  • “把高程分成 4 类”
  • “根据人口和面积计算人口密度”
  • “给道路按长度分级”

2. 你要用哪些字段、栅格或波段

这一点越具体越好。

例如:

  • 影像A.tif.band4影像A.tif.band3
  • PopulationAREA
  • sloperain

如果名字说得不准,AI 生成出来的结果通常也会偏。

3. 边界条件怎么划分

这是最容易出错的地方。

比如不要只说“分成 4 级”,最好说成:

小于等于 1610 为 1,大于 1610 且小于等于 2415 为 2,大于 2415 且小于等于 3468 为 3,其余为 4。

这样 AI 才能把区间边界写完整,不容易出现重叠或遗漏。

4. 空值要怎么处理

这个很重要,但也最容易被忽略。

你可以直接告诉 AI:

  • “如果有空值就输出空值”
  • “空值按 0 处理”
  • “分母为 0 时输出 nan”

如果这一点不说清楚,最后结果可能看起来能算出来,但业务含义其实不对。

栅格计算器里怎么用 AI 写公式

栅格计算器适合做逐像元计算,比如指数、掩膜、重分类、加权叠加、多波段组合等。

比较常见的用法有这些:

  • 遥感指数,例如 NDVI、NDBI
  • 高程、坡度、降雨等栅格的阈值提取
  • 按区间重分类
  • 多个栅格按权重合成综合评价结果

可以加载模板,模板中有准备好的数据

image-20260426170922874

示例 1:让 AI 写 NDVI

你可以直接这样说:

用 空飞-多波段栅格-100m.tif 的 band4 和 band2 计算 NDVI。

AI 很可能会给你一版接近下面这样的公式:

result = (空飞-多波段栅格-100m.tif.band4 - 空飞-多波段栅格-100m.tif.band2) / (空飞-多波段栅格-100m.tif.band4 + 空飞-多波段栅格-100m.tif.band2)

带空值处理的

#prompt
用 空飞-多波段栅格-100m.tif 的 band4 和 band2 计算 NDVI,如果分母为 0 或者有空值就输出 nan。
#公式
nir = 空飞-多波段栅格-100m.tif.band4
red = 空飞-多波段栅格-100m.tif.band2
num = nir - red
den = nir + red
result = where(logical_or(den == 0, logical_or(isnan(nir), isnan(red))), nan, num / den)

这类写法的好处是,AI 不只是把公式写出来了,还顺手把异常情况一起考虑进去了。

注:布尔函数无法进行默认空值处理,必需进行空值处理。

image-20260424205455419

示例 2:让 AI 写重分类

把 dem.tif 分成 4 类:小于等于 100 为 1,大于 100 且小于等于 500 为 2,大于 500 且小于等于 1500 为 3,其余为 4,空值保持为空值。

可能得到:

result = where(isnan(dem.tif), nan, where(dem.tif <= 100, 1, where(logical_and(dem.tif > 100, dem.tif <= 500), 2, where(logical_and(dem.tif > 500, dem.tif <= 1500), 3, 4))))

这种情况特别适合 AI,因为人手写的时候最容易在第二层、第三层 where 里漏掉括号。

image-20260424180604218

示例 3:让 AI 写风险掩膜

根据 slope.tif 和 rain.tif 生成一个风险掩膜:坡度大于 15 且降雨量大于 500 的像元赋值 1,其余赋值 0;如果任一输入是空值,就输出空值。

可能得到:

result = where(logical_or(isnan(slope.tif), isnan(rain.tif)), nan, where(logical_and(slope.tif > 15, rain.tif > 500), 1, 0))

image-20260424181704101

字段计算器里怎么用 AI 写公式

字段计算器更偏属性计算,适合对矢量要素的字段批量生成或更新值。

常见场景包括:

  • 计算人口密度、产值密度、覆盖率等指标
  • 按规则生成等级字段
  • 基于 AREALENGTH_GEODESIC 这类几何关键字做换算
  • 先算一个中间字段,再继续派生第二个字段

示例 1:生成人口密度字段

新增一个 density 字段,计算人口密度,方法为人口 除以面积 

可能得到:

density = 人口 / AREA_GEODESIC

注:对于经纬度/大地坐标系的矢量数据,应该使用测地线面积函数 AREA_GEODESIC 计算每个多边形的测地线面积,此时单位为平方米)

image-20260424182849264

示例 2:一次生成两个字段

density= 人口 / 面积,单位为人/平千米,再新增 density_level 字段:小于等于 1000 为 '低',1000 到 3000 为 '中',大于 3000 为 '高'。

可能得到:

density = 人口 * 1000000 / AREA_GEODESIC
density_level = where(density <= 1000, '低', where(density <= 3000, '中', '高'))

这种多步逻辑特别适合 AI,因为它会自动帮你拆成可读性更强的多行。

image-20260426163510234

示例 3:按长度换算公里数

新增 length_km 字段,计算长度,单位为千米。

可能得到:

length_km = PERIMETER_LENGTH_GEODESIC / 1000

image-20260426164254062

属性表里的“计算字段”

除了工具箱中的字段计算器,矢量数据属性表里的【计算字段】同样适合接入 AI 编写公式的思路。

image-20260424201553760

它特别适合这些情况:

  • 你已经打开属性表,想顺手补一个业务字段
  • 不想切出去再开工具箱
  • 只是做当前图层的一次属性计算

例如你在属性表里,想新增一个风险等级字段,可以直接按自然语言描述:

新增 risk_level 字段:当 人口 大于 700000 且 降雨量 大于 700 时为 '高',当 人口 大于 600000 或 降雨量 大于 600 时为 '中',其余为 '低'。

AI 可能会给你:

risk_level = where(logical_and(人口 > 700000, 降雨量 > 700), '高', where(logical_or(人口 > 600000, 降雨量 > 600), '中', '低'))

如果你在属性表里做字段计算,建议额外注意两件事:

  • 字段名一定要和当前属性表里完全一致
  • 如果涉及面积、长度,先确认当前图层坐标系和几何单位是否符合业务预期

人工检查

AI 能帮你省掉大量重复输入,但不建议“直接复制运行,不看一眼”,人在回路,。

至少建议检查下面几点:

  • 栅格名、波段号、字段名有没有写对
  • 条件边界是否包含等号
  • 区间有没有重叠或漏段
  • 空值是不是按你的预期处理
  • 面积和长度是不是用了正确的几何关键字
  • 输出字段名或结果值是不是符合你自己的命名和业务规则

尤其是分类任务,哪怕 AI 写得再顺,也建议你自己逐档看一遍。

小技巧

如果你已经有一版公式,但看着太绕,可以直接让 AI 帮你改写:

把下面这个单行公式改成更容易检查的多行,并给中间变量起清楚一点的名字。

这比重新让 AI 从头生成更稳,因为你已经把核心逻辑控制住了,AI 只是帮你整理结构。

相关文章

主题定位

数据资源

公开数据、下载入口、分辨率与授权说明

继续浏览

回到文章频道

查看全部文章、切换主题筛选,或从首页入口继续向下浏览。

浏览全部文章