解析ArcGis的字段计算器(三)——文本型字段计算,编号那些事儿
实际操作中我们一般会将编号字段定义为文本型,因为编号不是序号,序号是一个递增数值,而编号往往是一个数字串代码。
本篇无说明的均使用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的字段计算器(三)——文本型字段计算,编号那些事儿的更多相关文章
- 解析ArcGis的标注(三)——标注的放置 与 转注记修改
该“标注”系列博文的标注引擎使用“标准标注引擎(standard label engine)”,这个概念如不知道,可不理会,ArcGis默认标注引擎就是它. 写着写着发现ArcGis标注的破事儿好多啊 ...
- 解析ArcGis的字段计算器(一)——数值型数据计算,从“面积计算”开始
先来点儿背景知识铺垫: ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python. 多数人选择使用前者,因为它的基本函数和Excel的函数貌似一样.注意我 ...
- 解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面
这里所说的重复是指完成重复的,不是叠在一起的两个或多个要素,这种应该叫做“压盖”或“重叠”.重复往往是在合并多Shpfile文件时不小心重复导入造成的. 这里提供一种可能的解决办法,数据无价,请备份! ...
- ArcGis 字段计算器表达式(Field calculator expression).cal文件与标注表达式(label expression).lxp的实质及其编码方式、解析方法
ArcGis 字段计算器表达式可以保存为一个扩展名为.cal的文件,该文件的实质是一个文本文件,编码方式为 UTF-16-LE. 官方的说明是“ArcGIS 应用程序使用 UTF-16-LE 编码读写 ...
- ArcGIS字段计算器分割字段中的字符串
ArcGIS字段计算器分割字段中的字符串 实例:在一个字段中存有长宽高三个属性数据,以x分割.例如sss为字段名(字段属性为文本类型),数据格式为:100x200x300,利用字段计算器分别将三个数存 ...
- ArcGIS 字段计算器 Python 坑
最近要处理个简单数据,一个字段中为文本类型,包含各种描述.要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来. 比如 字段值为 “非法占用100平方米” 处理后结果为 100 ...
- arcgis字段计算器
arcgis字段计算器 一.VB脚本 1.取某字段前几位或者后几位 ) ) 2.合并字段,中间加符号 Dim a if [ZDDM2] ="" Then a= [ZDDM1] el ...
- 由ArcMap属性字段自增引出字段计算器使用Python的技巧
1.前言 前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...
- [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段 <译>
multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在“了解你的数据”一节中提 ...
随机推荐
- 【CF1009F】Dominant Indices(长链剖分)
[CF1009F]Dominant Indices(长链剖分) 题面 洛谷 CF 翻译: 给定一棵\(n\)个点,以\(1\)号点为根的有根树. 对于每个点,回答在它子树中, 假设距离它为\(d\)的 ...
- tvs二极管应用电路
瞬态电压抑制器(TVS)具有响应时间快.瞬态功率大.漏电流低.击穿电压偏差小.箝位电压较易控制.无损坏极限.体积小等优点.目前已广泛应用于计算机系统.通讯设备.交/直流电源.汽车.家用电器.仪器仪表等 ...
- php 写斐波那契数列
<?php $arr = []; for($i=1;$i<9;$i++){ if($i==1 || $i ==2){ $arr[$i-1] = 1; }else{ $arr[$i-1] = ...
- bootstrap学习一
bootstrap学习 一.css概览: 1.使用HTML5标准,<!DOCTYPE html>. 2.移动设备优先: <meta name="viewport" ...
- A1040. Longest Symmetric String
Given a string, you are supposed to output the length of the longest symmetric sub-string. For examp ...
- bzoj1030 文本生成器
题目链接 题意 给出\(n\)个字符串,要构造一个长度为\(m\)的字符串\(S\),使得给出的\(n\)个字符串中至少有一个是\(S\)的子串.问方案数. 思路 \(AC\)自动机+\(DP\) 考 ...
- JavaScrip相关知识总结
1.javascript是一种基于对象的语言,其中有四个常用的“全局对象”的成员使用,因为没有“全局对象关键字global”而直接使用,所以感觉像违背了JavaScript基于对象编程的原则,但其实是 ...
- JAVA 微信支付 native方式
最近做了一个微信native方式支付的demo,整理一下. 首先到微信公众号官网阅读开发文档,虽然文档对于java没有例子,但是也可以作参考.https://pay.weixin.qq.com/wik ...
- NOIP 提高组 2014 飞扬的小鸟(记录结果再利用的DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9937201.html 参考资料: [1]:https://www.luogu.org/blog/xxzh242 ...
- STM32 ------ 串口 数据位长度 和 奇偶校验位
USART_InitStructure.USART_WordLength 的值是数据位长度+一个奇偶校验位(如果无奇偶校验则不加一)