鄭輝
(河南大學(xué)民生學(xué)院,河南 開封 475004)
ZHENG Hui
(Henan University Minsheng College,Kaifeng475004,China)
Python語言誕生于20世紀(jì)80年代末,它是一種簡單易學(xué),功能強大的編程語言;還是一種開源、免費軟件,用戶在使用時不用擔(dān)心版權(quán)問題;它有高效率的高層數(shù)據(jù)結(jié)構(gòu),簡單而有效地實現(xiàn)面向?qū)ο缶幊獭ython簡潔的語法和對動態(tài)輸入的支持,再加上解釋性語言的本質(zhì),使得它在大多數(shù)平臺上的許多領(lǐng)域都是一個理想的腳本語言,并用在不同的領(lǐng)域[1]。
隨著大數(shù)據(jù)時代的到來,生活信息化程度越來越高,許多傳統(tǒng)的信息處理方式已經(jīng)遠遠滿足不了當(dāng)代人的需求。特別是在地學(xué)領(lǐng)域的研究中,地理空間數(shù)據(jù)的處理經(jīng)常需要借助相應(yīng)的軟件或者工具。在大量的地理數(shù)據(jù)中,地理空間數(shù)據(jù)較其他矢量數(shù)據(jù)更具有豐富的空間屬性信息,將其不同數(shù)據(jù)通過裁切、融合、疊加以及其他復(fù)雜手段后會得到包含更多空間信息的地理數(shù)據(jù)。但在正常的操作過程中,一般借助ArcGIS軟件對地理空間數(shù)據(jù)進行簡單的重復(fù)性操作,復(fù)雜性的數(shù)據(jù)處理通常是借助構(gòu)造函數(shù)或相應(yīng)軟件進行的,這樣機械性的操作不僅會大大影響數(shù)據(jù)的處理過程,另外,在重復(fù)性操作的過程中不可避免引進的數(shù)據(jù)誤差也會大幅度增加,極大地影響了工作效率和數(shù)據(jù)處理的靈活性與易用性[2]。
Python語言自被ArcGIS 9.0引入應(yīng)用以來,憑借著批量處理、操作簡單、入門快、效率高、可跨平臺且植入性高、穩(wěn)定成熟等眾多優(yōu)點迅速躋身于地理空間數(shù)據(jù)處理中,為其工作提供了無限的便利。目前,ESRI公司已完全將Python納入ArcGIS中,并將其視為可滿足用戶需求的語言,再加上Python是免費使用的,因此Python軟件所面對的用戶面十分寬廣,若合理使用則會節(jié)省大量數(shù)據(jù)處理時間,提高工作效率[3]。本文主要通過將重復(fù)性操作的數(shù)據(jù)處理與Python批處理進行對照,對人們的生產(chǎn)生活具有一定的現(xiàn)實意義。
地理空間數(shù)據(jù)處理是在一定的要求下,借助ArcGIS軟件將不同的地理數(shù)據(jù)按其空間關(guān)系進行相應(yīng)的幾何操作,最終使得處理后的結(jié)果在其屬性表上顯示相應(yīng)的信息,以此達到具體實踐的目的。而對于多量重復(fù)性質(zhì)的空間數(shù)據(jù)處理方法,常用的有以下三種方式:針對實際需求,通過ArcToolbox中的數(shù)百個處理工具進行處理;借助ArcGIS軟件中自帶的批處理Batch工具進行處理;借助Python腳本語言對數(shù)據(jù)進行具體實現(xiàn)。
①ArcToolbox處理。ArcGIS軟件提供一系列地理數(shù)據(jù)處理的方法,并將其集成于一套工具箱之中,可以根據(jù)具體的應(yīng)用利用ArcToolbox簡單的可視化引導(dǎo)界面完成項目任務(wù)。
②Batch批處理。雖然ArcToolbox提供了幾百個靈活領(lǐng)用的工具,但其每次只能處理一個數(shù)據(jù)。如果幾十個數(shù)據(jù),則需要重復(fù)工作。而工具中的批量處理(Batch)可以實現(xiàn)多個數(shù)據(jù)到幾十個數(shù)據(jù)的批量處理,可以通過添加多個數(shù)據(jù)完成項目任務(wù)。
③Python批處理。Batch批處理功能雖能解決多數(shù)據(jù)的問題,但處理多數(shù)據(jù)時需要手動加入幾十個數(shù)據(jù),并需要對輸出文件進行命名。這樣對成千上萬,甚至幾十百萬個地理數(shù)據(jù)操作,Batch功能依然無法滿足,而Python靈活的腳本語言可以很好地解決這些難題。
本實例以實際測量土地范圍為例,項目中野外測量獲取不同地塊的特征點位。而用戶需要獲取地塊的長度(線圖層)和面積(面圖層)信息,如圖1所示,圖中黑色三角點為野外實際測量的關(guān)鍵點。

圖1 地理空間數(shù)據(jù)(點、線、面)
案例中使用ArcGIS中的Toolbox與python語言進行對點圖層轉(zhuǎn)換成線圖層進行比較分析。Python在執(zhí)行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機)來執(zhí)行這些編譯好的byte code。Python的Virtual Machine是一種更高級的Virtual Machine。與 Java或.NET相比,Python的 Virtual Machine距離真實機器的距離更遠。或者可以這么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。實驗結(jié)果顯示隨著數(shù)據(jù)量的不斷增加及人員疲憊的出現(xiàn),通過ArcGIS中的Toolbox單個處理數(shù)據(jù)的時間會呈現(xiàn)指數(shù)趨勢的增長,而通過Python腳本語言與Toolbox單個處理相比較,隨著數(shù)據(jù)的增加其節(jié)省時間越來越多。
研究中利用Python語言處理大量的地理空間數(shù)據(jù)的轉(zhuǎn)換,通過編寫腳本程序可以極大地提高地理空間數(shù)據(jù)的處理速度,簡化手工操作的步驟,對于大批量流程作業(yè)將大幅提高工作效率。案例中僅對比分析簡單的點圖層轉(zhuǎn)換成線圖層的時效性,今后將進一步研究面的轉(zhuǎn)換及疊加分析等復(fù)雜的分析,進一步探討Python語言在地理空間數(shù)據(jù)處理中的優(yōu)越性、時效性。
同時,通過該案例實驗更進一步證明Python語言也很容易學(xué)習(xí),非常適合作為非計算機相關(guān)專業(yè)的計算機程序設(shè)計入門語言,特別是對需要處理大量地理空間數(shù)據(jù)的地理學(xué)相關(guān)專業(yè)。開設(shè)Python語言課程,可以作為一種用于學(xué)校教學(xué)輔助軟件的開發(fā)工具,提高工作效率。