重命名要素类

来源:互联网 发布:软件测试基础知识总结 编辑:程序博客网 时间:2024/06/06 02:14

配置文件格式如下:



引入了读取Excel格式xlsx格式的第三方库xlrd(xlrd-0.9.3.tar.gz)


具体Python代码如下:

# -*- coding: utf-8 -*-# ---------------------------------------------------------------------------# Merge.py# Created on: 2013-01-21 10:25:22.00000#   (generated by WangLin_TJCH)# Description: # ---------------------------------------------------------------------------# Import arcpy moduleimport arcpyimport os.pathimport timeimport sysimport randomimport xlrdfrom arcpy import envexcelconfig = "中英文图层名称对照.xlsx"FCDBDir = "D:\\第一批国情普查检查\\复件 要素数据"# key存放中文 value存放英文dicEnCnFC={}fcall=[]GDBAllPath=[]# 获取脚本运行目录 os.getcwd()# 获取脚本所在目录 os.path.split(os.path.realpath(sys.argv[0]))[0]fullconfig = os.path.join(os.getcwd(),excelconfig)if os.path.isfile(fullconfig):    workbook = xlrd.open_workbook(fullconfig)    try:        sh = workbook.sheet_by_index(0)        nrows = sh.nrows        ncols = sh.ncols        row_list = []        # 从索引为1的地方开始读取,不包含nrows        for rownum in range(1,nrows):            row = sh.row_values(rownum)            if row:                for colnum in range(0,ncols):                    cellvalue = row[colnum].strip()                    if colnum % 2==1:                        if not dicEnCnFC.has_key(cellvalue):                            dicEnCnFC[cellvalue] = row[colnum-1]    except:        print "read Excel Failed:"+fullconfig+Exception#Get Dataset and FeatureClass,Store in dicAllFC,Key =fc value= dsif 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)                GDBAllPath.append(gdbfilepath)        # 遍历MDB文件夹 获取MDB        for filename in filenames:            if os.path.splitext(filename)[1]=='.mdb':                mdbfilepath = os.path.join(dirpath,filename)                GDBAllPath.append(mdbfilepath)        # 遍历Shp文件夹  获取Shape        for filename in filenames:            if os.path.splitext(filename)[1]=='.shp':                shpfilepath = os.path.join(dirpath,filename)                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')                # 对于Shape FC会带扩展名.shp,如果是gdb或mdb 则不带                if '.shp' in singlefc:                    singlefc = singlefc[0:singlefc.find('.shp')]                    if dicEnCnFC.has_key(singlefc):                        arcpy.Rename_management(singlefc+".shp",dicEnCnFC[singlefc]+".shp",'')                        print "Rename "+singlefc+"->"+dicEnCnFC[singlefc]+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime())                else:                    if dicEnCnFC.has_key(singlefc):                        arcpy.Rename_management(singlefc,dicEnCnFC[singlefc],'')                        print "Rename "+singlefc+"->"+dicEnCnFC[singlefc]+" 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 not isinstance(dataset,unicode):                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:                    if dicEnCnFC.has_key(fc):                        arcpy.Rename_management(fc,dicEnCnFC[fc],'')                        print "Rename "+fc+"->"+dicEnCnFC[fc]+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime())print "Done"


0 0
原创粉丝点击