(二十)arcpy开发&利用arcpy实现对要素shapefile数据的字段数据值空和空白的统计

52 篇文章 79 订阅

上一篇博客https://blog.csdn.net/u010608964/article/details/87889528是关于对字段值不在指定数值内的统计。而这次我们学习的是关于对指定字段名称,然后统计该字段名称中空和空格值的统计。其实现原理和上面的博文是一致的。现在来看一些具体的实现代码。


#coding=utf-8
import os
import arcpy
import sys


def getFieldNames(fc):
    fieldList = []
    for f in arcpy.ListFields(fc):
        fieldList.append(str(f.name))
    return fieldList

def getCount( fc):
    r = arcpy.GetCount_management(fc)
    return int(r.getOutput(0))

def notNullOrEmpty(fc, colName):

    rowCount = getCount(fc)
    print("检查 %s 条记录在 %s...字段中" % (rowCount, colName))
    if not colName in getFieldNames(fc):
        print("字段 %s 没有找到!" % colName)
        return "字段没有找到"
    processedCount = 0
    badRows = 0
    badRowList = []
    OIDField = arcpy.Describe(fc).OIDFieldName
    with arcpy.da.UpdateCursor(fc, [colName, OIDField]) as c:
        for row in c:
            processedCount += 1
            testVal = row[0]
            badRowOID = row[1]
            if testVal is None:
                badRows += 1
                badRowList.append(badRowOID)
                continue
            elif len(testVal) == 0 or testVal.isspace():
                # 空的或者空格的字段
                badRows += 1
                badRowList.append(badRowOID)
                continue
            else:

                row[0] = testVal.strip()
                c.updateRow(row)
        # 显示处理过程
        sys.stdout.write('\r')
        print("OK rows: %s. Bad rows: %s. (%s%s)" % (
            processedCount - badRows, badRows, round(((processedCount / rowCount) * 100), 1), '%'),)
    print("\n完成字段的字段 %s. %s 检验" % (colName, badRows))
    if badRows > 0:
        print("警告: %s条空或者空白字段,检验字段 %s." % (
            badRows, colName))
        return badRowList
    else:
        return None

data="D:\\Data\\中国国界和省界的SHP格式数据\\省界\\bou2_4p.shp";
notNullOrEmpty(data,'test');

最后的实现过程,如下图所示。


                                                                     更多内容,请关注公众号

                                                            

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
arcpy是ArcGIS软件中的一个模块,可以利用Python编程语言进行地理信息系统(GIS)数据处理和分析。在制图方面,arcpy可以与数据驱动模块结合使用,实现批量制图的功能。 数据驱动模块可以根据已有的属性数据,自动更新地图的内容和样式。通过arcpy数据驱动模块的结合,可以快速批量制作大量具有相同模式的地图。 首先,需要准备好地图的模板,包括底图、图例、标注等元素。然后,利用arcpy读取需要制图的数据,例如地理数据库或者shapefile等。 接着,我们可以使用arcpy中的数据驱动模块,如ArcPy.mapping或者ArcPy.mp,来设置地图的数据驱动属性。例如,可以根据某个字段对图层进行分类,使得同一类别的要素显示相同的颜色或符号。 在设置好数据驱动属性后,我们可以使用arcpy中的绘图函数,如arcpy.mapping.ExportToPDF或arcpy.mapping.ExportToJPEG,将地图输出为PDF或JPEG等格式。可以通过循环遍历的方式,对多个数据进行批量处理,从而实现批量制图的功能。 最后,可以利用arcpy将制作好的地图自动发布到ArcGIS Online或者在本地进行展示和共享。 通过arcpy结合数据驱动模块的批量制图方法,可以高效地制作大量具有规律性的地图,节省时间和人力。同时,结合GIS思维,可以灵活运用地理信息系统的理论和方法,更好地分析、展示和共享地理数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yGIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值