亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

        0 引 言

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

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

        1 概念介紹

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

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

        簡單且易學,它的語法簡單,不需要耗費太多的精力;免費且開源;跨平臺,支持包括Windows、Mac、Linux在內(nèi)的各種平臺;解釋性,這一特點使得Python具有更強的移植性;Python是一門面向?qū)ο蟮木幊陶Z言[10]。

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

        2 測繪數(shù)據(jù)存儲備份程序的設計

        2.1 程序設計思路

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

        圖1 流程圖

        2.2 Python在數(shù)據(jù)存儲備份中的應用

        Python的優(yōu)點是有大量的第三方庫可以導入。對文件遍歷[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′;壓縮函數(shù)核心代碼為:zfile=zipfile.ZipFile(zipfilename,′w′,zipfile.ZIP_DEFLATED),第三個參數(shù)為壓縮模式。

        2.2.3 生成md5文件

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

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

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

        pool=Pool(2)

        #括號內(nèi)可設置進程數(shù)量,默認為CPU內(nèi)核數(shù)量

        pool.map(zip_dir,zipfilelist)

        #實現(xiàn)多進程

        pool.close()

        pool.join()

        2.2.5 生成日志

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

        2.3 批處理在數(shù)據(jù)存儲備份中的應用

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

        2.3.1 大量第三方軟件的命令行可調(diào)用

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

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

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

        2.3.2 操作簡單

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

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

        2.4 Python調(diào)用工具軟件

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

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

        2.5 意外事件的處理機制

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

        2.6 實驗數(shù)據(jù)及其處理

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

        圖2 待處理數(shù)據(jù)

        圖3 已處理數(shù)據(jù)

        圖4 數(shù)據(jù)處理日志

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

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

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

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

        表1 Python內(nèi)置模塊處理結(jié)果

        表2 批處理與Exdupe配合處理結(jié)果

        表3 批處理與7z配合處理結(jié)果

        表4 批處理與WinRAR配合處理結(jié)果

        表5 批處理與HaoZip配合處理結(jié)果

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

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

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

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

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

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

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

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

        表6 Python雙進程調(diào)用其他軟件的處理結(jié)果

        圖5 對比結(jié)果

        4 結(jié) 語

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

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

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

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

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

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

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

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

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

        [4] 李華,李淑琴,王錦萍,等.利用數(shù)字攝影測量系統(tǒng)與遙感手段高效獲取4D產(chǎn)品的技術[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] 柴云鵬,楊楠.冷數(shù)據(jù)集中的流媒體存儲系統(tǒng)節(jié)能方法[J].計算機科學,2012,39(10):148- 151,169.

        [9] 姜曉青,王欽若.大數(shù)據(jù)環(huán)境下冷數(shù)據(jù)存儲技術概述[J].工業(yè)控制計算機,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集成開發(fā)可達性分析工具的研究[J].測繪工程,2016,25(11):43- 49.

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

        [14] 陳秋曉,錢國棟.面向UPMIS的控規(guī)數(shù)據(jù)批量轉(zhuǎn)換方法及實現(xiàn)[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
        改革開放進程中的國際收支統(tǒng)計
        中國外匯(2019年8期)2019-07-13 06:01:06
        快速殺掉頑固進程
        社會進程中的新聞學探尋
        民主與科學(2014年3期)2014-02-28 11:23:03
        我國高等教育改革進程與反思
        Linux僵死進程的產(chǎn)生與避免
        講效率 結(jié)束進程要批量
        電腦迷(2012年24期)2012-04-29 00:44:03
        男女平等進程中出現(xiàn)的新矛盾和新問題
        俄羅斯現(xiàn)代化進程的阻礙
        論文萊的民族獨立進程
        日本黑人乱偷人妻在线播放| 91精品国产免费青青碰在线观看 | 50岁熟妇的呻吟声对白| 色老头久久综合网老妇女| 中文字幕a区一区三区| 国产亚洲人成在线观看| 亚洲av无码一区二区三区人| 无码少妇一级AV便在线观看| 中文字幕麻豆一区二区| 久久综合国产精品一区二区| 麻豆tv入口在线看| 亚洲国产成人久久综合一区77| 黄片在线观看大全免费视频| 中文字幕一区二区三区四区| 巨大巨粗巨长 黑人长吊| 久久精品国产日本波多麻结衣| 日韩女优一区二区视频| 亚洲欧洲一区二区三区波多野| 人妻露脸国语对白字幕| 国产欧美日韩一区二区加勒比| 7m精品福利视频导航| 人妻丰满熟妇AV无码区HD| 日韩精品一区二区亚洲av性色 | 少妇高潮在线精品观看| av人摸人人人澡人人超碰妓女| av无码天一区二区一三区| 国产激情在线观看视频网址| 无套内内射视频网站| 黑人巨大精品欧美一区二区 | 久久HEZYO色综合| 亚洲国产天堂久久综合网| 欧美私人情侣网站| 国产精品成人嫩妇| 亚洲一区二区三区资源| 亚洲av无码一区东京热久久| 亚洲爆乳少妇无码激情| 国产好片日本一区二区三区四区| 最好看的亚洲中文字幕 | 免费a级毛片无码a∨蜜芽试看| 亚洲欧洲无码av不卡在线| 国产一级毛片AV不卡尤物|