天天看點

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.9 插入圖層到地圖文檔

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

addlayer()函數可以用來将圖層添加到地圖文檔中,圖層添加到資料框中的位置可以使用自動排序方式放置,也可以使用bottom或top參數将圖層置于頂層或底層。但是,addlayer()函數沒有提供把圖層插入到資料框中某個指定位置的功能。要實作該功能,可以使用insertlayer()函數。本節将介紹如何将圖層添加到資料框中的指定位置。

**

2.9.1 準備工作**

addlayer()函數僅僅提供把圖層添加到資料框或圖層組中的功能,并且隻可以使用自動排序方式自動地放置圖層的位置,或者選擇放置在頂層或底層。然而,使用insertlayer()函數可以準确地指定圖層添加到資料框或圖層組中的位置。insertlayer()函數使用一個參考圖層來指定位置,新圖層将會添加在指定參考圖層的上方或下方。因為insertlayer()函數需要使用參考圖層,是以不能對空資料框使用該函數。如圖2-7所示,“district_crime_join”是參考圖層,“school_districts”是将要添加的圖層,使用insertlayer()函數可以把“school_districts”圖層添加到“district_crime_join”圖層的上方或下方。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.9 插入圖層到地圖文檔

2.9.2 操作方法**

下面按步驟介紹如何使用insertlayer()函數把圖層插入到資料框中。

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

(2)單擊arcmap“标準”工具條上的“python”按鈕。

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

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

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

(6)定義參考圖層。

(7)定義相對于參考圖層的插入圖層。

(8)将圖層插入到資料框中。

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

(10)運作代碼。“crimes2009”要素類作為一個圖層添加到資料框中,如圖2-8所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.9 插入圖層到地圖文檔

2.9.3 工作原理

首先,導入arcpy.mapping子產品,擷取對目前的地圖文檔檔案和crime資料框的引用。接着,定義參考圖層,通過調用listlayers()函數,傳入“burglaries*”通配符參數和crime資料框參數來限制傳回的圖層清單,使圖層清單中隻包含“burglaries in 2009”圖層這一項元素;使用0索引值來檢索python清單中的第1個圖層,并把該圖層指派給圖層對象(reflayer)。然後,定義插入圖層,引用cityofsanantonio地理資料庫中的“crimes2009”要素類,将其指派給新的圖層對象(insertlayer)。最後,調用insertlayer()函數,傳入資料框、參考圖層、插入圖層和before(表明插入的圖層置于參考圖層的上方)4個參數。結果如圖2-9所示。

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.9 插入圖層到地圖文檔

2.9.4 拓展

圖層在資料框或圖層組中的位置是可以改變的。movelayer()函數提供了在資料框或圖層組中移動圖層位置的功能,但是圖層的移動隻能在同一個資料框内,而不能把一個資料框中的圖層移動到另一個資料框中。同insertlayer()函數一樣,movelayer()函數需要引用參考圖層來改變圖層的位置。