这次我们来学习一下关于统计要素复杂性方面知识。首先、这里使用的是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)
实现结果在控制台命令中。
更多内容,请关注公众号