在實際操作中,經常對數據庫文件進行合並、裁切等。如果遇到gdb比較多,要素層比較多,而且還存在數據集。雖然ArcGIS中的批量處理的功能,但填寫參數過程也比較麻煩,如果一次性處理過多,程序容易停止工作。
所以,選用Python來處理這樣的問題,優勢就非常明顯了。把路徑設置好,讀取數據庫及要素類,然后進行合並操作。下面是Python示例代碼:
# --------------------------------------------------------------------------- # Purpose : AppendGDB # Author :gisweis # Date :2015.2.4 # Version : ArcGIS 10.1 # Email :liweis2014@hotmail.com # Notes :Don't support dataset # --------------------------------------------------------------------------- import sys reload(sys) sys.setdefaultencoding( "utf-8" ) import arcpy import string try: workspace = arcpy.GetParameterAsText(0) #input workspace outdb = arcpy.GetParameterAsText(1) #out db #target fc,but don't support dataset arcpy.env.workspace=outdb fcs = arcpy.ListFeatureClasses() arcpy.env.workspace=workspace for File in arcpy.ListFiles("*.*db"): for fc in fcs: arcpy.Append_management(File+"\\"+fc, outdb+"\\"+fc) except arcpy.ExecuteError: print arcpy.GetMessages()
這里需要說明的是:
- 此代碼不支持包含數據集(dataset)的數據庫,如果存在這種情況,可根據實際情況來設置輸入和輸出的路徑。如arcpy.Append_management(File+"\\dlg\\"+fc, outdb+"\\ dlg \\" +fc),這里的dlg即為數據庫中的數據集,如果存在多個數據集,則需要讀取數據集,這樣的功能將在后續進行完善;
- 代碼中11、12行是重載編碼,但這樣的結果是print無輸出(環境:Win7 x64+Python2.7),這是因為忽略了UNICODE,把ASCII直接傳給UTF-8,顯示有問題是正常的。注釋即可。