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

时间: 2025-01-11 16:49:54

删除GIS数据库空层(GDB,MDB,Shape)的相关文章

批量裁剪GIS数据(包含GDB,MDB,Shp)

# -*- coding: utf-8 -*- # made by 汪林_质检处 import os.path import arcpy import sys from arcpy import env FCDBDir = "E:\\cliptest\\data" output = "E:\\Result" clipshp = "E:\\cliptest\\clip.shp" GDBAllPath=[] # OID字段名称 ShapeOID =

删除GIS数据属性值空格(GDB,MDB,Shp)

批量删除GIS数据属性值空格 # -*- coding: utf-8 -*- # --------------------------------------------------------------------------- # Merge.py # Created on: 2015-05-04 10:25:22.00000 # (generated by WangLin_TJCH) # Description: # -----------------------------------

删除oracle数据库用户

手工删除ORACLE数据库用户时常会出现会话进程仍在使用导致删除失败的情况.需要查询会话并将会话删除才能成功将数据库用户删除,比较不方便. 适用场景 自动删除oracle数据库用户 脚本代码 脚本名称:drop_user.sh #!/bin/bash function isExist_dbuser() { [ $# -ne 1 ] && { printf "Call the function isExist_dbuser error.\n";return 1;} loc

Ansible 从远程主机添加或删除MySQL数据库

mysql_db - 从远程主机添加或删除MySQL数据库. 概要 要求(在执行模块的主机上) 选项 例子 笔记 状态 支持 概要 从远程主机添加或删除MySQL数据库. 要求(在执行模块的主机上) MySQLdb的 mysql(命令行二进制) mysqldump(命令行二进制) 选项 参数 需要 默认 选择 注释 collation no     整理模式(排序).这仅适用于新的表/数据库,并且不更新现有的表,这是MySQL的限制. CONFIG_FILE (2.0中加入) no ?/ .my

如何批量删除Redis数据库中的Key

借助 Linux 的 xargs 指令来完成 1 redis-cli keys "*" | xargs redis-cli del 2 //如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径 1 //带密码 2 redis-cli -a password keys "*" | xargs redis-cli -a password del 1 //访问指定库时候,下面的命令指定数据序号为0,即默认数据库 2 redis-cli -n 0

sql server 2008 删除某数据库所有表

/* ------sqlserver 2008 删除某数据库所有表-------- */ declare @tname varchar(8000) set @tname='' select @[email protected] + '[' + Name + '],' from sysobjects where xtype='U' select @tname='drop table ' + left(@tname,len(@tname)-1) exec(@tname) 删除 Email的全部数据

如何通过PhpMyAdmin批量删除MYSQL数据库数据表

使用这个方法前,强烈建议先备份整个数据库.至于怎么备份?你不会么?在本文下方留言吧. 具体方法:复制下面的php执行语句,保存为sql.php文件(注意配置数据库名称.密码.数据表头),通过ftp上传到网站跟目录,运行. <?php //设置数据库连接信息.数据库服务器地址,数据库用户名,数据密码 mysql_connect('localhost','root','123456'); //设置查询的数据库名称,比如CMSYOU当前设置的是phpcms mysql_select_db('phpcm

linux操作系统下完全删除oracle数据库

1.关掉oracle server 和 background processes ps -ef | grep ora 关掉数据库 shutdown immediate 2.关掉监听 lsnrctl  status 如果开启的话就执行lsnrctl stop 关掉 3.把$ORACLE_HOME下面的文件删掉 用dbca图形界面把数据库删掉 4.把/usr/local/bin 下的三个文件夹 dbhome oraenv coraenv删掉 rm -f dbhome  rm -f oraenv  r

SQL Server删除distribution数据库

在数据库服务器删除复制(发布订阅)后,如何删除掉数据库distribution呢?如果你通过SSMS工具去删除数据库distribution,你会发现根本没有删除选项. 下面介绍一下删除distribution的步骤 步骤1: 查看相关订阅服务器的信息,如果还存在对应的订阅服务器,从注册的服务器中删除订阅服务器名称 exec sp_helpsubscriberinfo ; go exec sp_dropsubscriber 'SubscriberName'; go 步骤2: 查看分发服务器的发布