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

批量删除GIS数据库空层。

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# Merge.py
# Created on: 2013-01-21 10:25:22.00000
#   (generated by WangLin_TJCH)
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy
import os.path
import time
import random
from arcpy import env



FCDBDir = "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= ds
if 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"

转载自:https://blog.csdn.net/wl05031/article/details/50476251

You may also like...