任俊儒
(華北地質(zhì)勘查局五一四地質(zhì)大隊,河北 承德 067000)
隨著市場環(huán)境的進一步完善,經(jīng)濟的高速發(fā)展,地質(zhì)勘查工作也變得豐富起來,從礦藏、石油到地?zé)?、礦泉水,地質(zhì)勘查項目涉及的內(nèi)容越來越廣泛。近年來提出了“城市地質(zhì)調(diào)查”的概念,將傳統(tǒng)的地質(zhì)勘查與城市的可持續(xù)發(fā)展相結(jié)合,進行基礎(chǔ)性、綜合性、前瞻性的地質(zhì)勘查工作,對城市的環(huán)境承載力、資源保障力進行評價、同時也為城市規(guī)劃、建設(shè)以及管理決策提供基礎(chǔ)數(shù)據(jù)支持。正是由于地質(zhì)勘查類項目的多樣化、細致化,內(nèi)容進一步豐富詳盡,致使各類的地質(zhì)勘查專題地圖的編輯、修飾、輸出等工作量顯著增加。
傳統(tǒng)的制圖方式,是以單幅圖紙為作業(yè)單位,逐個進行處理,需要較大的人力與物力來保障工作的順利開展。地質(zhì)勘查專題地圖的制作主要分為要素編輯、整飾、輸出、打印等步驟。本文結(jié)合實際工作項目,對各步驟進行分析,針對制圖的輸出方式進行探索,并結(jié)合Arcpy等相關(guān)功能,實現(xiàn)了專題圖的批量生成。本文將相關(guān)的技術(shù)方法進行總結(jié)、整理,為減少人工處理、提高制圖效率、實現(xiàn)專題圖批量生成等方面提供參考經(jīng)驗。
(1)數(shù)據(jù)準(zhǔn)備。專題地圖編制的數(shù)據(jù)準(zhǔn)備主要包括柵格數(shù)據(jù)和矢量數(shù)據(jù)的準(zhǔn)備。柵格數(shù)據(jù)一般為遙感影像,作為底圖使用;矢量數(shù)據(jù)包括基本地形、地物、專題要素等。首先將需要的各類數(shù)據(jù)進行收集,并且注明各類數(shù)據(jù)的基本情況,例如影像分辨率、坐標(biāo)系、數(shù)據(jù)生產(chǎn)時間等,以備后續(xù)的處理和編輯工作有所依據(jù)。
(2)數(shù)據(jù)編輯。數(shù)據(jù)的編輯分為多個步驟,首先是數(shù)據(jù)格式的轉(zhuǎn)換,在收集的數(shù)據(jù)中可能存在DWG、SHP、WP、WL、WT、HDF等不同格式的數(shù)據(jù),為了制圖統(tǒng)一化,需要將格式進行統(tǒng)一。其次是進行坐標(biāo)轉(zhuǎn)換,在工作當(dāng)中會遇到北京54、西安80、CGCS2000等不同的坐標(biāo)系,一方面為了制圖的統(tǒng)一,另一方面遵循測繪地理信息行業(yè)的要求,需將數(shù)據(jù)統(tǒng)一轉(zhuǎn)為CGCS2000坐標(biāo)系。再次是數(shù)據(jù)的符號化,按照規(guī)范要求添加行政界線、道路網(wǎng)、居民點、水系、等高線、高程點等,另外是專題要素的符號化,例如地質(zhì)類型、水源地、鉆孔、礦山采區(qū)分布等。第四是地圖注記,主要是對各類數(shù)據(jù)符號化的補充說明,例如村莊、道路、水系的名稱,高程值注記、專題內(nèi)容的注記等。
(3)圖框編輯。圖框的編輯,主要包括圖紙的大小、內(nèi)外圖框、比例尺、指北針、圖名、格網(wǎng)點坐標(biāo)、坐標(biāo)系、作業(yè)單位信息等。一般采用50cm×50cm的圖紙,按照分幅要求對制圖區(qū)域進行分割。在制圖過程中圖框的要求是統(tǒng)一的,主要的問題是處于接邊處的符號、注記等內(nèi)容可能會丟失,不能在每幅圖紙上正確顯示,所以要進行檢查、修改。
(4)地圖輸出。地圖的輸出是指地理文檔在完成數(shù)據(jù)編輯、圖框編輯之后輸出為圖紙的過程。地圖的輸出之前都是紙質(zhì)的,但隨著技術(shù)的發(fā)展,紙質(zhì)圖紙的利用率降低,現(xiàn)在的地圖輸出一般指電子圖紙,例如矢量圖、柵格圖片等。如果需要紙質(zhì)圖紙可以直接利用打印設(shè)備或者繪圖儀將電子地圖紙質(zhì)化,重要的一點是確保電子地圖能夠達到柵格采樣分辨率要求[1]。
地質(zhì)勘查專題圖的制作一般都是采用CAD單幅圖紙編輯,在圖形繪制過程中比較方便,但是在數(shù)據(jù)處理、注記添加、圖框編輯等方面都比較繁瑣,逐個進行編輯使工作量增大,工作內(nèi)容重復(fù),錯誤率提升。在地圖編輯過程中我們采用了ArcGIS軟件,提高數(shù)據(jù)處理以及圖框編輯的工作效率。
除圖紙編輯之外最為耗時耗工的是圖紙的輸出工作,結(jié)合現(xiàn)階段項目的具體要求,以提供柵格電子地圖為主,例如JPG格式的電子地圖或者地圖冊。利用CAD進行電子地圖輸出,工作效率較低,而且是反復(fù)的機械操作,為了能夠快速、便捷、批量地完成專題圖的輸出工作,借助ArcGIS的腳本語言Python,對批量制圖技術(shù)中各工序編寫批處理腳本來實現(xiàn)[2]。
Arcpy是Python語言的站點包,其在ArcGIS for Desktop環(huán)境下,通過編寫腳本的方式高效完成地理數(shù)據(jù)分析、轉(zhuǎn)換、管理以及地圖自動化等功能。
Python是一種跨平臺的最初設(shè)計為編寫自動化腳本的計算機程序語言,其結(jié)合了解釋性、互動性、編譯性和面向?qū)ο蟮忍攸c。該語言定位是“優(yōu)雅”、“明確”、“簡單”,簡單來講Python語言是通過調(diào)用不同的站點包來實現(xiàn)功能的,因此Python語言又稱為膠水語言。
基于Python語言的特點,ArcGIS選擇其為腳本語言,自9.0版本開始就集成了python語言包。Arcpy主要包含數(shù)據(jù)訪問、地理分析、自動化制圖等模塊,數(shù)據(jù)訪問模塊主要是實現(xiàn)各版本數(shù)據(jù)編輯的調(diào)用,包括矢量以及屬性域等;地理分析模塊主要是實現(xiàn)空間分析和運行、網(wǎng)絡(luò)分析工具、地統(tǒng)計分析等功能;自動化制圖模塊主要是實現(xiàn)操作mxd、擴展數(shù)據(jù)驅(qū)動、自動導(dǎo)出PDF和打印等功能。
數(shù)據(jù)整理是將收集到的數(shù)據(jù)經(jīng)過格式轉(zhuǎn)換、統(tǒng)一坐標(biāo)系等操作之后統(tǒng)一放置在一個數(shù)據(jù)集中。本文是將數(shù)據(jù)整理到文件地理數(shù)據(jù)庫(.gdb)中,也可以整理到個人地理數(shù)據(jù)庫(.mdb)中,將數(shù)據(jù)按照類型進行分類,并依據(jù)屬性將數(shù)據(jù)符號化。在ArcMap中添加添加整張影像底圖,根據(jù)tfw文件對影像進行配置。至此各類圖形要素均可顯示,然后將行政界線、交通網(wǎng)、水系等,以及專題要素按照特定的符號顯示出來。
圖形的輸出一般采用50cm×50cm分幅,采用的紙張為620mm的卷紙,在輸出圖件之前要設(shè)置參數(shù),ArcMap界面下打開“頁面和打印設(shè)置”,選擇自定義紙張,長寬均為62cm;布局視圖下的數(shù)據(jù)框的大小設(shè)置為55cm,位置居中;然后在圖框范圍內(nèi)插入指北針、比例尺、圖名、坐標(biāo)系、作業(yè)單位等信息。
數(shù)據(jù)驅(qū)動頁面是根據(jù)特定的圖層將圖紙輸出為PDF格式的圖集。本例中地質(zhì)勘查專題圖以標(biāo)準(zhǔn)分幅格式進行輸出,比例尺為1:10000,選擇結(jié)合圖表作為數(shù)據(jù)驅(qū)動頁面的“索引圖層”,以該數(shù)據(jù)層的Text字段(圖幅號)作為“名稱字段”和“排序字段”。另一個參數(shù)是“范圍”,依據(jù)本例的比例尺和圖紙數(shù)據(jù)框設(shè)置,地圖范圍選“最佳大小”,邊距“大小為250m,指定使用地圖單位”。
參數(shù)設(shè)置完成之后,選擇“導(dǎo)出地圖”,設(shè)置分辨率等,由于數(shù)據(jù)驅(qū)動頁面只有在輸出PDF格式時使用,所以選擇保存格式為PDF,“頁面”選項中可以確定輸出的范圍以及保存的格式是單個PDF數(shù)據(jù)集還是多個PDF文件。
圖件輸出為PDF格式并不能滿足工程項目的需求,最為實用的是將圖紙輸出為JPG格式,并按圖幅號命名。在后續(xù)的工作中可以通過坐標(biāo)值按照圖幅號進行索引查找,而且可以在沒有專業(yè)軟件的情況下打開圖件查詢相關(guān)信息。
利用Arcpy進行腳本程序編寫即可實現(xiàn)上述相關(guān)內(nèi)容,相關(guān)代碼如下:
圖1 腳本程序編寫代碼
利用Python語言編寫腳本,首先“import”引入arcpy和os,利用“arcpy.mapping.MapDocument”確定工作空間,并用“CURRENT”參數(shù)確定當(dāng)前文檔為工作空間;定義一個圖層“JHTBWC”作為數(shù)據(jù)驅(qū)動頁面圖層;使用“range”確定圖件的頁碼“pageNum”的取值范圍,將頁碼值賦值給數(shù)字驅(qū)動頁面;使用“arcpy.UpdateCursor”依據(jù)結(jié)合圖表圖層迭代更新游標(biāo)“cursor”,通過循環(huán)遍歷每個圖件;最后使用“arcpy.mapping.ExportToJPEG”批量輸出JPG格式的圖件,通過設(shè)置該函數(shù)的參數(shù),可以確定輸出路徑、輸出圖件的名稱、圖件的分辨率。在實際操作中,首先打開編輯好的mxd地理文檔,將Python程序代碼復(fù)制到Python窗口下,運行即可得到相應(yīng)結(jié)果。
本文依托地質(zhì)勘查專題圖的制作,通過對制圖流程的分析,發(fā)現(xiàn)在制圖過程中,尤其是電子圖輸出方面存在自動化不夠的情況,為了能夠提高工作效率引入了Arcpy,具體的說是利用ArcGIS的腳本語言Python進行編程,使用Arcpy站點包中的相關(guān)函數(shù)來實現(xiàn)圖件的批量輸出。
實現(xiàn)數(shù)據(jù)批量處理主要是解決兩個關(guān)鍵問題,一是遍歷所有要處理的數(shù)據(jù);二是將遍歷后的結(jié)果用一種數(shù)據(jù)結(jié)構(gòu)(如數(shù)組、鏈表等)存儲起來[3]。本文僅是結(jié)合Arcpy對圖紙的批量生成進行了分析和探索,為快速制圖提供了實踐經(jīng)驗。Arcpy不僅應(yīng)用于制圖,在GIS數(shù)據(jù)處理中也有廣泛的應(yīng)用。Python語言的應(yīng)用使地理信息工作避免了重復(fù)操作,提高了工作效率,也為GIS行業(yè)的發(fā)展提供了新的方向和切入點。