ArcGIS中根据字段分组编号
在使用ArcGIS处理数据过程中,常会遇到对属性表计算的问题,如自动编号、分组编号等等。
近日,在一个项目的数据处理过程中,便遇到了一个分组编号的问题。
如下图,Name字段多个相同值,需要根据这一字段进行分组编号:
在ArcGIS字段计算器帮助文档中,有一段示例代码,是关于自动编号的,给定一个起始值和步长值,自动赋值编号。
以下是ArcGIS字段计算器的帮助示意:示例代码:
rec=0
def autoIncrement():
global rec
pStart = 1 #adjust start value, if req'd
pInterval = 1 #adjust interval value, if req'd
if (rec == 0):
rec = pStart
else:
rec = rec + pInterval
return rec
具体使用方法如下:
选择解析程序为:Python
显示代码块打勾
将代码块添加进去
最下方调用计算函数即可。
为实现分组编号,将在这一段示例代码进行修改即可。
实现原理大致上就是,根据输入依据字段,根据字段内容,确认是重新开始计数,还是按照既定步长进行计算。
添加多一个全局变量,增加一个if判断语句,便可以实现
下边是具体实现代码:
rec=0
fname = ""
def autoIncrement(field):
global rec
global fname
if field != fname:
fname = field
pStart = 1 #adjust start value, if req'd
rec = pStart
return rec
else:
pInterval = 1 #adjust interval value, if req'd
rec = rec + pInterval
return rec
调用方式,则多一个选择参考字段,其余一致。具体如下图:
效果展示:
完成计算,大功告成!
第一次尝试写博客,献丑了。欢迎交流。