实际操作中我们一般会将编号字段定义为文本型,因为编号不是序号,序号是一个递增数值,而编号往往是一个数字串代码。

本篇无说明的均使用VBScript语句
1、怎么编号?
最简单的编号—>直接在编号字段使用字段计算器将FID字段值+1计算过来便是。

BH=[FID]+

这应该只能叫做序号值,还不够,还有一个问题需要我们去解决,因为编号往往是一个数字代码,它一般是由区域代码或者类型标识码等(前缀)+固定位数序号组成的。
BH的固定位数如果是4位,那么全码应该是“前缀+0001”,“前缀+0002”……“前缀+0010”……“前缀+0100”……“前缀+9999”。
可以看出序号前面补的“0”位数是变化的,可以通过下面的方式轻松实现。

BH="前缀" & left("",4-len( [FID]+1)) & ([FID] +1)

left("字符串",n)是从左侧开始截取字符串的指定前n位;len("字符串")是计算字符串长度。这个例子中序号部分长度为4,序号部分“0”的长度应该是4-序号值的长度,暂记为n,从“0000”左边开始截取n个0 拼接上序号值就是我们要的结果了。

对于补0的操作还可以用string函数:

BH="前缀" &string(-len( [FID]+),"") & ([FID] +)

string函数的用法是string(重复次数,"重复字符"),注意第二参应使用数字或英文

有没有比较zhuangbility的操作?当然有的,比如下面可以smallzhuangbility一下的Python函数

rec=0
def autoIncrement():
global rec
pStart = 1 #初始值
pInterval = 1 #间隔值
if (rec == 0):
rec = pStart
else:
rec = rec + pInterval
return rec

怎么调用翻看俺前边的帖子

autoIncrement()直接调用
(str(autoIncrement())).zfill(5) 固定位数为5,前边补0
autoIncrement()+1000 加起码1000

分类编号

把不同行政区、不同种类的图斑编号,每类都是从1开始起编,简单的方法是借助Excel处理回挂实现,具体参考下面链接博文中的Excel操作自行领悟:

解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面

2、编号的修改

假定一个编号“37148210120101005”,很明显能看出这是一个按行政区域编码的代码串,至于是哪个行政区的俺也不知道,因为这是俺随手造的。
现在有这样一个需求——需要把该编号拆成县、乡、村、组、编号5个字段,如何操作呢?
最前边的县编号与最后边的编号两个字段分别可以用left、right函数截取出来,中间的呢?这时需要引入一个新函数了,它就是mid,mid( [BH],7,3)就可以截取乡镇编号了,它的用法是mid( "字符串",起点位置,截取长度)。
上边的还没整明白,这里又来一个需求,县级编号改了,成“371488”了,如何操作?
用replace函数,它的用法很典型的体现了作者开篇一再提示的Excel函数≠VB函数。
replace( [BH],"371482","371488")就可以了,用法是replace(“字符串”,"字符串中待替换的字符子串","替换为的字符串"),当然该例中replace函数有缺省参数没有使用,如有兴趣可以自己百度一下VB的replace函数用法。

