做GIS内业的同行都懂!最怕的就是大批量图斑改属性,几百上千个图斑,手动单点修改耗时又费力,熬半天还容易改错、漏改,返工率超高。

其实根本不用笨办法!字段计算器就是GIS内业批量改属性的神器,不管是统一赋值、条件分类、文本替换还是数值换算,上千上万条图斑数据,一分钟就能批量跑完,精准零出错,常年做国土、地籍、确权、规划项目都能用得上。

之前给大家更新过ArcGIS 属性表字段计算器计算面积 / 长度
,今天就写一下Python+VB的常用公式,都是我常年一线作业总结的接地气实操方法,没有虚套路,直接照搬就能用!

字段计算器基础实操步骤(新手必看,零踩坑)

不管用Python还是VB,基础操作界面是一样的,新手照着点就行,不用瞎摸索:

1、打开属性表,找到需要修改的目标字段,右键字段名 → 打开字段计算器

2、根据自己的代码习惯选择解析程序:Python / VB(重点:两种语法不通用,选哪个用哪个代码)

3、复杂条件、多判断公式,一定要勾选显示代码块;简单赋值、计算不用勾,直接输入公式即可

图片

Python常用实操公式(主流推荐,日常作业首选)

目前GIS作业优先用Python,语法严谨、容错率高,复杂批量处理更稳定,日常90%的批量改属性需求都能搞定。

1、全局统一赋值(最常用)

适用场景:所有图斑统一改成同一个地类、编码、数值,比如全部备注、统一权属、统一系数

文本字段(文字内容,必须加英文双引号)

表达式:

"耕地"

数值字段(面积、编码、系数等数字,直接写数字)

表达式:

200

2、多条件批量赋值(项目刚需)

适用场景:根据一个字段的内容,自动匹配修改另一个字段,比如按地类编码自动填充地类名称,不用手动一个个对应

示例:年度变更数据库字段DLBM中编码需要赋值把0101=水田、0102=水浇地,其余统一赋值为其他

代码块:

def Ppdl(dlbm):

    if dlbm == "0101":
        return "水田"
    elif dlbm == "0102":
        return "水浇地"
    else:
        return "其他"
方调用框输入:表达式:
Ppdl(!DLBM!)

图片

3、文本批量替换

适用场景:批量修正文字错误、统一名称格式,比如把所有“XX村”统一改成“XX村委会”

表达式:

!名称!.replace("村", "村委会")

4、多字段文本拼接

适用场景:省、市、县、乡镇、村字段合并为完整地址,批量生成详细坐落位置

表达式:

!省! + !市! + !县! + !乡镇! + !村!

5、数值批量换算计算

适用场景:面积换算、系数核算,最常用的平方米转亩

表达式:

!面积! * 0.0015

VB全套实操公式(老项目兼容、老旧数据专用)

很多老版本ArcGIS、老旧项目模板、历史数据只兼容VB脚本,Python跑不通,这时候就必须用VB!给大家整理了和Python一一对应的全套常用公式,直接复制即用,适配所有老旧数据。

注意:选择解析程序为 VB脚本,语法和Python完全不通用,严格对照使用

1、全局统一赋值

文本字段赋值(英文双引号)

表达式:

"耕地"

数值字段赋值

表达式:

200

2、多条件批量赋值

VB无def函数,用If判断语句,勾选显示代码块后输入,同样实现按编码匹配地类

代码块:

dim DLMC

if [DLBM] = "0101" then
    DLMC = "水田"
elseif [DLBM] = "0102" then
    DLMC = "水浇地"
else
    DLMC = "其他"
end if

下方调用框输入:

表达式:

DLMC

图片

3、文本批量替换

批量替换字段内指定文字,用法和Python一致,适配老旧数据

表达式:

Replace([名称],"村","村委会")

4、多字段文本拼接

VB拼接不用+,用&符号,多字段合并地址专用

表达式:

[省] & [市] & [县] & [乡镇] & [村]

5、数值批量换算计算

平方米转亩、加减乘除核算,直接运算即可

表达式:

[面积] * 0.0015

作业高频报错解决(常年踩坑总结!百分百对症)

很多人跑公式报错,不是代码错,是操作不规范!这两个是内业最常见的问题,记住直接解决:

报错1:数据类型不匹配(90%人踩坑)

报错原因:数值型字段填文字、文本字段填数字,字段类型和赋值内容对不上

解决方法:先看清楚字段属性!文字内容必须填文本字段、数字内容填数值字段,严格对应

报错2:Python缩进错误

报错原因:代码空格、Tab混用,缩进不统一

解决方法:全程用4个空格缩进,绝对不要用Tab键,复制我的模板直接用零出错

报错3:VB语句报错

 报错原因:漏写end if、括号缺失、符号用中文

解决方法:所有符号用英文,判断语句必须带end if,直接复制模板无需手动修改格式

内业批量处理避坑技巧(必看!防止数据翻车)

批量修改数据风险很高,一旦跑错,上千图斑数据直接作废,这3个作业习惯一定要养成:

1、修改前必备份数据!一定要复制一份原始图层,出错了直接替换,不用重新做数据

2、先小批量测试!随便选三五条图斑试运行,确认赋值、计算结果完全正确,再全量批量运行

3、复杂逻辑写代码块!多条件、多层判断,不要直接写在输入框,统一放在代码块,逻辑清晰、不易出错

属性批量处理的常用的核心实操类型就这些,Python+VB双版本全覆盖,日常所有字段修改需求都能搞定!

 互动提问:大家平时做内业,用字段计算器最多的是赋值、替换还是面积换算?评论区聊一聊!

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