我是靠谱客的博主 粗犷小土豆,这篇文章主要介绍ArcGIS字段计算器(Python篇) —— 群内问题汇总,现在分享给大家,希望可以做个参考。


        博客开张,多多捧场。再给咱交流群打个广告。(arcgis技术交流 47410747)
    
        本博客全为原创,转载请注明蓝胖子。他人东西(云)笔记即可,不用记录在博客。
    

 

        作为近年Esri支持得最好的脚本语言,Python能够在字段计算器中解决不少简单的属性问题(如编号、截位等)。ArcPy则是直接能够进行ArcGis二次开发。系统性文章目标太大,目前我会把群里面之前问的字段计算器问题以及ArcPy问题汇总。有字段计算器问题的兄弟们可以在群里面找蓝胖子,也可以找其他人员。解决了再到本帖汇总。

 

 

        另注:python是对代码缩进要求很严格的编程语言。本博客统一采用4个空格作为缩进。

        python很少使用分号,逗号一定使用英文半角。(同学们请注意)

 

        问题一:多字段的最大、最小值

        python的基础函数中有求数值的求和、最大、最小值函数,所以我们也可以直接使用的。

        举例:假设有三个字段,NumA,NumB,NumC三个字段都是数值型的字段,我们需要求三个字段的最大值,并写入到MaxNum字段中。

        只需在表达式中输入 max([NumA,NumB,NumC])即可。

        最大值函数:max([NumA,NumB,NumC])

        最小值函数:min([NumA,NumB,NumC])

        多字段求和函数:sum([NumA,NumB,NumC])

 

        最大值使用截图如下:

    

 

 

        问题二:流水号编码

        

        举例1:

        举例描述:已有宗地图层,包含字段“地籍子区”、“特征码”、“宗地编码”按照 宗地统一编码 规则给图层内的宗地编码。
        宗地统一编码规则:宗地编码 = "地籍子区" + "特征码" + 5位自然数流水号。
    

        原始属性表截图:

        字段计算器使用截图:

        处理结果截图:

        代码块如下:

dict={}
def funZdbm(fldVal,tzm):
if fldVal == None:
return None
if tzm == None:
return None
temp = 0
key = fldVal + tzm
if dict.has_key(key) == True:
temp = dict[key]
strVal = key + str(temp+1).zfill(5)
dict[key] = temp+1
return strVal
else :
dict[key] = 1
strVal = key + str(temp+1).zfill(5)
return strVal

 

        举例2:

        描述:有文本型字段流水号,其中有两行记录已编号,需要续编其他记录,并在前面补零。保证流水号为6位数

 

        原始属性表截图:

 

 

 

 

字段计算器使用截图:

处理结果截图:

 代码块:

 

max = 504
def funLsh(fldVal):
global max
fldVal = fldVal.strip()
if fldVal == None or fldVal == "":
max = max + 1
return str(max).zfill(6)
else:
return fldVal

 

 

 

 

 

        问题三:文本型字段查重

        描述: 检查宗地图层,将“宗地代码”字段有重复记录的内容标记出来,并将检查结果赋给"检查结果"字段。

    

 

        原始属性表截图:

        字段计算器使用截图:

        处理结果截图:

        代码块:(此代码在数据量太大的情况下慎用,估计会比较卡,预计十万以内还是可以承受,有异常可留言博主)

dict={}
def adjRepeat(fldVal,id):
if fldVal == None:
return None
temp = 0
strVal = ""
if dict.has_key(fldVal) == True:
temp = dict[fldVal]
strVal = "宗地代码字段和FID为" + str(temp) + "的图元重复"
return strVal
else :
dict[fldVal] = id
return ""

 

 

 

 

 

最后

以上就是粗犷小土豆最近收集整理的关于ArcGIS字段计算器(Python篇) —— 群内问题汇总的全部内容,更多相关ArcGIS字段计算器(Python篇)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部