鄭輝
【摘 要】Python 語言誕生于20世紀(jì)80年代末,它是一種簡單易學(xué),功能強(qiáng)大的開源編程語言。Python語言自被ArcGIS 9.0引入應(yīng)用以來,憑借著批量處理、操作簡單、入門快、效率高、可跨平臺且植入性高、穩(wěn)定成熟等眾多優(yōu)點迅速躋身于地理空間數(shù)據(jù)處理者中,為其的工作提供了無限的便利。論文以實際測量土地范圍點位數(shù)據(jù)為例,利用Python語言編寫腳本批量處理地理空間數(shù)據(jù),結(jié)果表明Python語言可以極大地提高了地理空間數(shù)據(jù)的處理效率,同時,進(jìn)一步證明Python語言簡單易學(xué),適合非計算機(jī)專業(yè)的編程入門語言。
【Abstract】Python language was born in the late 1980 s. It's a simple, easy-to-learn, powerful open source programming language. Since it was introduced into ArcGIS 9.0, it has rapidly become one of the geospatial data processors with the advantages of batch processing, simple operation, fast entry, high efficiency, cross-platform, high implantability, stability and maturity, which provides infinite convenience for its work. Taking the point data of actual land survey as an example, this paper uses Python language to write scripts to process geospatial data in batches. The results show that Python language can greatly improve the processing efficiency of geospatial data. At the same time, it further proves that Python language is simple and easy to learn and suitable for non-computer professional programming introductory language.
【關(guān)鍵詞】Python;地理空間數(shù)據(jù);腳本語言;點圖層數(shù)據(jù)
【Keywords】Python; geo-spatial data; script language; point layer data
【中圖分類號】P208;P237? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻(xiàn)標(biāo)志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文章編號】1673-1069(2019)06-0129-02
1 引言
Python 語言誕生于20世紀(jì)80年代末,它是一種簡單易學(xué),功能強(qiáng)大的編程語言;還是一種開源、免費(fèi)軟件,用戶在使用時不用擔(dān)心版權(quán)問題;它有高效率的高層數(shù)據(jù)結(jié)構(gòu),簡單而有效地實現(xiàn)面向?qū)ο缶幊?。Python 簡潔的語法和對動態(tài)輸入的支持,再加上解釋性語言的本質(zhì),使得它在大多數(shù)平臺上的許多領(lǐng)域都是一個理想的腳本語言,并用在不同的領(lǐng)域[1]。
隨著大數(shù)據(jù)時代的到來,生活信息化程度越來越高,許多傳統(tǒng)的信息處理方式已經(jīng)遠(yuǎn)遠(yuǎn)滿足不了當(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ù)進(jìn)行簡單的重復(fù)性操作,復(fù)雜性的數(shù)據(jù)處理通常是借助構(gòu)造函數(shù)或相應(yīng)軟件進(jìn)行的,這樣機(jī)械性的操作不僅會大大影響數(shù)據(jù)的處理過程,另外,在重復(fù)性操作的過程中不可避免引進(jìn)的數(shù)據(jù)誤差也會大幅度增加,極大地影響了工作效率和數(shù)據(jù)處理的靈活性與易用性[2]。
Python語言自被ArcGIS 9.0引入應(yīng)用以來,憑借著批量處理、操作簡單、入門快、效率高、可跨平臺且植入性高、穩(wěn)定成熟等眾多優(yōu)點迅速躋身于地理空間數(shù)據(jù)處理中,為其工作提供了無限的便利。目前,ESRI公司已完全將Python納入ArcGIS中,并將其視為可滿足用戶需求的語言,再加上Python是免費(fèi)使用的,因此Python軟件所面對的用戶面十分寬廣,若合理使用則會節(jié)省大量數(shù)據(jù)處理時間,提高工作效率[3]。本文主要通過將重復(fù)性操作的數(shù)據(jù)處理與Python批處理進(jìn)行對照,對人們的生產(chǎn)生活具有一定的現(xiàn)實意義。
2 地理空間數(shù)據(jù)處理方法
地理空間數(shù)據(jù)處理是在一定的要求下,借助ArcGIS軟件將不同的地理數(shù)據(jù)按其空間關(guān)系進(jìn)行相應(yīng)的幾何操作,最終使得處理后的結(jié)果在其屬性表上顯示相應(yīng)的信息,以此達(dá)到具體實踐的目的。而對于多量重復(fù)性質(zhì)的空間數(shù)據(jù)處理方法,常用的有以下三種方式:針對實際需求,通過ArcToolbox中的數(shù)百個處理工具進(jìn)行處理;借助ArcGIS軟件中自帶的批處理Batch工具進(jìn)行處理;借助Python腳本語言對數(shù)據(jù)進(jìn)行具體實現(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ù),并需要對輸出文件進(jìn)行命名。這樣對成千上萬,甚至幾十百萬個地理數(shù)據(jù)操作,Batch功能依然無法滿足,而Python靈活的腳本語言可以很好地解決這些難題。
3 地理空間數(shù)據(jù)實例處理
本實例以實際測量土地范圍為例,項目中野外測量獲取不同地塊的特征點位。而用戶需要獲取地塊的長度(線圖層)和面積(面圖層)信息,如圖1所示,圖中黑色三角點為野外實際測量的關(guān)鍵點。
案例中使用ArcGIS中的Toolbox與python語言進(jìn)行對點圖層轉(zhuǎn)換成線圖層進(jìn)行比較分析。Python在執(zhí)行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。Python的Virtual Machine是一種更高級的Virtual Machine。與Java 或.NET相比,Python的Virtual Machine距離真實機(jī)器的距離更遠(yuǎn)?;蛘呖梢赃@么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。實驗結(jié)果顯示隨著數(shù)據(jù)量的不斷增加及人員疲憊的出現(xiàn),通過ArcGIS中的Toolbox單個處理數(shù)據(jù)的時間會呈現(xiàn)指數(shù)趨勢的增長,而通過Python腳本語言與Toolbox單個處理相比較,隨著數(shù)據(jù)的增加其節(jié)省時間越來越多。
4 結(jié)語
研究中利用Python 語言處理大量的地理空間數(shù)據(jù)的轉(zhuǎn)換,通過編寫腳本程序可以極大地提高地理空間數(shù)據(jù)的處理速度,簡化手工操作的步驟,對于大批量流程作業(yè)將大幅提高工作效率。案例中僅對比分析簡單的點圖層轉(zhuǎn)換成線圖層的時效性,今后將進(jìn)一步研究面的轉(zhuǎn)換及疊加分析等復(fù)雜的分析,進(jìn)一步探討Python語言在地理空間數(shù)據(jù)處理中的優(yōu)越性、時效性。
同時,通過該案例實驗更進(jìn)一步證明Python語言也很容易學(xué)習(xí),非常適合作為非計算機(jī)相關(guān)專業(yè)的計算機(jī)程序設(shè)計入門語言,特別是對需要處理大量地理空間數(shù)據(jù)的地理學(xué)相關(guān)專業(yè)。開設(shè)Python 語言課程,可以作為一種用于學(xué)校教學(xué)輔助軟件的開發(fā)工具,提高工作效率。
【參考文獻(xiàn)】
【1】http://www.python.org/, Python 語言的官方網(wǎng)站.
【2】https://github.com/, Github python 代碼共享網(wǎng)站.
【3】肖斌濤, 黃君強(qiáng). Python語言在教學(xué)輔助軟件開發(fā)中的應(yīng)用研究[J].現(xiàn)代計算機(jī), 2009(7):113-115.