批量合并GDB

    在实际操作中,经常对数据库文件进行合并、裁切等。如果遇到gdb比较多,要素层比较多,而且还存在数据集。虽然ArcGIS中的批量处理的功能,但填写参数过程也比较麻烦,如果一次性处理过多,程序容易停止工作。

    所以,选用Python来处理这样的问题,优势就非常明显了。把路径设置好,读取数据库及要素类,然后进行合并操作。下面是Python示例代码:

  1. # ---------------------------------------------------------------------------
  2. # Purpose : AppendGDB
  3. # Author :gisweis
  4. # Date :2015.2.4
  5. # Version : ArcGIS 10.1
  6. # Notes :Don't support dataset
  7. # ---------------------------------------------------------------------------
  8.  
  9. import sys
  10. reload(sys)
  11. sys.setdefaultencoding( "utf-8" )
  12. import arcpy
  13. import string
  14.  
  15. try:
  16.     workspace = arcpy.GetParameterAsText(0) #input workspace
  17.     outdb = arcpy.GetParameterAsText(1) #out db
  18.  
  19.     #target fc,but don't support dataset
  20.     arcpy.env.workspace=outdb
  21.     fcs = arcpy.ListFeatureClasses()
  22.  
  23.     arcpy.env.workspace=workspace
  24.     for File in arcpy.ListFiles("*.*db"):
  25.         for fc in fcs:
  26.             arcpy.Append_management(File+"\\"+fc, outdb+"\\"+fc)
  27. except arcpy.ExecuteError:
  28.     print arcpy.GetMessages()

    这里需要说明的是:

  1. 此代码不支持包含数据集(dataset)的数据库,如果存在这种情况,可根据实际情况来设置输入和输出的路径。如arcpy.Append_management(File+"\\dlg\\"+fc, outdb+"\\ dlg \\" +fc),这里的dlg即为数据库中的数据集,如果存在多个数据集,则需要读取数据集,这样的功能将在后续进行完善;
  2. 代码中11、12行是重载编码,但这样的结果是print无输出(环境:Win7 x64+Python2.7),这是因为忽略了UNICODE,把ASCII直接传给UTF-8,显示有问题是正常的。注释即可。

你可能感兴趣的:(gdb)