zoukankan      html  css  js  c++  java
  • 删除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
    高调做事,低调做人~!
  • 相关阅读:
    Linux内核分析期中总结
    Linux内核分析期末总结
    《Linux内核设计与实现》第四章读书笔记
    《Linux内核分析》第八周 进程的切换和系统的一般执行过程
    《深入理解计算机系统》第七章读书笔记
    《Linux内核设计与实现》第三章读书笔记
    "Linux内核分析"第七周
    "Linux内核分析"第六周实验报告
    “Linux内核分析”第五周报告
    Linux实验四报告
  • 原文地址:https://www.cnblogs.com/514687800/p/5109826.html
Copyright © 2011-2022 走看看