今天通过举例用字段计算器(Field Calculator)中的函数对图斑进行整理,或许在实际中大家用的到。
问题描述
在某个表中把某个字段(如字段一)中具有相同值的记录标出来,并且按照从小到大的排序自动增加一个编号,存储在字段二中,实现如下的效果:
FID
字段1
字段2
1
001
0011
2
001
0012
3
001
0013
4
002
0021
5
002
0022
6
002
0023
解决方法
在ArcGIS10中实现方法如下,字段2右键调出字段计算器,选择Python脚本,在代码块中写:
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return str(inValue)+str(UniqueDict[inValue])
在字段2=的语句下面写:
isDuplicateIndex( !字段1! )
即可实现问题中的要求,字段计算器是一个强大的为字段赋值的工具,支持Python和VBScript代码,并且可以在Model Builder中调用。该代码可以按照地类对图斑进行编号,或者按某个行政区的字段对图斑进行编号。
setdefault函数的用法及理解
dict.setdefault(key, default=None)
功能:如果键不存在于字典中,将会添加该键并将default的值设为该键的默认值,如果键存在于字典中,将读出该键原来对应的值,default的值不会覆盖原来已经存在的键的值。参数:key----要查找的键;default-----查找的键不存在时用于设置的默认值
有图有步骤,是不是还不错!文末下方,大家随手打个卡(点开即可关闭),码字不易,多多支持,为了能及时看到最新分享,大家可以在公众号右上角点击三个小黑点设为星标。
![1de98052d5d511f0db010d862da69f9d.png](https://i-blog.csdnimg.cn/blog_migrate/d73568ce195518c6330d8087eeb51c41.png)