劉桂英
【摘要】在ArcGIS地理信息系統開發過程中,經常需要將地圖按照一定的屬性和比例要求導出為相應圖片。一般情況下我們會選擇直接使用ArcGIS工具箱直接導出圖片,但當我們需要導出多張圖片時,就顯得非常麻煩,本文介紹了一種解決反復勞動的簡單方法,使用Python制作批量地圖輸出小工具。
【關鍵詞】Python;arcgis;arcpy;地圖輸出
引言
在基于ArcGIS的地理信息系統的開發中,經常需要將地圖按照一定的屬性和比例要求導出為相應圖片。一般情況下我們會選擇直接使用ArcGIS工具箱直接導出圖片,但當我們需要導出多張圖片時,就顯得非常麻煩。然而ArcGIS提供了多種編程接口和類庫,可以讓我們方便地自己定制各種2次開發地理信息系統和工具。ArcGIS有提供C#,JAVA等傳統語言的AO接口,還有提供VB和Python這類解析性語言的接口。AO接口過于復雜,適用于用來二次開發GIS系統,而用來制作小型輔助工具有點大材小用;VB將近淘汰邊緣,而且新版本ArcGIS默認不支持,需要安裝;所以我們選擇了Python作為小工具制作的輔助語言。
Python是一種不受局限的、跨平臺的開源編程,屬于解析性腳本語言。Python具有腳本語言中最豐富和最強大的類庫,而且能把其他語言制作的各種模塊輕松地聯結在一起。Python非常簡單易學,開發效率極高。
1.arcpy簡介
arcpy是ArcGIS的一個Python包,包含對地圖操作和地圖代數的支持,支持編輯處理和幾何操作。Python已經與ArcGIS高度集成,方便實現GIS的各種處理流程。
2.實現方法
實現將mxd文件批量地圖輸出需要做兩次遍歷才能把所有地圖輸出。如圖1所示,首先遍歷mxd文件目錄中的mxd文件,然后將每個文件中所包含的圖層遍歷出來。獲取每個圖層后,需要先將圖層開啟顯示,然后調用arcpy庫的方法將圖層輸出成JPG文件,完成后關閉該圖層,最后遍歷完畢地圖也輸出完畢。
2.1導入arcpy庫
在Python中操作使用ArcGIS的功能,必須先導入ArcGIS提供的Python類庫arcpy。arcpy庫是ArcGIS產品自帶的,不需要額外安裝。導入方法是:
import arcpy
2.2遍歷子目錄
在Python中,內置了一個非常簡單目錄遍歷方法os.walk()。該函數會返回一個三元tupple(dirpath, dirnames, filenames) ,其中第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。然后利用for循環進行遍歷。
2.3圖層遍歷
在地圖文檔(.mxd)中一般包含很多圖層,我們需要將每個圖層都輸出成JPG圖片,這樣就需要對圖層的遍歷。arcpy庫提供了一套完整的制圖模塊庫arcpy.mapping,該模塊庫主要是用于操作現有地圖文檔(.mxd)和圖層文件(.lyr)的內容。遍歷圖層需要用到arcpy提供的一個方法arcpy.mapping.ListLayers(arcpy.mapping),該方法返回一個包含所有圖層對象的Python list,然后我們就可以用Python遍歷list的方法遍歷圖層。
2.4輸出JPG格式的地圖
arcpy庫還提供自動執行導出和打印的函數。這里就是使用了一個導出JPG格式的函數ExportToJPEG。
3.結束語
本文介紹了一種利用Python對ArcGIS批量地圖輸出的方法,通過程序可以看到Python程序非常整合和簡潔,合理利用Python和arcpy庫會對GIS開發效率提高極大的幫助。
參考文獻
[1]ArcGIS10.1 help.
[2]朱道強,關海濤.Python在ArcGIS中的應用 [J]. 測繪與空間地理信息, 2013, 36(7): 152-154.
[3]邵保華,田學志.基于Python的Arcgis地理處理應用研究 [J]. 林業勘查設計, 2012, (2).
基金項目
湛江市科技攻關計劃項目
基金編號:2013B01145