解析ArcGis的字段计算器(三)——文本型字段计算,编号那些事儿的更多相关文章

  1. 解析ArcGis的标注(三)——标注的放置 与 转注记修改

    该“标注”系列博文的标注引擎使用“标准标注引擎(standard label engine)”,这个概念如不知道,可不理会,ArcGis默认标注引擎就是它. 写着写着发现ArcGis标注的破事儿好多啊 ...

  2. 解析ArcGis的字段计算器(一)——数值型数据计算,从“面积计算”开始

    先来点儿背景知识铺垫: ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python. 多数人选择使用前者,因为它的基本函数和Excel的函数貌似一样.注意我 ...

  3. 解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面

    这里所说的重复是指完成重复的,不是叠在一起的两个或多个要素,这种应该叫做“压盖”或“重叠”.重复往往是在合并多Shpfile文件时不小心重复导入造成的. 这里提供一种可能的解决办法,数据无价,请备份! ...

  4. ArcGis 字段计算器表达式(Field calculator expression).cal文件与标注表达式(label expression).lxp的实质及其编码方式、解析方法

    ArcGis 字段计算器表达式可以保存为一个扩展名为.cal的文件,该文件的实质是一个文本文件,编码方式为 UTF-16-LE. 官方的说明是“ArcGIS 应用程序使用 UTF-16-LE 编码读写 ...

  5. ArcGIS字段计算器分割字段中的字符串

    ArcGIS字段计算器分割字段中的字符串 实例:在一个字段中存有长宽高三个属性数据,以x分割.例如sss为字段名(字段属性为文本类型),数据格式为:100x200x300,利用字段计算器分别将三个数存 ...

  6. ArcGIS 字段计算器 Python 坑

    最近要处理个简单数据,一个字段中为文本类型,包含各种描述.要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来. 比如 字段值为 “非法占用100平方米” 处理后结果为 100 ...

  7. arcgis字段计算器

    arcgis字段计算器 一.VB脚本 1.取某字段前几位或者后几位 ) ) 2.合并字段,中间加符号 Dim a if [ZDDM2] ="" Then a= [ZDDM1] el ...

  8. 由ArcMap属性字段自增引出字段计算器使用Python的技巧

    1.前言       前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...

  9. [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段 <译>

    multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在“了解你的数据”一节中提 ...

随机推荐

  1. 解决Eclipse每次修改完代码后需要先Clean,不然修改的代码无效

    工具栏 Project-->Build Automatically 勾选上即可

  2. MT【270】含参绝对值函数最大之二

    已知$f(x)=2ax\cos^2x+(a-1)\cos x-1,a>0$,记$|f(x)|$的最大值为$A$,1)求A.2)证明:$|-2a\sin 2x+(1-a)\sin x|\le 2A ...

  3. 滚动ListView时图像顺序混乱

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文将为读者讲解滚动ListView时图像顺序混 ...

  4. 【BZOJ1023】仙人掌图(仙人掌,动态规划)

    [BZOJ1023]仙人掌图(仙人掌,动态规划) 题面 BZOJ 求仙人掌的直径(两点之间最短路径最大值) 题解 一开始看错题了,以为是求仙人掌中的最长路径... 后来发现看错题了一下就改过来了.. ...

  5. 【BZOJ1152】歌唱王国(生成函数,KMP)

    [BZOJ1152]歌唱王国(生成函数,KMP) 题面 BZOJ 洛谷 题解 根据\(YMD\)论文来的QwQ. 首先大家都知道普通型生成函数是\(\displaystyle \sum_{i=0}^{ ...

  6. notepad++设置(不断更新)

    1.主题设置 主题名称:Obsidian 字体字号:Courier New 10 设置方法: 设置---语言格式设置---选择主题,同时勾选“使用全局字体”“使用全局字体大小 补充一点: 修改两处地方 ...

  7. Dubbo x Cloud Native 服务架构长文总结(很全)

    Dubbo x Cloud Native 服务架构长文总结(很全) mercyblitz SpringForAll社区 3天前 分享简介 Cloud Native 应用架构随着云技术的发展受到业界特别 ...

  8. Java Scanner篇

    Scanner 翻译解释为扫描器 Java中用于控制台的的数据输入 包:import java.util.Scanner 使用方法:Scanner reader=new Scanner(System. ...

  9. Day036--Python--线程

    1. 线程 from threading import Thread def func(n): print(n) if __name__ == '__main__': t = Thread(targe ...

  10. 【非专业前端】vue+element+webpack

    先点这里(- ̄▽ ̄)- 环境搭建 默认你已经安装了node.js 下面安装vue和webpack npm install -g @vue/cli npm install -g @vue/cli-ini ...