当前位置:   article > 正文

ArcGIS提取字段一部分内容加上顺序码的方法_arcgis字段截取前6位

arcgis字段截取前6位

问题

当图斑发生破斑后需要用到标识码加顺序码已确保唯一性。有时需要在一个区县、一个乡镇或者一个行政村内重新编号,此时需要截取BSM的前几位数字加上顺序码来编号。

一、解决办法

使用Python代码来搞定,在字段计算窗口左下角有帮助,能直接找到ArcGIS自带的加顺序码的基础代码,在此基础上修改即可。

 

二、实例代码一

以下部分是主体代码:

  1. rec=0 #定义成整数
  2. out="" #定义成字符串
  3. def autoIncrement(id):
  4. global rec
  5. global out
  6. pStart = 1 #adjust start value, if req'd
  7. pInterval = 1 #adjust interval value, if req'd
  8. if (rec == 0):
  9. rec = pStart
  10. new_rec= str(rec).zfill(3) #整数转字符串并以0补充满三位数。
  11. out = id + new_rec
  12. else:
  13. rec = rec + pInterval
  14. new_rec= str(rec).zfill(3) #整数转字符串并以0补充满三位数。
  15. out = id + new_rec
  16. return out

.zfill(3)是python自带的以0来补位的函数,3表示3位数,不足的以0来填补,该函数只对字符串类型的值有效,故需要对数值类型的参数进行转换。 

 以下部分是调用函数:

autoIncrement(!BSM![0:9])

 感叹号那部分是直接双击字段添加进来的,[0:9]表示提取该字符串的前9位数。

字符串提取知识点:

  1. str = ‘0123456789’
  2. print str[0:3] #截取第一位到第三位的字符
  3. print str[:] #截取字符串的全部字符
  4. print str[6:] #截取第七个字符到结尾
  5. print str[:-3] #截取从头开始到倒数第三个字符之前
  6. print str[2] #截取第三个字符
  7. print str[-1] #截取倒数第一个字符
  8. print str[::-1] #创造一个与原字符串顺序相反的字符串
  9. print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
  10. print str[-3:] #截取倒数第三位到结尾
  11. print str[:-5:-3] #逆序截取,具体啥意思没搞明白?

 结果:

  1. 0123456789
  2. 0123456
  3. 9
  4. 78
  5. 96

 三、实例代码二(升级版)

有时候,我们在编号时需要按照图层中某一字段属性类型对要素进行编号。我们需要按每个区县、乡镇、行政村都从0开始编号。同样可以在字段计算器中采取Python脚本的方式进行实现。我们定义一个isDuplicateIndex(inValue)函数,然后调用即可,同时让编号按3位数对齐。

  1. UniqueDict = {} #定义字典
  2. def isDuplicateIndex(inValue):
  3. UniqueDict.setdefault(inValue,0)
  4. UniqueDict[inValue] += 1
  5. string=str(UniqueDict[inValue]).zfill(3) #强制转字符串并补位。
  6. return string

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读