劉桂英


摘 要:在基于ARCGIS的地理信息系統的開發中,有時需要把MDB空間數據庫文件轉換為shp格式文件,傳統調用工具箱進行轉換的方法在轉換量較多的時候顯得十分麻煩。該文設計了一種使用Python腳本和arcpy庫,實現對MDB空間數據庫文件的批量轉換方法,有效減輕人工轉換的工作量,又省去學習AO接口的麻煩。
關鍵詞:arcpy Python 批量轉換
中圖分類號:TP3 文獻標識碼:A 文章編號:1672-3791(2015)11(a)-0001-02
在基于ARCGIS的地理信息系統的開發中,人們在很多地方下載或是地圖數據交換的時候,通常是以單一文件MDB的格式操作,因為單一文件確實更方便發布和傳播,但是在基于ArcGIS的GIS系統開發中,往往喜歡使用矢量地圖文件shp格式,這樣方便在系統中查找和修改相應的圖層。這種情況下,大家就需要把單一的MDB地圖數據轉化為shp格式的矢量地圖數據。雖然ArcGIS提供很方便的轉換方法,但是如果量大的情況下,人工轉換會變得好麻煩。
為了解決上述問題,很多人可能會選擇運用AO接口,編寫一個工具實現批量轉換。雖然這不失為一個好方法,但是需要對龐大的AO接口非常熟悉的工程師才能以較快時間的開發出來,對于一般人來說,學習AO接口的成本實在太高了。該文介紹了一種非常簡單高效的解決方法。
1 環境介紹
Python 是一種面向對象的跨平臺的解析性的腳本語言。Python具有腳本語言中最豐富和最強大的類庫,而且能把其他語言制作的各種模塊輕松地聯結在一起。Python非常簡單易學,開發效率極高。
arcpy是ArcGIS的一個Python包,包含對地圖操作和地圖代數的支持,支持編輯處理和幾何操作。Python已經與ArcGIS高度集成,方便實現GIS的各種處理流程。
2 實現方法
使用Python與arcpy庫可以方便地實現圖形文件的批量轉換。如圖1所示,實現步驟大概可以分為5步,首先收集整理MDB,然后判斷是否全部已經轉換完畢,如果沒轉換完畢,則逐個調用自定義函數MDB2SHP進行轉換,最后將轉換結果放到一個輸出目錄里。
2.1 收集整理MDB數據
將所有需要轉換的MDB文件都放進一個文件夾里,作為轉換前準備。
2.2 導入arcpy庫
在Python中操作使用ArcGIS的功能,必須先導入ArcGIS提供的Python類庫arcpy。arcpy庫是ArcGIS產品自帶的,不需要額外安裝。導入方法是:
import arcpy
2.3 文件轉換
文件轉換實現自定義了一個轉換函數MDB2SHP,從MDB文件轉換到矢量文件shp,需要使用arcpy庫提供的FeatureClassToShapefile_conversion方法。該自定義函數的具體實現如下:
import arcpy
def MDB2SHP(MdbFile, dct):
arcpy.env.workspace = MdbFile
outDir = dct
fcs = arcpy.ListFeatureClasses()
fcCount = len(fcs)
for fc in fcs:
arcpy.FeatureClassToShapefile_conversion(fc, outLocation)
2.4 批量執行
批量執行就是運用目錄遍歷的方法,逐個執行。在Python中,內置了一個非常簡單目錄遍歷方法os.walk()。該函數會返回一個三元tupple(dirpath, dirnames, filenames) ,其中第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。然后利用for循環進行遍歷。
3 測試與驗證
該次測試在ArcGIS10.2.2環境下進行的。以湛江市地圖為例,
有4個mdb文件,分別為市鎮鄉線界.MDB,地理環境.MDB,地標.MDB, 漁業.MDB
運行腳本后,得到很多shape文件,加載這些shape文件后,得到一個綜合多種信息的地圖,如圖2所示。
4 結語
該文介紹了一種利用Python和arcpy庫快速開發批量圖形文件轉換的方法,通過這個方法可以了解到Python的強大和靈活易用,結合arcpy可以實現很多ArcGIS的功能和特性,合理利用會對GIS開發效率提高極大的幫助。
參考文獻
[1] 吳戰克.基于ArcGIS10_1的區圖層批處理合并[J].地理信息空間,2015,13(4):93-94.
[2] 秦思嫻.基于Python實現地理國情房屋建筑專題信息提取 [J].測繪與空間地理信息,2015,38(8):1-3.
[3] 朱道強,關海濤. Python在ArcGIS中的應用[J].測繪與空間地理信息,2013,36(7):152-154.
[4] 田學志.基于Python的Arcgis地理處理應用研究[J].計算機光盤軟件與應用,2013(7):46,50.