天天看點

《基于ArcGIS的Python程式設計秘笈(第2版)》——2.2 引用目前的地圖文檔

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

在arcgis python視窗或自定義的腳本工具中運作地理處理腳本時,經常需要引用目前加載在arcmap中的地圖文檔。通常來講,在對地圖文檔中的圖層和表執行地理處理操作之前,需要引用目前的地圖文檔。本節将介紹如何在python地理處理腳本中引用目前的地圖文檔。

2.2.1 準備工作

在對地圖文檔執行任何操作之前,都需要先在python腳本中引用地圖文檔,可以通過調用arcpy.mapping子產品中的mapdocument()函數來實作。引用地圖文檔的途徑有兩種:一是引用arcmap中目前活動的文檔;二是引用磁盤中特定位置的文檔。使用current關鍵字作為mapdocument()函數的參數,就可以加載arcmap中目前活動的地圖文檔,如下列代碼所示。

提示: 

隻有在arcgis的python視窗或arctoolbox的自定義腳本工具中運作腳本時,才可以使用current關鍵字。如果在idle或其他開發環境中運作腳本時使用current關鍵字,則無法通路目前加載在arcgis中的地圖文檔。需要指出的是,current關鍵字不區分大小寫,是以也可以使用“current”。

引用本地或網絡驅動器上的地圖文檔,隻需提供地圖文檔的路徑和名稱作為mapdocument()函數的參數。例如,要引用c:data檔案夾中的crime.mxd檔案,代碼為:arcpy.mapping.mapdocument("c:/data/crime.mxd")。

2.2.2 操作方法

下面按步驟介紹如何引用arcmap中目前活動的地圖文檔。

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

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

(3)在“python”視窗中鍵入如下代碼,導入arcpy.mapping子產品。這裡将arcpy.mapping子產品指派給mapping變量,就可以不需要在所有代碼中都以arcpy.mapping為字首,而隻需要引用mapping代替arcpy.mapping即可。這不僅使代碼更容易閱讀,而且減少了代碼的編寫量。本書後面的小節也使用這種方法。雖然并沒有要求一定要使用這種方式,但它确實可以使代碼的編寫更加簡潔高效。此外,可以按個人意願為這個變量命名,例如命名為map、mp或其他任何合理的名字。

(4)在上一步添加的第一行代碼下鍵入如下代碼,可引用目前活動的地圖文檔(crime_ch2.mxd),把該引用指派給變量。

(5)設定地圖文檔标題。

(6)使用saveacopy()方法儲存地圖文檔檔案的副本。

(7)單擊“file | map document properties”,可以檢視地圖文檔的新标題。

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

2.2.3 工作原理

mapdocument類有建立該類執行個體的構造函數。在面向對象程式設計中,執行個體也叫對象。mapdocument的構造函數既接受current關鍵字,也接受本地或網絡驅動器上的地圖文檔檔案的路徑。首先使用構造函數建立一個對象,并把它指派給mxd變量。然後可以使用點記法通路該對象的屬性和方法。在本例中,使用mapdocument.title屬性輸出地圖文檔檔案的标題,并使用mapdocument.saveacopy()方法儲存地圖文檔檔案的副本。