删除GIS数据库空层(GDB,MDB,Shape)

来源:互联网 发布:对阿里的数据分析 编辑:程序博客网 时间:2024/06/07 01:07

批量删除GIS数据库空层。

# -*- coding: utf-8 -*-# ---------------------------------------------------------------------------# Merge.py# Created on: 2013-01-21 10:25:22.00000#   (generated by WangLin_TJCH)# Description: # ---------------------------------------------------------------------------# Import arcpy moduleimport arcpyimport os.pathimport timeimport randomfrom arcpy import envFCDBDir = "D:\\aaa"dicAllFC={}fcall=[]GDBAllPath=[]if not isinstance(FCDBDir,unicode):    FCDBDir = FCDBDir.decode('utf-8')#Get Dataset and FeatureClass,Store in dicAllFC,Key =fc value= dsif os.path.exists(FCDBDir):    for dirpath,dirnames,filenames in os.walk(FCDBDir):        # 遍历GDB文件夹 获取GDB        for dirname in dirnames:            if ".gdb" in dirname:                gdbfilepath = os.path.join(dirpath,dirname)                if not gdbfilepath in  GDBAllPath:                    GDBAllPath.append(gdbfilepath)        # 遍历MDB文件夹 获取MDB        for filename in filenames:            if os.path.splitext(filename)[1]=='.mdb':                mdbfilepath = os.path.join(dirpath,filename)                if not mdbfilepath in GDBAllPath:                    GDBAllPath.append(mdbfilepath)        # 遍历Shp文件夹  获取Shape        for filename in filenames:            if os.path.splitext(filename)[1]=='.shp':                shpfilepath = os.path.join(dirpath,filename)                if not dirpath in GDBAllPath:                    GDBAllPath.append(dirpath)    for everyfilepath in GDBAllPath:        env.workspace = everyfilepath        singlefclist = arcpy.ListFeatureClasses("","All")        if singlefclist and len(singlefclist)>0:            for singlefc in singlefclist:                # 如果singlefc是unicode则不做改变,否则将utf-8的singlefc编码解码成unicode                if not isinstance(singlefc,unicode):                    singlefc = singlefc.decode('utf-8')                if isinstance(everyfilepath,unicode):                    fcfullpath = everyfilepath+"\\"+singlefc                else:                   fcfullpath = everyfilepath+"\\"+singlefc.encode('gb2312')                rows = arcpy.SearchCursor(fcfullpath, "", "", "","")                count = 0                for featurecount in rows:                    count=count+1                if count ==0:                    arcpy.Delete_management(fcfullpath)                    print "Delete "+fcfullpath+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime())        datasetlist = arcpy.ListDatasets("","Feature")        for dataset in datasetlist:            # 如果dataset是unicode则不做改变,否则将utf-8的dataset编码解码成unicode            if isinstance(dataset,unicode):                dataset = dataset            else:                dataset = dataset.decode('utf-8')            if isinstance(everyfilepath,unicode):                env.workspace = everyfilepath+"\\"+dataset                dspath = everyfilepath+"\\"+dataset            else:                env.workspace = everyfilepath+"\\"+dataset.encode('gb2312')                dspath = everyfilepath+"\\"+dataset.encode('gb2312')            fclist = arcpy.ListFeatureClasses("")            if fclist and len(fclist)>0:                for fc in fclist:                    # 如果fc是unicode则不做改变,否则将utf-8的fc编码解码成unicode                    if isinstance(fc,unicode):                        fc = fc                    else:                        fc = fc.decode('utf-8')                    if isinstance(dspath,unicode):                        fcFullPath = dspath+"\\"+fc                    else:                        fcFullPath = dspath+"\\"+fc.encode('gb2312')                    randomviewname = fc+"view"+str(random.randint(1,100000))                    arcpy.MakeTableView_management(fc,randomviewname)                    count =0                    count = int(arcpy.GetCount_management(randomviewname).getOutput(0))                    if count ==0:                        arcpy.Delete_management(fcFullPath)                        print "Delete "+fcFullPath+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime())else:    print "Dir Not Exist"print "Done"


0 0