arcpy批量合并数据库

合并数据库

最近做生态保护红线评估调整工作,需要以市州为单位提交数据库,省级又要以省为单位提交到国家,作业的时候是以县为单位来做的。这中间就涉及到很多数据库合并的事情了。本来是打算偷懒,用在网上找的一个超级工具里的合并数据库工具来合,结果用不起,最终还是得靠自己,老老实实写一个吧,应该不难。
就像这样,一堆数据库,数据库下数据集,数据集下有要素。这只是一个州的。
在这里插入图片描述
之前已经用代码创建了一个模板数据库了,这次开发就以模板数据库为底,把地方数据库里的数据追加到我的模板库里来。数据库里有数据集,数据集下面才是要素。对于没有数据集只有要素的数据库,还没管它,下回更新。
在这里插入图片描述
设计思路就是选择一堆我要合并的数据库,找一个模板库,然后开始合并。
在做的过程中,发现一个问题,有的电脑环境下,我输入了一堆数据库,输入的值会有引号,在有的电脑下又不会,不知道是什么导致的,暂时先认为它是arcgis在不同环境下结果不一样吧。
话不多说,直接贴代码:

###################
import arcpy
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')

Inputgdb = arcpy.GetParameterAsText(0)
outputgdb = arcpy.GetParameterAsText(1)

schemaType = "NO_TEST"
fieldMappings = ""
subtype = ""

flielist = Inputgdb.split(";")
fxsjlist = ''.join(Inputgdb)
arcpy.AddMessage(u"\n" + fxsjlist + u"\n")

arcpy.env.workspace = outputgdb


dcs = arcpy.ListDatasets()

for File in flielist :
    if "'"  == str(File)[0:1]:
        Filelj = File.split("'")[1]
    else:
        Filelj = File
    Filename = os.path.basename(File)
    arcpy.AddMessage(u"\n   正在对 " + Filename + u" 进行合并\n" )

    datasets = arcpy.ListDatasets(feature_type='feature')
    datasets = [''] + datasets if datasets is not None else []
    for ds in datasets:
        for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
            path = os.path.join(arcpy.env.workspace, ds, fc)

            fcname = os.path.basename(fc).split(".")[0]
            arcpy.AddMessage(u"\n        " + fcname + u"\n")

            bdfclj = os.path.join(Filelj, ds, fc)
            arcpy.AddMessage(bdfclj)
            arcpy.AddMessage(path)
            
            if arcpy.Exists(bdfclj):
                arcpy.Append_management(bdfclj, path, schemaType, fieldMappings, subtype)
                arcpy.AddMessage(u"     追加 "+ fcname + u" 图层成功\n")
            else:
                arcpy.AddMessage(u"     数据库内不存在 " + fcname + u" 图层,跳过\n")
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值