天天看點

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

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

在上節中,介紹了如何更新圖層的符号系統。正如前文所述,updatelayer()可以用來更新圖層的各種屬性,如字段别名、定義查詢等。本節将介紹如何使用updatelayer()函數來改變圖層的各種屬性。

2.11.1 準備工作

updatelayer()函數可以用來更新有限數量的圖層屬性。所有可在“圖層屬性”對話框中找到的屬性都可使用updatelayer()函數進行修改,包括字段别名、符号系統、定義查詢和标注字段等。一種常見的情況是,有一個圖層被添加到多個地圖文檔中,而gis分析人員需要在全部地圖文檔中改變所有該圖層執行個體的某個特定屬性。要實作這一功能,需要在arcmap中修改特定的圖層屬性并将該圖層儲存為圖層檔案,然後把儲存的圖層檔案作為源圖層,用來更新update_layer圖層的屬性。在本節中,首先使用arcmap改變圖層屬性,儲存圖層檔案(.lyr),然後使用python編寫腳本,調用updatelayer()函數,把儲存的圖層屬性應用到将要更新的圖層中。

2.11.2 操作方法

下面按步驟介紹如何使用updatelayer()函數更新圖層屬性。

(1)在arcmap中打開c:arcpybookch2crime_ch2.mxd。在本節中,将要使用“burglaries in 2009”要素類,如圖2-12所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

https://yqfile.alicdn.com/7a77e1766c8a6f71c7075853b90d71227316337b.png" >

(2)在資料框中輕按兩下“burglaries in 2009”要素類,打開“layer properties”視窗,如圖2-13所示。每個頁籤表示一個屬性,可以在頁籤中設定相應的圖層屬性參數。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

(3)單擊“general”頁籤,在“layer name”文本框中輸入文本,更改圖層的名稱為“burglaries – no forced entry”,如圖2-14所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

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

(4)單擊“definition query”頁籤,設定定義查詢,如圖2-15所示。可以單擊“query builder…”按鈕建構定義查詢,也可以直接鍵入查詢表達式。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

https://yqfile.alicdn.com/97c924d7ce811d3a23f648facdbd48e9871d533c.png" >

(5)更改offdesc字段的别名為offense description,如圖2-16所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

(6)在“layer properties”視窗單擊“fields”頁籤,如圖2-16所示,已勾選的字段是可見字段,取消勾選可以使相應字段變為不可見狀态。

(7)單擊“ok”按鈕關閉“layer properties”視窗。

(8)在資料框中右擊“burglaries – no forced entry”圖層,選擇“save as layer file”。

(9)儲存檔案為c:arcpybookdataburglariesnoforcedentry.lyr。

(10)右擊“burglaries – no forced entry”圖層,選擇“remove”。

(11)在arcmap中單擊“add data”按鈕,從cityofsanantonio地理資料庫添加crimes2009要素類。該要素類将添加到資料框中,如圖2-17所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性

(12)在arcmap中打開“python”視窗。

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

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

(15)擷取對crime資料框的引用。

(16)定義将要更新的圖層。

(17)定義用于更新屬性的源圖層。

(18)調用updatelayer()函數更新符号系統。

(19)可以通過檢視 c:arcpybookcodech2updatelayerproperties.py解決方案檔案來檢查代碼。

(20)運作腳本。

(21)“crimes2009”圖層中與 burglariesnoforcedentry.lyr 檔案相關聯的屬性将進行更新,如圖2-18 所示。可以打開圖層檢視定義查詢,還可以打開“layer properties”視窗,檢視“crimes2009”要素類已改變的圖層屬性。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.11 更新圖層屬性