999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python與批處理在遙感影像存儲中的應用

2018-07-05 02:42:26廖小龍黃彥鋒陳云波昆明理工大學國土資源工程學院云南昆明650000云南省測繪產品檢測站云南昆明650000昆明市規劃編制與信息中心云南昆明650500
計算機應用與軟件 2018年6期
關鍵詞:進程

廖小龍 施 昆* 黃彥鋒 陳云波(昆明理工大學國土資源工程學院 云南 昆明 650000)(云南省測繪產品檢測站 云南 昆明 650000)(昆明市規劃編制與信息中心 云南 昆明 650500)

0 引 言

測繪資料作為國家經濟建設發展的基礎,需要根據事項的性質和特點對資料定密,明確保密期限[1],而不斷增長的現代航攝遙感影像資料勢必需要大量的存儲空間。相對于冷數據的存儲,熱數據的存儲需要大量的成本投入,包括購買費用和維護費用,比如:磁盤陣列和服務器等,而這些在冷數據的存儲過程中顯得多余,因為冷數據的使用與調用效率并不高。因此,使用怎樣的方法存儲和調用這些現代航攝遙感影像資料對每個管理部門都非常重要。

常用的冷存儲方式有:磁帶、光盤、硬盤存儲。本文以數字正射影像圖DOM(Digital Orthophoto Map)[2-4]為例,采用硬盤存儲的方式,在Windows系統中用Python語言編寫工具軟件,并靈活運用批處理腳本[5-7],探尋幾種高效率存儲冷數據[8-9]的方法。

1 概念介紹

冷數據存儲是指很少使用或訪問的非活躍數據的存儲。通常,冷數據即便不需要無限期保留,但出于業務或法規遵從性目的,也必須將其保留相當長一段時期。一般來說,冷數據存儲要比用于支持更活躍數據的高性能主存儲經濟很多,具體的經濟指標在本文中主要考慮存儲的體積和備份的速度。

Python[10-13]是一門簡單而又強大的編程語言,對于那些編程困難的人來說,Python的出現或許是一個福音。Python的主要特點如下:

簡單且易學,它的語法簡單,不需要耗費太多的精力;免費且開源;跨平臺,支持包括Windows、Mac、Linux在內的各種平臺;解釋性,這一特點使得Python具有更強的移植性;Python是一門面向對象的編程語言[10]。

批處理是一種簡化的腳本語言,它是由DOS(Disk Operating System)或者Windows系統內嵌的命令解釋器解釋運行。批處理文件的擴展名為bat,可以在不需要for、if等控制流程的情況下,批量地執行特定命令,非常方便。

2 測繪數據存儲備份程序的設計

2.1 程序設計思路

如圖1所示,首先對文件進行識別工作(遍歷文件夾),然后生成對應的壓縮文件,存儲到指定位置,接著針對生成的壓縮文件計算相應md5文件,并且以文本的形式保存,最后生成程序處理日志,便于后續文件處理的管理。

圖1 流程圖

2.2 Python在數據存儲備份中的應用

Python的優點是有大量的第三方庫可以導入。對文件遍歷[14-15],可以使用os模塊;生成壓縮文件可以使用zipfle模塊;生成md5文件有hashlib模塊;針對單進程不能充分利用多核計算機CPU的情況,可以使用multiprocessing模塊等。

2.2.1 文件遍歷,生成完整源文件路徑

使用os.walk遍歷每一個文件,識別每一個需壓縮文件的完整路徑zipfilepath,將它們存儲到filelist列表中。

2.2.2 壓縮文件

使用zipfile模塊將文件壓縮到指定路徑,該模塊的使用和一般的文件讀寫類似,目標路徑的存儲名zipfilename是在zipfilepath的基礎上,使用replace把源文件路徑替換目標文件路徑,末尾加上:“.zip”具體代碼為:zipfilename=zipfilepath.replace(rootpath,destpath)+′.zip′;壓縮函數核心代碼為:zfile=zipfile.ZipFile(zipfilename,′w′,zipfile.ZIP_DEFLATED),第三個參數為壓縮模式。

2.2.3 生成md5文件

使用hashlib模塊生成md5值,首先用open方法打開文件,然后使用update方法更新,最后打開文本,寫入更新的數據即可。

2.2.4 實現多進程(在上述功能封裝成函數的前提下)

使用map方法省去for循環步驟,在使用中,一定要先執行pool.close(),然后再執行pool.join(),詳細代碼如下:

