
从模板工作空间,获得要素名或表,根据要素名把数据所在目录含子目录下所有的mdb、gdb、shp数据库相同图层名的要素数据或表,按字段相同追加到模板要素或表中,运行界面如下图所示。

矢量数据批量合并界面
#coding=utf8
import sys
#############
#################################
import arcpy
import string
import os
def isGDB(yldir):
if (yldir.lower().endswith(".gdb")):
return True
elif (yldir.lower().endswith(".mdb")):
return True
else:
return False
def CopyDir(outdb,workspace): #shp
arcpy.env.workspace = workspace
files = arcpy.ListWorkspaces("","")
if files:
for File in files:
if (File==outdb):
continue
AppendGDB(File,outdb)
def AppendGDB(File,outdb):
if (File.lower()==outdb.lower()):
return
arcpy.AddMessage('File=========:'+File)
arcpy.env.workspace = outdb
fcs = arcpy.ListFeatureClasses()
for fc in fcs:
try:
if arcpy.Exists(File + "\\" + fc):
arcpy.AddMessage("fc:"+File + "\\" + fc)
arcpy.Append_management([ File + "\\" + fc], outdb + "\\" + fc,"NO_TEST","","")
elif arcpy.Exists(File + os.sep + fc + ".shp"): # 或者shp:
arcpy.AddMessage("fc:" + File + "\\" + fc+".shp")
arcpy.Append_management([File + "\\" + fc+".shp"], outdb + "\\" + fc, "NO_TEST", "", "")
else:
arcpy.AddMessage("not exists:"+File + "\\" + fc)
except arcpy.ExecuteError:
arcpy.AddWarning(arcpy.GetMessages())
fcs = arcpy.ListTables()
for fc in fcs:
arcpy.AddMessage("fc:"+fc)
try:
if arcpy.Exists(File + os.sep + fc):#或者dbf
arcpy.Append_management([File + "\\" + fc], outdb + "\\" + fc,"NO_TEST","","")
elif arcpy.Exists(File + os.sep + fc+".dbf"):
arcpy.Append_management([File + "\\" + fc+".dbf"], outdb + "\\" + fc, "NO_TEST", "", "")
else:
arcpy.AddMessage("not exists:"+File + "\\" + fc)
except arcpy.ExecuteError:
arcpy.AddWarning(arcpy.GetMessages())
dss = arcpy.ListDatasets()
for ds in dss:
arcpy.AddMessage("ds:"+ds)
arcpy.env.workspace = outdb+"\\"+ds
fcs1 = arcpy.ListFeatureClasses()
for fc1 in fcs1:
arcpy.AddMessage("fc1:"+fc1)
try:
if arcpy.Exists(File + "\\" + ds + "\\" + fc1):
arcpy.Append_management([File + "\\" + ds + "\\" + fc1], outdb + "\\" + ds + "\\" + fc1,"NO_TEST","","")
else:
arcpy.AddMessage("not exists:"+File + "\\" + ds + "\\" + fc1)
except arcpy.ExecuteError:
arcpy.AddWarning(arcpy.GetMessages())
workspace =arcpy.GetParameterAsText(0) #'C:\Users\Administrator\Desktop\\cc'
outdb =arcpy.GetParameterAsText(1) #'C:\Users\Administrator\Desktop\\lutian.mdb'
for dirpath, dirnames, filenames in os.walk(workspace):
arcpy.AddMessage('dirpath=======:'+dirpath)
if isGDB(dirpath):#是gdb
arcpy.AddMessage(u'dirpath=======是gdb:'+dirpath)
AppendGDB(dirpath,outdb)
for dirname in dirnames:
arcpy.AddMessage("dirname=="+dirname)
if isGDB(dirname):
arcpy.AddMessage(u'dirname=======是gdb:'+dirpath)
continue
else:
filepath= os.path.join(dirpath,dirname)
AppendGDB(filepath,outdb)
arcpy.AddMessage(u'dirname不是gdb:'+dirname)
for filename in filenames:
if filename.lower().endswith(".mdb"):
filepath= os.path.join(dirpath,filename)
arcpy.AddMessage('filepath===:'+filepath)
AppendGDB(filepath,outdb)
文章授权转载:gisoracle
- END -
李德仁院士:关于推进实景三维中国建设的若干思考
全球矢量任意下载!路网、建筑、水系...
自动化和半自动矢量化提取地物矢量轮廓
7.72GB ARCGIS ERDAS ENVI干货教程网盘下载




