在ArcGIS属性表中根据某一字段进行分组编号

ArcGIS中根据字段分组编号

在使用ArcGIS处理数据过程中,常会遇到对属性表计算的问题,如自动编号、分组编号等等。

近日,在一个项目的数据处理过程中,便遇到了一个分组编号的问题。
如下图,Name字段多个相同值,需要根据这一字段进行分组编号:
《在ArcGIS属性表中根据某一字段进行分组编号》
在ArcGIS字段计算器帮助文档中,有一段示例代码,是关于自动编号的,给定一个起始值和步长值,自动赋值编号。

以下是ArcGIS字段计算器的帮助示意:《在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

具体使用方法如下:
《在ArcGIS属性表中根据某一字段进行分组编号》
选择解析程序为: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

调用方式,则多一个选择参考字段,其余一致。具体如下图:
《在ArcGIS属性表中根据某一字段进行分组编号》
效果展示:
《在ArcGIS属性表中根据某一字段进行分组编号》

完成计算,大功告成!

第一次尝试写博客,献丑了。欢迎交流。

    原文作者:GIS公寓
    原文地址: https://blog.csdn.net/qq_28225887/article/details/102993461
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