大数跨境
0
0

ArcGIS Python ​矢量数据批量合库

ArcGIS Python ​矢量数据批量合库 GIS前沿
2022-11-22
2

矢量数据批量合库



从模板工作空间,获得要素名或表,根据要素名把数据所在目录含子目录下所有的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 -


ArcGIS Python 矢量数据批量裁剪
李德仁院士:关于推进实景三维中国建设的若干思考
全球矢量任意下载!路网、建筑、水系...
自动化和半自动矢量化提取地物矢量轮廓
7.72GB ARCGIS  ERDAS  ENVI干货教程网盘下载

【声明】内容源于网络
0
0
GIS前沿
分享测绘地信资讯,交流行业软件技巧。
内容 4923
粉丝 0
GIS前沿 分享测绘地信资讯,交流行业软件技巧。
总阅读1.4k
粉丝0
内容4.9k