在實際操作中,經常對數據庫文件進行合並、裁切等。如果遇到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,顯示有問題是正常的。注釋即可。
