基于ArcGIS的Python——要素类至地理数据库

需求

(1)将目录下中的多个(甚至多达1000个)gdb中的要素类合并到同一个gdb中

(2)目录结构如下图所示:

思路

利用da.walk()来输出目录中gdb数据库里要素类的实际名称;walk函数式arcpy.da的一部分,通过自上而下或自下而上的方式遍历目录树,生产目录树中的文件名;每个目录或工作空间生产一个包含目录路径、目录名称和文件名的元组。

这个函数类似Python的os.walk(),但是da.walk()具有识别地理数据库结构的优点。具体实现代码如下:

... import arcpy.da as da
... import os 
... 
... rootdir="F:\\panzhao" 
... print("arcpy da walk")
... 
... for dirpath, dirnames, filenames in da.Walk(rootdir,datatype="FeatureClass"):
...     for filename in filenames:
...         print(os.path.join(dirpath, filename))
...         arcpy.FeatureClassToGeodatabase_conversion(os.path.join(dirpath, filename),'F:/output1.gdb')

 代码中将目录路径传递给变量rootdir;da.walk()函数有两个参数,要进行检索的顶层工作空间(当前工作空间)和用于筛选返回列表的数据类型,本例检索了要素类的相关文件。walk()函数返回一个包含目录路径、目录名称和文件名的元组。

其中函数FeatureClassToGeodatabase_conversion (Input_Features, Output_Geodatabase),如果名称在输出地理数据库中已存在,系统会在要素类名称的结尾追加一个数字以确保其唯一性(例如b11_1)。见参考资料中官网介绍。

参考资料

http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/conversion-toolbox/feature-class-to-geodatabase.htm

转载自:https://blog.csdn.net/gislaozhang/article/details/81415585

You may also like...