ArcMap 字段计算器程序生成唯一ID
我在ArcMap中使用字段计算器,想为我所在县的每个雨水排放口创建一个独特的ID。
这个ID应该像这样:16-I-003
第一个数字是市政编号,存放在名为“Munic”的列/字段中。
字母是来自名为“Point”的列/字段中的字母。
最后一个数字就是从1开始,直到这个市政区有多少个排水口。
到目前为止,我已经有了:
rec=0
def autoIncrement()
pStart=1
pInterval=1
if(rec==0):
rec=pStart
else:
rec=rec+pInterval
return "16-I-" '{0:03}'.format(rec)
你可以看到,我一直在手动输入市政编号、字母和连字符。但我希望能使用“Munic”和“Point”这两个字段,这样每次它们变化时,我就不需要手动输入了。
我在python和ArcMap方面还是个新手,所以请把事情说得简单一点。
2 个回答
0
我觉得你可以用下面的代码来实现这个功能。
def autoIncrement(a,b):
global rec
pStart=1
pInterval=1
if(rec==0):
rec=pStart
else:
rec=rec+pInterval
r = "{1}-{2}-{0:03}".format(a,b,rec)
return r
然后调用
autoIncrement( !Munic! , !Point! )
这里的 r = "{1}-{2}-{0:03}".format(a,b,rec) 这段代码是把大括号 {} 里的内容替换成变量 a 和 b 的值,实际上这些值就是传给这个函数的 Munic 和 Point 的值。
0
我对ArcMap不太熟悉,所以不能直接帮你,但你可以把你的函数改成一个生成器,像这样:
def StormDrainIDGenerator():
rec = 0
while (rec < 99):
rec += 1
yield "16-I-" '{0:03}'.format(rec)
如果你觉得这样可以,那就把生成器改成可以接受Munic和Point值的,这样你就能在格式字符串中使用它们了。你可能还需要把结束值也变成参数。
使用生成器的好处是,你可以把它放到任何需要可迭代对象的地方,所以你可以简单地通过说list(StormDrainIDGenerator())来创建这样一个列表。
你是想问怎么把Munic和Point值放进字符串ID里吗?用.format()来实现吗?