精华内容
下载资源
问答
  • 本GP工具可以合并一个文件夹下多个GDB文件内的多个同名要素,并将其输出到指定的GDB内。
  • 接到朋友的小需求,文件夹下有多个GDB,各个GDB下又分别有各自的要素文件。 思路上的核心方法是 walk = arcpy.da.Walk(workspace, datatype="FeatureClass") arcpy.da.Walk函数可便利workspace下所有的文件...

    接到朋友的小需求,文件夹下有多个GDB,各个GDB下又分别有各自的要素文件。

    思路上的核心方法是

    walk = arcpy.da.Walk(workspace, datatype="FeatureClass")

    arcpy.da.Walk函数可便利workspace下所有的文件路径、文件名、文件夹。

    相比os模块的walk函数不支持读取GDB,arcpy的Walk支持GDB下的要素类读取。

     

    1. 用walk读取所有要素类后,将所有要素类名添加到一个LIST里,将所有要素类路径+文件名添加到另一个LIST里。

    2. 在文件名的for循环下将所有同名要素类添加到一个LIST里。

    3. 使用 arcpy.Merge_management合并LIST并输出。

    4. 包装成GP工具。

     1 import arcpy
     2 import xlrd
     3 import xlwt
     4 import os
     5 
     6 
     7 workspace = arcpy.GetParameterAsText(0)
     8 out = arcpy.GetParameterAsText(1)
     9 
    10 
    11 evefeature = []    #存储所有要素要素路径+要素名
    12 feature_classes = [] #存储所有要素名
    13 walk = arcpy.da.Walk(workspace, datatype="FeatureClass")
    14 for dirpath, dirnames, filenames in walk:
    15     for filename in filenames:
    16         evefeature.append(os.path.join(dirpath, filename))
    17         if filename not in feature_classes:
    18             feature_classes.append(filename)
    19             print filename
    20 
    21 for featurename in feature_classes: 
    22     ls1 = [] #存储同名要素路径+要素名
    23     for evefeatures in evefeature:
    24         int1 = len(featurename)
    25         int1 = int1 - int1 - int1
    26         if evefeatures[int1:] == featurename:
    27             ls1.append(evefeatures)
    28     arcpy.Merge_management(ls1,out+ "/%s"%featurename)
    29     get = featurename + "get"
    30     arcpy.AddMessage(get)

     

     

    GP工具参数

     

     GP工具界面

     

    GP工具下载(ARCGIS版本为10.4):

    https://download.csdn.net/download/qq_39755485/10499571

     

    转载于:https://www.cnblogs.com/EVELE/p/9227871.html

    展开全文
  • 在ArcGIS中使用ArcPython批量合并多个文件型地理数据库(*.gdb)或个人地理数据库(*.mdb) 最近在做农村地籍建库和汇交工作,其中需要把某个县市100多个村子的农村地籍数据库合并在一起,最终作为这个县市的...

    在ArcGIS中使用ArcPython批量合并多个文件型地理数据库(*.gdb)或个人地理数据库(*.mdb)

            

             最近在做农村地籍建库和汇交工作,其中需要把某个县市100多个村子的农村地籍数据库合并在一起,最终作为这个县市的最终数据整理汇交,代码如下:

    import sys    
    import arcpy  
    import string  
        
    try:  
        workspace = 'C:\Users\Administrator\Desktop\春化'  
        outdb = 'C:\Users\Administrator\Desktop\\县级数据库.mdb'  
         
        arcpy.env.workspace=outdb  
        fs = arcpy.ListFeatureClasses()  
        
        arcpy.env.workspace=workspace  
        for File in arcpy.ListFiles("*.*db"):  
            for f in fs:  
                arcpy.Append_management(File+"\\"+f, outdb+"\\"+f)  
    except arcpy.ExecuteError:  

        print arcpy.GetMessages()  

    实际动手操作如下:

    1.准备数据

    注意:outdb也就是目标数据库不要放到要被批量合并的数据库的文件夹下

    2.打开ArcGIS的Python窗口,复制上述代码(注意要把路径改成你自己的),回车开始执行。

     

     

    已经测试过有效,ArcGIS10.2及以上版本更稳定。

    2018-6-27更新:增加了新功能,可以合并数据集(DataSet)中的数据,也就是说,在数据库格式一致的情况下,可以合并点、线、面、注记、属性表以及数据集中的点、线、面、注记、属性表,脚本如下:

     

    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
    import arcpy
    import string
    
    try:
        workspace = 'C:\Users\Administrator\Desktop\\cc'
        outdb = 'C:\Users\Administrator\Desktop\\lutian.mdb'
        arcpy.env.workspace = workspace
        files = arcpy.ListFiles("*.*db")
        arcpy.env.workspace = outdb
        fcs = arcpy.ListFeatureClasses()
        fcs = fcs + arcpy.ListTables()
        dss = arcpy.ListDatasets()
        for File in files:
            for fc in fcs:
                arcpy.Append_management(workspace + "\\" + File + "\\" + fc, outdb + "\\" + fc)
            for ds in dss:
                fcs1 = arcpy.ListFeatureClasses(feature_dataset = ds)
                for fc1 in fcs1:
                    arcpy.Append_management(workspace + "\\" + File + "\\" + ds + "\\" + fc1, outdb + "\\" + ds + "\\" + fc1)
    
    
    except arcpy.ExecuteError:
        print arcpy.GetMessages()

    总结:有很多人留言遇到各种问题,看不见你们的数据,看不到你们改后的代码,没有经过调试,判断不出是什么问题。我相信大部分人还是成功的,至少我每次都是成功的,我上文中提到数据库格式一致的情况下是肯定没有问题的。我估计出现问题的有以下原因:数据的问题,字段名相同,但字段类型不同导致字段类型强制转换出错;数据库格式都完全一致,但某个字段设置为不允许为空,当出现空值是出错。 解决办法我想是:首先看看自己的数据是否有以上情况,可以如下加几个参数(加粗字)arcpy.Append_management(workspace + "\\" + File + "\\" + fc, outdb + "\\" + fc ,"NO_TEST" , "" ,"") ,至于原因可以研究一下帮助文档,学习ArcGIS帮助文档是最好的老师。最后祝所有人顺利!

    PS:根据以上代码,制作了python脚本工具,详细请看我另一篇文章。https://blog.csdn.net/Putin_leon/article/details/105514517

     

     

    展开全文
  • ArcGIS之多个GDB批量导出shp至特定文件夹20201228 我们对GDB(文件地理数据库)的批量处理已经做了好几期的技术分享了。如下: FME批量合并GDB地理数据库(20200908) ArcGIS中的GDB批量裁剪升级与发布地理处理...

    ArcGIS之多个GDB批量导出shp至特定文件夹20201228

     

    我们对GDB(文件地理数据库)的批量处理已经做了好几期的技术分享了。如下:

    FME批量合并GDB地理数据库(20200908)

    ArcGIS中的GDB批量裁剪升级与发布地理处理包( 20200511

    ArcGIS之GDB(文件地理数据框)批量处理(20190115) 

    一、背景

    这次我们主要来介绍的是多个GDB怎么批量导出shp至特定的文件夹,这个有些项目是有如此需求。比如如下的数据,有多个GDB(GDB中也包含多个数据集以及要素类)。

    目的是要将数据批量导出到特定的文件夹中,比如将福清市.gdb的数据导出shp到福清市文件夹下,其他市一样操作。

    二、技术思路

    那参考我们的模型构建器的教程教学,整个思路应该是比较简单的。我们把问题通过两个模型来解决。

    1、首先根据迭代工作空间迭代器一次去迭代多个GDB,获取名称配合创建文件夹工具,创建对应gdb的多个文件夹。

    2、第二步就是根据迭代要素类工具将多个gdb中的要素复制到特定的文件夹中。这其实思路是很清楚的,主要是要怎么将特定的GDB数据。

    这里我用了一个解析路径读取每个要素类的路径,路径读取出来后我用计算值去获取这个要素类所在gdb的名称。计算值的语句其实是比较简单的:("%值%".split(".gdb")[0]).split("\\")[-1],获取值后我就可以把这个参数传给复制要素的输出了:%A20201224%\%output_value%\%output_value%_%名称%.shp

    看不懂的没关系哦,我们配套了详细的视频介绍哦!

    三、模型优化

    上面的解决办法我们是通过两个模型来解决,先运行批量创建文件夹工具,再运行批量迭代GDB导出shp模型来处理。接下来我们把模型优化下,把模型优化下,把其他作为子模型,最后只要运行一个模型就出成果的,那这里有两种的方法。

    1、最简单的就是我们的创建第3个模型,把上面的两个模型连接在一起就解决问题了。

    2、那如果我们不想增加一个模型工具,直接可以把批量创建文件夹的的模型作为子模型嵌套到批量迭代GDB输出shp。

    那这里就有个问题要考虑,因为在模型中迭代器每运行一次,所有工具都要运行一次,但是我们的“批量创建文件夹”模型只能让他运行一次,这时候我就通过计算值来生成一个布尔值来空值他的运行,只让它运行一次。

    3、要设置成交互界面工具,你可以根据模型构建器教程教学设置参数就好。

    四、视频讲解

    GIS思维:ArcGIS批量GDB导出shp上篇(批量创建文件夹)20201228

    GIS思维:ArcGIS批量GDB导出shp下篇(批量导出shp)20201228

    五、推荐学习

    ArcGIS之模型构建器(ModelBuilder)视频教程

    ArcGIS10.X入门实战视频教程(GIS思维)

    ArcGIS之遥感影像分类及成果应用视频课程

    GIS思维GIS系列技术课程

    展开全文
  • 在ArcGIS中使用ArcPython批量合并多个文件型地理数据库(*.gdb)或个人地理数据库(*.mdb) 使用场景:其中需要把某个县市100多个地籍数据库合并在一起,最终作为最终数据整理汇交, 打开ArcMap的Python窗口,...

    在ArcGIS中使用ArcPython批量合并多个文件型地理数据库(*.gdb)或个人地理数据库(*.mdb)

            

    使用场景:其中需要把某个县市100多个地籍数据库合并在一起,最终作为最终数据整理汇交,

    打开ArcMap的Python窗口,复制上述代码(注意要把路径改成你自己的),回车开始执行

    代码如下:

    import sys    
    import arcpy  
    import string  
        
    try:  
        workspace = '100多个MDB存放的路径'  
        outdb = 'C:\Users\Administrator\Desktop\\输出总的数据库.mdb'  
         
        arcpy.env.workspace=outdb  
        fs = arcpy.ListFeatureClasses()  
        
        arcpy.env.workspace=workspace  
        for File in arcpy.ListFiles("*.*db"):  
            for f in fs:  
                arcpy.Append_management(File+"\\"+f, outdb+"\\"+f)  
    except arcpy.ExecuteError:  

        print arcpy.GetMessages()  

    展开全文
  • 本文的目标是,基于ArcMap提供的Python包arcpy,将CSV文件中多个WKT字符串(几何地理空间对象数据),导出并合并为一个gdb文件,从而再进一步导出为shp文件。 本文目录及文章结构如下**1.WKT是什么****2.WKT转gdb...
  • 将文件夹多个gdb下的要素类featureClass,FeatureClassToShapefile_conversion转换成shapefile文件。 coding = 'utf-8' import os import arcpy # Author By AHCH_yangdebin gdblist=[] #新建空白列表 file_dir=r...
  • FME批量合并GDB地理数据库(20200908)

    千次阅读 2020-09-09 11:32:46
    之前,我们就做了两技术分享介绍了ArcGIS怎么批量合并与分割GDB,利用的是ArcGIS的模型构建器。 ArcGIS中的GDB批量裁剪升级与发布地理处理包( 20200511 ArcGIS之GDB文件地理数据框)批量处理(20190115) ...
  • 将文件夹多个gdb的要素数据集Dataset下的要素类featureClass,FeatureClassToShapefile_conversion转换成shapefile文件。 coding = 'utf-8' import os import arcpy #Author By AHCH_yangdebin gdblist=[] #新建...
  • 合并GDB或MDB的场景:有些分幅的数据需要合并,然后有些要素内容为空会被删除,导致多个gdb内的要素不一定一致 输入数据为一个文件夹,文件夹下面只能有被合并的GDB 输出数据为一个新建的mdb\gdb\文件夹(如果...
  • 矢量数据库合并工具

    2018-04-07 21:01:00
    ArcGIS不支持批量操作数据库,但实际生产过程中,经常会遇到批量合并数据,即将多个mdb、gdb、shp等合并成一个文件。 我写了一个工具,操作比较简单,只要选择即可:支持ArcGIS10.0-10.6环境;支持gdb,mdb和shp;...
  • 目的:实现批量数据格式转换,并将多个数据进行合并。 思路:创建GDB——>使用ListFeatureClass遍历文件夹——>使用FeatureClassToFeature工具将数据统一转换到Geodatabase中。 一、回顾 主要对List函数的回顾...
  • Ubuntu下UnixC第四天

    2019-01-15 18:18:19
    回顾课程内容  一、gdb调试器的使用  一定要加调试信息 gcc xxx.c -g  l b r n s p c q  二、内存管理  虚拟地址 <-操作系统 -&... 多个目标文件合并成一个可执行文件 相应的sec...
  • 在Linux下实现了一个归并排序的算法,分成多个文件,这里记录三点:归并排序的算法、makefile的使用、gdb调试心得 一、归并排序算法  算法的递推关系:一个大的数列需要排序,把它从中间分成两部分,每一部分...
  • C语言实现的归并排序

    千次阅读 2011-05-09 20:19:00
    分成多个文件,这里记录三点:归并排序的算法、makefile的使用、gdb调试心得 一、归并排序算法 算法的递推关系:一个大的数列需要排序,把它从中间分成两部分,每一部分归并排序,然后把排好序的这两个...
  • cmake教程参考什么是cmakecmake 常见语法整理入门案例单个源文件多个源文件同一目录,多个源文件多个目录,多个源文件进阶案例自定义编译选项指定安装和测试定制安装规则为工程添加测试支持gdb添加环境检查添加版本...
  • ETGeoWizards124.zip

    2021-04-08 17:51:26
    删除多个字段 转换功能 多边形到折线 多边形到点 折线到点 折线到多边形 折线到多点 点到折线 点到多边形 点对多点 点对点Z(M) 多点对点 多点到折线 形状Z(M)到形状 形状到形状Z 叠加功能 剪辑层 擦除层 合并...
  • 删除多个字段 转换功能 多边形到折线 多边形到点 折线到点 折线到多边形 折线到多点 点到折线 点到多边形 点对多点 点对点Z(M) 多点对点 多点到折线 形状Z(M)到形状 形状到形状Z 叠加功能 剪辑层 擦除层 合并...
  • Python Cookbook

    2013-07-31 22:33:26
    1.18 一次完成多个替换 36 1.19 检查字符串中的结束标记 39 1.20 使用Unicode来处理国际化文本 40 1.21 在Unicode和普通字符串之间转换 43 1.22 在标准输出中打印Unicode字符 45 1.23 对Unicode数据编码并用于...
  • 2.1.4 文件比较合并相关命令 2.1.5 网络相关命令 2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关...
  • 2.1.4 文件比较合并相关命令 2.1.5 网络相关命令 2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关...
  • 2.1.4 文件比较合并相关命令 2.1.5 网络相关命令 2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关...
  • 6.14 eval指令:执行多个指令 6.15 export指令:设置或显示环境变量 6.16 fbset指令:设置帧缓冲区 6.17 grpconv指令:开启群组的投影密码 6.18 grpunconv 指令:关闭群组的投影密码 6.19 hwclock指令:显示与设定...
  • 12.3.1 通过合并来感染文件 220 12.3.2 通过扩展文件的最后分区来感染文件 222 12.3.3 通过压缩部分原始文件 12.3.3 而感染文件 224 12.3.4 通过扩展文件的代码分区而感染文件 228 12.3.5 通过下移代码分区而...
  • 12.3.1 通过合并来感染文件 220 12.3.2 通过扩展文件的最后分区来感染文件 222 12.3.3 通过压缩部分原始文件 12.3.3 而感染文件 224 12.3.4 通过扩展文件的代码分区而感染文件 228 12.3.5 通过下移代码分区而...
  • arcgis工具

    2012-10-22 22:37:31
    Merge,把多个图斑合并到其中一个图斑上并继承它的属性,原图斑变化;Split用于间断线段,但得知道具体的长度,如果不知道那么长度或者没必要那么精确就直接用Eeitor工具栏的Split tool工具 ) 11. 连接外界属性...
  • 在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如,Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

多个gdb文件合并