zoukankan      html  css  js  c++  java
  • 批量Append

    GIS数据是按照图幅号组织的,现需要每个单独的系统数据进行拼接。

    以下是批量追加代码:

    # ---------------------------------------------------------------------------
    # Append.py
    # Created on: 2013-01-21 10:25:22.00000
    #   (generated by ArcGIS/ModelBuilder)
    # Description: 
    # ---------------------------------------------------------------------------
    
    # Import arcpy module
    import arcpy
    import os.path
    import time
    from arcpy import env
    
    SHP = "E:\lastquick1w"
    dicAllFC={}
    fcall=[]
    gdbAllPath=[]
    #Get Dataset and FeatureClass,Store in dicAllFC,Key =ds value= fc
    if os.path.exists(SHP):
        for dirpath,dirnames,filenames in os.walk(SHP):
            for filename in filenames:
                if os.path.splitext(filename)[1]=='.mdb':
                    mdbfilepath = os.path.join(dirpath,filename)
                    gdbAllPath.append(mdbfilepath)
                    env.workspace=mdbfilepath
                    datasetlist = arcpy.ListDatasets("","Feature")
                    for dataset in datasetlist:
                        if isinstance(mdbfilepath,unicode):
                            env.workspace = mdbfilepath+"\"+dataset
                        else:
                            env.workspace = mdbfilepath+"\"+dataset.decode('utf-8').encode('gb2312')
                        fclist = arcpy.ListFeatureClasses("")
                        if fclist and len(fclist)>0:
                            if not dicAllFC.has_key(dataset):
                                dicAllFC[dataset]=fclist
                    break
                break
    #Get All MDB Path
    if os.path.exists(SHP):
        for dirpath,dirnames,filenames in os.walk(SHP):
            for filename in filenames:
                if os.path.splitext(filename)[1]=='.mdb':
                    if os.path.join(dirpath,filename) not in gdbAllPath:
                        gdbAllPath.append(os.path.join(dirpath,filename))
    for (k,v) in dicAllFC.items():
        for singlefc in v:
            for singlegdbPath in gdbAllPath:
                if isinstance(singlegdbPath,unicode):
                    fcFullPath = singlegdbPath+"\"+k+"\"+singlefc
                else:
                    fcFullPath = singlegdbPath+"\"+k.decode('utf-8').encode('gb2312')+"\"+singlefc.decode('utf-8').encode('gb2312')
                if arcpy.Exists(fcFullPath) and fcFullPath not in fcall:
                    fcall.append(fcFullPath)
                else:
                    print fcFullPath + " Not Exist ****************************************"
            if fcall and len(fcall)>=2:
                targetFC = fcall.pop(0)
                try:
                    arcpy.Append_management(fcall,targetFC,"TEST","","");
                    print targetFC+"@@@succeed At "+time.strftime("%Y-%m-%d %X",time.localtime())+"###Contains "+str(len(fcall))
                    fcall=[]
                except Exception as inst:
                    print targetFC+"@@@Failed At "+time.strftime("%Y-%m-%d %X",time.localtime())+"###Contains "+str(len(fcall))
                    fcall=[]
    print "Complete At"+time.strftime("%Y-%m-%d %X",time.localtime())
                            
    View Code

    代码图片如下:

    高调做事,低调做人~!
  • 相关阅读:
    asp网站中使用百度ueditor教程
    URL特殊字符需转义
    织梦DEDE文章列表前面自动加递增数字标签
    dede修改templets模板文件夹后,出现“无法在这个位置找到: ”错误的解决办法
    Mysql命令大全
    成功,来自有梦想,肯坚持
    飞天侠模板的相关修改教程
    bios自检时间长,显示0075错误
    电脑桌面假死解决方法
    没有哪个人是随随便便成功的
  • 原文地址:https://www.cnblogs.com/514687800/p/3528674.html
Copyright © 2011-2022 走看看