最近做生態保護紅線評估調整工作,需要以市州為單位提交資料庫,省級又要以省為單位提交到國家,作業的時候是以縣為單位來做的。這中間就涉及到很多資料庫合併的事情了。本來是打算偷懶,用在網上找的乙個超級工具裡的合併資料庫工具來合,結果用不起,最終還是得靠自己,老老實實寫乙個吧,應該不難。
就像這樣,一堆資料庫,資料庫下資料集,資料集下有要素。這只是乙個州的。
之前已經用**建立了乙個模板資料庫了,這次開發就以模板資料庫為底,把地方資料庫裡的資料追加到我的模板庫里來。資料庫裡有資料集,資料集下面才是要素。對於沒有資料集只有要素的資料庫,還沒管它,下回更新。
設計思路就是選擇一堆我要合併的資料庫,找乙個模板庫,然後開始合併。
在做的過程中,發現乙個問題,有的電腦環境下,我輸入了一堆資料庫,輸入的值會有引號,在有的電腦下又不會,不知道是什麼導致的,暫時先認為它是arcgis在不同環境下結果不一樣吧。
話不多說,直接貼**:
###################
import arcpy
import os
import sys
reload
(sys)
sys.setdefaultencoding(
'utf8'
)inputgdb = arcpy.getparameterastext(0)
outputgdb = arcpy.getparameterastext(1)
schematype =
"no_test"
""subtype =
""flielist = inputgdb.split(
";")
fxsjlist =
''.join(inputgdb)
arcpy.addmessage(u"\n"
+ fxsjlist + u"\n"
)arcpy.env.workspace = outputgdb
dcs = arcpy.listdatasets(
)for file in flielist :
if"'"
==str
(file)[0
:1]:
filelj = file.split(
"'")[1
]else
: filelj = file
filename = os.path.basename(file)
arcpy.addmessage(u"\n 正在對 "
+ filename + u" 進行合併\n"
) datasets = arcpy.listdatasets(feature_type=
'feature'
) datasets =[''
]+ datasets if datasets is
notnone
else
for ds in datasets:
for fc in arcpy.listfeatureclasses(feature_dataset=ds)
: path = os.path.join(arcpy.env.workspace, ds, fc)
fcname = os.path.basename(fc)
.split(
".")[0
] arcpy.addmessage(u"\n "
+ fcname + u"\n"
) bdfclj = os.path.join(filelj, ds, fc)
arcpy.addmessage(bdfclj)
arcpy.addmessage(path)
if arcpy.exists(bdfclj)
: arcpy.addmessage(u" 追加 "
+ fcname + u" 圖層成功\n"
)else
: arcpy.addmessage(u" 資料庫內不存在 "
+ fcname + u" 圖層,跳過\n"
)
arcpy批量合併shp
import arcpy shuju r c users documents arcgis default.gdb arcpy.env.workspace shuju fcs arcpy.listfeatureclasses lspt for fc in fcs arcpy.merge manage...
資料庫合併
有時候遇到這樣乙個需求,想把資料庫a中a1表中的資料合併到資料庫b中b1表中,應該是個很常見又很合理的需求。我是這樣做的 1 開啟兩個資料庫 我使用的是視覺化軟體sqliteexpert 2 右鍵資料庫b,attach database,選擇資料庫a 3 寫sql語句,insert into b1 ...
批量建立資料庫
借助powershell,我們可以輕鬆地進行批量建立資料庫,下面將詳細介紹一下 接下來,我們可以使用如下的cmdlet來實現我們的目標 執行完之後,我們重新整理一下ssms的資料庫,3個資料庫均已建立ok 對於上面出現的提供程式上下文警告,我們可以使用 suppressprovidercontext...