pool=Pool(2)

#括號內可設置進程數量,默認為CPU內核數量

pool.map(zip_dir,zipfilelist)

#實現多進程

pool.close()

pool.join()

2.2.5 生成日志

最簡單方式是在處理過程輸出一些信息,寫到txt文件中。要求高的情況下可使用logging模塊,使用起來也很簡單。首先使用os.path.basename(__file__)來識別py文件的名稱(為了使得日志路徑和py文件路徑保持一致),然后使用logging.basicConfig來定義日志輸入格式,接著使用logging.info()來記錄日志,通常可以使用Python中裝飾器(閉包)來對每一個函數的執行情況進行記錄。

2.3 批處理在數據存儲備份中的應用

批處理雖然沒有那么多模塊可以導入,但它作為Windows操作系統自帶的腳本語言在數據備份中也具備它獨有的特點。

2.3.1 大量第三方軟件的命令行可調用

批處理在進行壓縮和生成md5文件都可以調用其他軟件的命令行。常用的壓縮軟件有:WinRAR、HaoZip(好壓)、7z、Exdupe等;生成md5文件可供選擇的對象有:md5sums和Windows 系列操作系統Certutil命令等,比如:

exdupe的命令行:exdupe -t8 "!prjdir!\%%i" "!outdir!\%%i.full"

md5sums的命令行:md5sums -n D: emp>>%outdir%md

2.3.2 操作簡單

直接使用多行命令行來實現批處理,使用軟件UltraEdit將每一條軟件的命令行編寫排列在txt文檔中,然后將文檔后綴名修改為“.bat”,直接雙擊即可運行。將所有的命令行分成多個“.bat”文件即可實現多進程處理。

dir /b>list.txt即可生成壓縮源文件列表到list.txt文本

2.4 Python調用工具軟件

Python和批處理配合使用。Python不僅可以調用批處理的一些操作,比如2.3.2節提到的“dir /b>list.txt”,而且可以直接調用命令行。Python提供了兩種選擇用于調用命令行,其一是os模塊,其二是管道subprocess模塊。由于此次操作不需要得到調用后的返回值,所以代碼中直接使用os.system,比如調用Exdupe命令行的方式如下:

os.system(""" Exdupe "{0}" "{1}" """.format(full_rootpath, full_destpath))#full_rootpath和full_destpath分別代表完整的源文件路徑和目標文件路徑。

2.5 意外事件的處理機制

Python文件處理非常方便,例如:os模塊的makedirs函數創建文件夾,remove函數刪除文件等。如圖1中所述,通過對比源文件夾與目標文件夾中的文件,識別出已存在的文件,并在備份處理時忽略已有文件,避免重復備份。考慮到程序意外中斷可能導致上次處理的最后生成的幾個文件不完整,程序通過分析在目標文件夾中的文件,識別出未能完整備份的數據文件后將其刪除,處理函數為:remove(targetpath)。

2.6 實驗數據及其處理

圖2中顯示用于處理的數據:TIFF格式的1∶5 000 DOM,數據量33 GB,分別存儲在413個文件夾中,文件夾平均大小為80 M。圖3中顯示已處理的數據,針對圖2中的每個文件夾,在圖3中都有兩個文件與之對應,分別為壓縮生成的文件(“.zip”文件)和記錄壓縮生成文件md5值的文本文件(“.txt”文件)。圖4中顯示使用Python調用logging模塊生成的日志文件,文件記錄著圖2中每一個源文件夾對應的處理情況,若成功壓縮備份,則記錄為Mission completed,文件處理結果如圖3所示。若處理失敗,則記錄處理原因,用于管理人員分析錯誤原因或者調試程序代碼。

圖2 待處理數據

圖3 已處理數據

圖4 數據處理日志

3 不同處理方法的比較分析

Python在多進程處理方面可直接利用自帶模塊,進行批處理時代碼量較大,相對繁瑣。

批處理是通過調用其他軟件完成任務,可以靈活的讓幾個工具軟件協同工作,代碼量較少。前提是必須找到合適的工具軟件。

實驗以處理TIFF格式的1∶5 000 DOM為例,做效率對比。數據量33 GB,分別存儲在413個文件夾中,文件夾平均大小為80 MB。臺式計算機配置為:單8核CPU,3.40 GHz主頻;RAM4.00 GB;64位Windows 7操作系統。由于不同軟件都能設置不同的壓縮等級,這意味著壓縮率越高,結果體積越小,時間越長,本次實驗除了Exdupe修改了默認壓縮比,其他軟件統一采用默認壓縮比。處理結果詳情如表1-表5所示。

