• 删除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"
                                    
                                    
                    
                        
        
                                
                        
                            
                            
                    
                            
                            
                        
                    
    View Code
    高调做事,低调做人~!
  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/514687800/p/5109826.html
Copyright © 2020-2023  润新知