1.什么是ArcPyArcPy 是一個安裝 ArcGIS 會附帶的站點包,通過 Python(安裝 ArcGIS 的時候也會安裝 python ) 實現(xiàn)。 簡言之,通過 Python 能直接調(diào)用 arcpy 執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理和地圖自動化等功能,滿足多種客制化的需求。 說人話就是,你買了一個超大的工具臺名叫 ArcGIS;工具臺上附贈了一個叫 Python 的工具箱(Python一門編程語言);工具箱中的一把螺絲刀就叫 ArcPy。 官方文檔:https://desktop./zh-cn/arcmap/10.3/analyze/arcpy/what-is-arcpy-.htm 2.什么是多進程和自動與多進程相對的是單進程。單進程就是一次做一件事,多進程就是同時做多件事。舉個例子,一個人打開一個 mxd 文檔,執(zhí)行導出地圖操作,地圖導出完成后,再打開下一個 mxd 重復上一個流程,這就可以理解為單進程; 但是這個人同時打開4個 mxd 文檔,然后都執(zhí)行地圖導出操作,那么這個就可以理解為多進程導出地圖。但是呢,這不是自動化的,是人工操作的。 我們通過使用 Python 中一把叫做 multiprocessing 的螺絲刀實現(xiàn)多進程。 多進程和自動不是連起來的哦,是分開的,既然有單進程,那么就有單進程自動化制圖和多進程自動出圖。 簡單來說:
官方文檔:https://docs./zh-cn/3/library/multiprocessing.html 3.實現(xiàn)多進程自動出圖為什么要自動出圖,當然是解放人類、解放生產(chǎn)力??! 使用 ArcGIS 制圖完成然后導出,我們知道通常,一張圖片對應一個 mxd 文件。 在生產(chǎn)環(huán)境或者學習實驗中,能遇到一個縣級行政區(qū)下轄的所有村都需要出一張某方面的專題圖;又或者是某區(qū)域十年來的氣溫變化專題圖的情況,光是需要制作 mxd 文件就有幾十個乃至上百個(可以使用 Python 語言等進行自動化制圖,以后詳說),你還要一個個打開 mxd 文件,心累...... 而使用 arcpy 自動化出圖,解放生產(chǎn)力,同時有多進程的加持能充分挖掘計算機的性能。 在電腦最低配置都是4核的今天,總體出圖速度提升個2到3倍不是問題,更不用說電腦自動化操作,連半夜都能繼續(xù)出圖,不再加班熬夜,拯救社畜。 3.1ArcPy單進程自動出圖還是簡單的講一下使用 ArcPy單進程自動出圖 網(wǎng)上很多帖子,我去抄一個貼到下面: *把所有mxd文件放到這個文件夾里面,就可以讓電腦自己出圖了,很簡單吧! 函數(shù) export 接收兩個參數(shù),第一個是存放了 mxd 文件的文件夾地址,同時該地址也是地圖導出成果的輸出文件夾。第二個是出圖分辨率,你可以填300。 3.2 ArcPy多進程自動出圖本文的重點來了!那么如何實現(xiàn)多進程?前面我們已經(jīng)說了:
multiprocessing模塊的官方文檔 接下用一個例子來詳細講講思路:假如一個文件夾中有400個 mxd 文件需要出圖 3.2.1首先我們需要把數(shù)據(jù)切片我們讀取該文件夾中的所有 mxd 文件的地址,然后切分成幾個部分,比如分成4分,每一部分都有100個 mxd 文件。 如何切分呢?電腦可沒有人聰明。 主要思路是用列表的 pop() 方法操作。打個比方:從兜里拿“硬幣”出來,放到籃子1里面;再拿一個出來,放到籃子2里;再拿一個出來,放到籃子3里;再拿一個出來,放到籃子4里;再拿一個出來,再一次放到籃子1里,循環(huán)操作。直到”硬幣“取完,操作結(jié)束。 以下附上自己寫的分組代碼(肯定有更好的寫法,這個是很久以前寫的了,但是也不想改了) 3.2.2然后是多進程的基本操作以下是多進程的一個簡單使用演示,雖然看上去好像沒有效果,但是確實開啟了多進程。?? 需要注意的是:在 Windows 平臺上,運行多進程必須在 3.3完整代碼完整代碼如下: 附傻瓜操作演示和下載該視頻演示如何使用 Python 源代碼執(zhí)行多進程自動導出地圖。傻瓜式操作,誰都能學會,只要你電腦有安裝ArcGIS。 結(jié)束語 |
|