(十七)arcpy开发&利用arcpy在arcgis中实现对shapeifle要素复杂统计

这次我们来学习一下关于统计要素复杂性方面知识。首先、这里使用的是arcpy对要素进行遍历,根据要素的属性,这里取出一个要素的总点数,要素的几何部分数目。两个值相减。对一个shapefile文件所有的要素进行遍历。取出差值最大和最小值,相应的就可以计算出平均值,当然要素记录数目,多几何要素的统计就自然不在话下。

其中这里的测试shapefile文件如下图所示。

最后的实现代码如下所示。

#coding=utf-8
import arcpy
import sys
def calcFeatureComplexity( fc):

    print("Calculating complexity of feature geometries...")
    fCount = 0
    r = arcpy.GetCount_management(fc)
    totalCount = int(r.getOutput(0))
    maxCpx = 0
    minCpx = 0
    multipartCount = 0
    vSum = 0
    with arcpy.da.SearchCursor(fc, ['SHAPE@']) as c:
        for row in c:
            v = row[0].pointCount - row[0].partCount
            if row[0].partCount > 1:
                multipartCount += 1
            vSum += v
            fCount += 1
            sys.stdout.write('\r')
            print "要素 %s  %s (%s%s 处理中)..." % (
                fCount, totalCount, round(((fCount / totalCount) * 100), 1), '%'),
            if v > maxCpx:
                maxCpx = v
            if minCpx == 0 and v > 0:
                # 初始化最小的顶点数,保证为1

                minCpx = v
            elif v < minCpx and v > 0:
                minCpx = v
    msg = "\n最后统计:"
    msg += "总共的要素记录为 %s " % fCount
    msg += "平均要素复杂为: %s 顶点数目" % round((vSum / fCount), 2)
    msg += "最大的复杂为: %s 顶点数目" % maxCpx
    msg += "最小的复杂为: %s 顶点数目" % minCpx
    msg += "多要素几何数目为: %s found." % multipartCount
    print(msg)
    if multipartCount > 0:
        print("")
    return msg


data="D:\\Data\\中国国界和省界的SHP格式数据\\省界\\bou2_4p.shp";

calcFeatureComplexity(data)

实现结果在控制台命令中。


                                                                更多内容,请关注公众号

                                                      

转载自:https://blog.csdn.net/u010608964/article/details/87682578

You may also like...