天天看點

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

本節書摘來自異步社群《基于arcgis的python程式設計秘笈(第2版)》一書中的第2章,第2.12節,作者: 【美】eric pimpler(派普勒) 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

本節将介紹如何啟用圖層的時間屬性,然後編寫腳本,循環周遊圖層的時間範圍并導出pdf地圖,用來展示以7天為間隔的犯罪資料。

2.12.1 準備工作

dataframetime對象可執行時間管理操作,用來管理資料框中啟用時間的圖層。dataframetime對象是引用dataframe.time屬性傳回的結果,它可以檢索目前時間(currenttime)、結束時間(endtime)、開始時間(starttime)、時間步長間隔(timestepinterval)以及其他使用“timeslideroptions”對話框建立的屬性,然後在地圖文檔中儲存屬性。資料框中的圖層必須啟用了時間屬性才能實作這些功能。

2.12.2 操作方法

下面按步驟介紹如何操作啟用時間的圖層。

(1)在arcmap中打開c:arcpybookch2crime_ch2.mxd。

(2)在arcmap的“table of contents”視窗中確定crime是活動的資料框。

(3)右擊“burglaries in 2009”圖層,選擇“properties”,打開“layer properties”視窗,選擇“time”頁籤,如圖2-19所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

https://yqfile.alicdn.com/d9b9cb4a43601393d5af03b2a38b0b1648289b54.png" >

單擊勾選“enable time on this layer”複選框,啟用該圖層的時間屬性。

(4)在“time properties”下的“layer time:”選項中選擇“each feature has a single time field”;在“time field:”選項中選擇“splitdt”字段;在“time step interval:”選項中設定為“7.00 days”。如圖2-20所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

單擊“calculate”按鈕,計算“layer time extent”,如圖2-21所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

https://yqfile.alicdn.com/d828a2c9180a3d6c57870790f7acbd471f0de717.png" >

(5)檢查“time step interval:”字段,有可能需要重置為“7days”。

(6)單擊“apply”,然後單擊“ok”。

(7)在arcmap工具條上,單擊“time slider”按鈕,打開“time slider”視窗,如圖2-22所示。在視窗中單擊“time slider options”按鈕,打開“time slider options”對話框。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

(8)在“time slider options”對話框的“time display”頁籤中,确定“time step interval”設定為“7.0days”,否則重新設定為“7.0days”。“time window”選項同樣設定為“7.0days”。如圖2-23所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

(9)單擊“ok”。

(10)儲存地圖文檔。必須在地圖文檔中儲存啟用時間的資料,否則編寫的代碼無法執行。

(11)打開“python”視窗。

(12)導入arcpy.mapping子產品。

(13)引用目前活動的地圖文檔(crime_ch2.mxd),把該引用指派給變量。

(14)檢索crime資料框。

(15)生成dataframetime對象。

(16)設定dataframetime.currenttime屬性為dataframetime.starttime屬性。

(17)在while循環内,建立一個變量存儲pdf檔案名稱,将地圖文檔的資料框導出為pdf,輸出導出的pdf檔案名,重置currenttime屬性。while循環體的完整代碼如下所示。

(18)完整的腳本如圖2-24 所示。可以通過檢視 c:arcpybookcodech2timeenabledlayers.py解決方案檔案來檢查代碼。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.12 操作資料框中啟用時間的圖層

2.12.3 工作原理

dataframetime對象可以在資料框中執行時間管理操作。在本節中使用的dataframetime屬性包括currenttime、starttime、endtime和timestepinterval等。首先,設定currenttime屬性為starttime屬性。starttime屬性的初始值等于計算出的“layer time extent”屬性的起始時間。然後,設定while循環,隻要currenttime屬性不大于 endtime 屬性,則繼續循環。在循環體内,建立 filename 變量存儲currenttime屬性值與“.pdf”組成的字元串。調用exporttopdf()函數,傳入路徑和檔案名參數,還可以将布局視圖導出為pdf檔案。最後,由timestepinterval屬性更新currenttime屬性,timestepinterval屬性在屬性對話框的“time step interval”屬性中設定為“7.0 days”。

上一篇: 消息隊列
下一篇: 消息隊列