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 envSHP = "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=mdbfilepathdatasetlist = arcpy.ListDatasets("","Feature")for dataset in datasetlist:if isinstance(mdbfilepath,unicode):env.workspace = mdbfilepath+"\\"+datasetelse: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]=fclistbreakbreak #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+"\\"+singlefcelse: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())
代码图片如下: