删除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