请教一个要素分组编号问题

一个图层文件已有处理好的序号(FID:1,2,3……)和分组字段(Category:a,b,c),如何生成分组序号(a001,a002,b001,b002,b003……)
目前只会使用 Excel 处理,请问有 gp 工具或者 py 代码实现吗?
谢谢
已邀请:

lanbo

赞同来自: 张佳期

根据帮助凑了一份 py 代码,基本解决问题,记录供参考(py 基本不会,达人多指点)
(先根据字段c排次序)
 
# -*- coding: utf-8 -*- 

import arcpy, os, time, sys
reload(sys)
sys.setdefaultencoding('utf8')

#设置目标文件和目标字段
fc = "c:/demo.gdb/demo"
fields = ['a','b','c']

#建立游标
rows = arcpy.da.UpdateCursor(fc,fields)

#建立各字段数组
l =
x =
p = ["001"]

#将字段a、b值添加至相应数组
for row in rows:
x.append(row[0])
l.append(row[1])

#重置游标位置,重要,否则第二次游标循环无法运行
rows.reset()

#根据字段b(l数组)生成p数组(字段c)
for n in range(1,len(l)):
if l[n] == l[n-1]:
p.append(l[n] + ("00"+str(int(p[n-1])+1))[-3:])
else:
p.append(l[n] + "001")

p[0] = l[0]+"001"


#字段c赋值(p数组)
i=0

for row in rows:
row[2] = p
[i] rows.updateRow(row)
i = i + 1

del row
del rows[/i]

张佳期

赞同来自:

可以用arcpy实现,但是需要你自己去写。遍历属性表,判断类别为a、b或者c,然后组合一下分组字段和判断的索引值。

AriaGIS

赞同来自:

在属性表中的实现方法
前提,属性表中已有的FID为(长整型、短整型、浮点型、双精度之一,即存储数字),Category为string类型。给字段赋值时均使用字段计算器
1、新建三个字段,如Category00,FIDString,End,均为string类型
2、【Category00】:用vb脚本   Category00=FID+Category   
3、【FIDString】:用Python    FIDString='%d'% !FID!    将数字转换为字符串
4、【End】:用vb脚本   End=Category00+FIDString

2.png

 

要回复问题请先登录注册