zoukankan      html  css  js  c++  java
  • 重命名要素类

    配置文件格式如下:

    引入了读取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 module
    import arcpy
    import os.path
    import time
    import sys
    import random
    import xlrd
    from arcpy import env
    
    excelconfig = "中英文图层名称对照.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= 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)
                    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"
    高调做事,低调做人~!
  • 相关阅读:
    深入浅出Mybatis系列(一)---Mybatis入门
    深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
    深入浅出Mybatis系列(九)---强大的动态SQL
    ZK请求处理
    ZK配置文件
    ZK数据同步
    集群间通信的消息类型
    ZK客户端
    Zookeeper崩溃恢复过程(Leader选举)
    Windows编程
  • 原文地址:https://www.cnblogs.com/514687800/p/5109917.html
Copyright © 2011-2022 走看看