表1 Python內置模塊處理結果

表2 批處理與Exdupe配合處理結果

表3 批處理與7z配合處理結果

表4 批處理與WinRAR配合處理結果

表5 批處理與HaoZip配合處理結果

通過對Python程序處理(表1)和四個常用壓縮軟件批處理(表2到表5)的綜合分析可以得出:

1) 無論哪一種備份處理,單進程處理所花費的時間大約是雙進程的兩倍。

2) 在本實驗電腦配置的前提下,當進程數量超過雙進程時,備份所花費的時間不減反增,而且進程越多,增加越明顯。

3) 不同軟件對內存和CPU的占用率也不一樣,比如HaoZip、7z和Python處理中,內存和CPU占用率并不隨進程數量增加而增加,Exdupe和WinRAR則恰恰相反,甚至在進程達到三個的時候,電腦出錯,自動重啟。

4) 由于進程數量過多,可能出現進程卡死的情況,比如:表5中HaoZip處理結果中,當進程數設置為8時,其中6個進程正常結束,另外兩個進程卡死了。

5) 處理結果中時間最短的情況出現在表2 Exdupe處理結果中,總時間為909 s。總體積最小的情況出現在表4 WinRAR處理結果中,總大小為17.2 GB。綜合考慮時間和總大小因素,最佳處理結果為表2中Exdupe的雙進程處理:總大小17.9 GB,總時間909 s,不過該軟件的不足在于:當需要解壓時,也只能使用該軟件。

綜上特征考慮可以得出:在本實驗電腦配置的前提下,5種處理方法中,設置雙進程都是最佳條件。

通常在作業過程中,作業人員更希望在利用第三方程序的基礎上,再添加一些功能,這樣不僅可以減少編程量,還能實現所有需要的功能。因此,通過循環調用其他軟件命令行的方法,進一步實驗結果表現為:在表6中顯示使用Python調用模塊和第三方軟件的處理結果,圖5中顯示出配合處理時只考慮時間因素情況下的對比結果,結果中可以看出:7z和WinRAR兩款軟件在被Python調用之后的效果并不明顯,達不到批處理雙進程的效果,而HaoZip和Exdupe則比較接近與批處理的雙進程效果。另外,Python調用自帶模塊的處理速度也比較理想,僅次與Exdupe和HaoZip。而且,CPU和內存的占用率是最低的,對于一般作業者來說,選擇Python調用自帶模塊在一定程度上也起到了保護電腦的作用。

表6 Python雙進程調用其他軟件的處理結果

圖5 對比結果

4 結 語

從文中提到的幾種遙感影像資料備份存儲方法可得出如下結論:

1) 批處理的優點:調用其他具有命令行模式的軟件,避免了造輪子的過程,簡單便捷。

2) 大量的模塊使得Python能夠靈活地處理工作中遇到的問題。

3) “膠水”特性也使得Python能夠幫助作業人員快速找到合適的處理方法,比如文中提到的調用第三方軟件的命令行,在不需要單獨造輪子的情況下,批量解決問題。

4) Python和批處理的配合使用可充分利用兩者的優點,但是對用戶的要求較高,用戶需要同時掌握Python和批處理機制。

5) 除了文中提到的遙感影像資料存儲工作,在其他的工作中,如若遇到有可調用的第三方軟件,同樣可以利用Python和批處理的方法來快速找到解決方案。

[1] 全國人大常委會辦公廳.中華人民共和國保守國家秘密法[M].法律出版社,2010.

[2] 張海中.地理國情普查數字正射影像(DOM)數據生產及質量控制[J].東北水利水電,2014,32(12):62- 63.

[3] 馬東嶺,崔健,丁寧,等.一種數字正射影像圖制作方法[J].測繪科學,2013,38(4):188- 189,199.

[4] 李華,李淑琴,王錦萍,等.利用數字攝影測量系統與遙感手段高效獲取4D產品的技術[J].城市勘測,2005(2):34- 36.

[5] Van Wolverton. Running MS-DOS[M].20th Anniversary Edition.Microsoft Press,2002:5- 6.

