liuwenliang的个人博客分享 http://blog.sciencenet.cn/u/liuwenliang

博文

[转载]arcpy-GIS获取字段的唯一值、重复值、最值、平均值、方差、标准差、中数、众数等数值。

已有 1890 次阅读 2022-6-23 09:20 |个人分类:python|系统分类:科研笔记|文章来源:转载

arcpy-GIS获取字段的唯一值、重复值、最值、平均值、方差、标准差、中数、众数等数值。


import numpy

from arcpy import da


#唯一值

def GetFieldUniqueValue(inTable,inField):

    value_list=[]

    rows=arcpy.da.SearchCursor(inTable,inField)

    for row in rows:

        if row[0] not in value_list:

            value_list.append( str(row[0]).decode('utf-8') )

    del row

    del rows

    return value_list


# 重复值

def GetDuplicateValue(inTable,inField):

    dic={}

    rows=arcpy.da.SearchCursor(inTable,inField)

    for row in rows:

        if row[0] in dic.keys():

            dic[row[0]]=dic[row[0]]+1

        else:

            dic[row[0]]=1

    del row

    del rows

    for key,value in dic.items():

        if value==1:

            del dic[key]

    return dic


def GetFieldMode(inTable,inField):

    dic=GetDuplicateValue(inTable,inField)

    lst=[value for key,value in dic.items()]

    num=max(lst)

    modeList=[]

    for key,value in dic.items():

        if value==num:

            modeList.append(key)

    return modeList


def GetFieldValueList(inTable,inField):

    value_list=[]

    rows=arcpy.da.SearchCursor(inTable,inField)

    for row in rows:

        value_list.append(row[0])

    del row

    del rows

    return value_list


def main():

    in_fc=arcpy.GetParameterAsText(0)

    in_fld=arcpy.GetParameterAsText(1)

    c=arcpy.GetParameterAsText(2)

    if c== "Unique value":

        uniqueValue=GetFieldUniqueValue(in_fc,in_fld)

        arcpy.AddMessage("Unique Value:")

        for i in uniqueValue:

            arcpy.AddMessage(str(i))

    if c=="Duplicate value":

        duplicateValue= GetDuplicateValue(in_fc,in_fld)

        arcpy.AddMessage("Duplicate Value,Count:")

        for key,value in duplicateValue.items():

            arcpy.AddMessage("{0},{1}".format(key,value))

    if c=="Max/Min/Sum/Average etc.":

        valueList=GetFieldValueList(in_fc,in_fld)

        arcpy.AddMessage("Field Name:{}".format(in_fld))

        arcpy.AddMessage("Max:{}".format(max(valueList)))

        arcpy.AddMessage("Min:{}".format(min(valueList)))

        arcpy.AddMessage("Sum:{}".format(sum(valueList)))

        arcpy.AddMessage("Average:{}".format(numpy.mean(valueList)))

        arcpy.AddMessage("Median:{}".format(numpy.median(valueList)))

        arcpy.AddMessage("Mode:{}".format(GetFieldMode(in_fc,in_fld)))

        arcpy.AddMessage("Variance:{}".format(numpy.var(valueList)))

        arcpy.AddMessage("Standard Deviation:{}".format(numpy.std(valueList)))


转自:https://blog.csdn.net/gognzixiaobai666/article/details/115540573



https://blog.sciencenet.cn/blog-3409972-1344146.html

上一篇:[转载]nodejs http-server
下一篇:[转载][ArcPy] 1 ArcPy与栅格(Raster)
收藏 IP: 210.72.26.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-17 17:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部