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