[6] Gillay C Z,Peat B A.Windows Xp:Command Line[M].Franklin Beedle & Associates,2002:12- 16.

[7] Ford J L.Microsoft Windows Shell Script Programming for the Absolute Beginner[M].Course Technology PTR,2003.

[8] 柴云鵬,楊楠.冷數據集中的流媒體存儲系統節能方法[J].計算機科學,2012,39(10):148- 151,169.

[9] 姜曉青,王欽若.大數據環境下冷數據存儲技術概述[J].工業控制計算機,2016,29(6):58- 60.

[10] Eric Pimpler.Programming ArcGIS 10.1 with Python Cookbook[M].Birmingham:Packt Publishing Ltd,2013:7- 28.

[11] Zandbergen P A.Python Scripting for ArcGIS[M].Esri Press,2013.

[12] 胡紅,賴鑫生.基于ArcGIS和Python集成開發可達性分析工具的研究[J].測繪工程,2016,25(11):43- 49.

[13] 周津津,陳少鋒,劉曉娟.淺談基于ArcGIS的影像處理工具集開發[J].測繪與空間地理信息,2014(11):155- 157.

[14] 陳秋曉,錢國棟.面向UPMIS的控規數據批量轉換方法及實現[J].浙江大學學報(理學版),2013,40(5):606- 610.

[15] Lutz Mark.Learning Python[M].4th ed.O’Reilly Media,Inc.2009:583- 590.

猜你喜歡
進程
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
改革開放進程中的國際收支統計
中國外匯(2019年8期)2019-07-13 06:01:06
快速殺掉頑固進程
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
講效率 結束進程要批量
電腦迷(2012年24期)2012-04-29 00:44:03
男女平等進程中出現的新矛盾和新問題
俄羅斯現代化進程的阻礙
論文萊的民族獨立進程
主站蜘蛛池模板: 无码内射中文字幕岛国片| 国产一级毛片网站| 97在线观看视频免费| 国产永久免费视频m3u8| 亚洲欧美国产视频| 四虎成人精品| 亚洲精品高清视频| 2020国产免费久久精品99| 香蕉eeww99国产在线观看| 99成人在线观看| 亚洲成人黄色在线| 免费在线a视频| 久久性视频| 日韩欧美国产中文| 色综合久久综合网| 波多野吉衣一区二区三区av| 91色在线观看| 伊人天堂网| 色综合天天综合中文网| 丝袜高跟美脚国产1区| 高h视频在线| 亚洲中文久久精品无玛| 一区二区日韩国产精久久| 成人91在线| 亚洲一区二区在线无码| 日本亚洲成高清一区二区三区| 国产福利免费视频| a亚洲天堂| 亚洲黄色片免费看| 中文字幕2区| 天天摸天天操免费播放小视频| 亚洲国语自产一区第二页| 亚洲成a∧人片在线观看无码| 国产在线精彩视频二区| 欧洲熟妇精品视频| 日韩一级毛一欧美一国产| 国产一级无码不卡视频| 久久香蕉国产线看观看式| 欧美综合成人| 日韩欧美在线观看| 在线观看91精品国产剧情免费| h网站在线播放| 国产肉感大码AV无码| 亚洲区视频在线观看| 国产精品尤物在线| 777国产精品永久免费观看| 人与鲁专区| 大乳丰满人妻中文字幕日本| 久久国产高潮流白浆免费观看| 试看120秒男女啪啪免费| 亚洲大尺码专区影院| 国产大片喷水在线在线视频| 青青草91视频| 亚国产欧美在线人成| 久久这里只有精品23| 欧美日韩福利| 国产精品一区二区久久精品无码| 久久永久免费人妻精品| 亚洲美女高潮久久久久久久| 国产一在线| 中日韩一区二区三区中文免费视频| 国产h视频在线观看视频| 欧美一级夜夜爽www| 日本在线欧美在线| 久久精品电影| 精品成人免费自拍视频| 免费A级毛片无码无遮挡| 国产精品3p视频| 日本亚洲国产一区二区三区| 国产sm重味一区二区三区| 四虎成人免费毛片| 伊人色在线视频| 久久9966精品国产免费| 久久久久久久久亚洲精品| 国产一级裸网站| 97国产成人无码精品久久久| 精品国产一区91在线| 精品国产美女福到在线不卡f| av在线5g无码天天| 亚洲人成影视在线观看| 亚洲中文字幕在线精品一区| 国产成人一区在线播放|