很久沒有更新專欄了,趁著五一勞動節,剛好有時間「勞動」一下,更新一下專欄的文章。接下來的文章是關於在ArcMap中的欄位計算器中使用Python腳本;欄位計算器中可以使用的腳本有兩種,分別是Python和VB腳本;本文主要介紹的是Python腳本的使用。

本文實現的功能主要是根據地類編碼欄位值,給地類名稱欄位賦上對應的地類名稱;整個處理的邏輯很簡單,就是通過判斷語句,判斷地類編碼欄位值,然後給地類名稱欄位填上對應的名稱即可;地類編碼有很多,這裡的代碼只是通過舉例,只列出其中的幾個,只要按照下面的代碼格式,根據地類編碼和地類名稱對應表填寫完所有的地類代碼和名稱即可使功能完整,實現所有地類名稱的填充。

部分地類編碼與地類名稱對應表

主要代碼如下:

def fillDLMC(DLBMField):
if DLBMField==u1201:
return u空閑地
elif DLBMField==u0701:
return u城鎮住宅用地
elif DLBMField==u1108:
return 沼澤地
else:
return ""

這段代碼的參數 DLBMField 代表每個地類要素的地類編碼值,如果地類編碼為"1201",則返回地類名稱"空閑地" ;如果地類編碼為"0701",則返回地類名稱"城鎮住宅用地";…………。代碼中"if DLBMField==u1201"地類編碼前使用u進行標識就是告訴python後面的字元1201是unicode編碼。

這個代碼編寫完成後,把這個代碼複製到欄位計算器工具中的【預邏輯腳本代碼】窗口中,然後在賦值窗口中引用腳本代碼函數 fillDLMC(!DLBM!);這裡的DLBM是地類編碼欄位名稱,這裡的 !DLBM! 表示獲取地類編碼欄位的欄位值。最後的函數引用: DLMC = fillDLMC(!DLBM!) 就是獲取到地類編碼對應的欄位名稱然後返回賦值給DLMC欄位。

欄位計算器中使用python腳本要設置的地方有三個:一個是選擇解析程序,另一個是複製相關的處理代碼到邏輯腳本代碼參數;最後一個就是函數的引用。如下圖所示。

欄位計算前工具相關參數設置

這個欄位計算器運行成功後,可以通過點擊【保存】按鈕把上面的設置的相關參數保存到本地文件中;下次要進行同樣的欄位計算時,就可以利用【載入】按鈕把相關的參數載入進來,達到重用的效果。

這個欄位計算器運行前的圖層屬性表如下:

欄位計算器運行前屬性表

欄位計算器運行後,圖層屬性表如下圖,可以看到DLMC欄位的被填充上對應的地類名稱。

欄位計算器運行後的結果

總結

1、欄位計算器中使用python腳本跟以往的通過Python製作腳本工具有些不一樣;主要是理解函數兩邊加上 !號的處理。在欄位計算器中使用python腳本的詳細內容可以參考ESRI的官方幫助文檔。

2、在python腳本中,欄位值出現中文的情況,有可能會出現亂碼或者其他預想不到的問題,這時就是要根據具體的情況進行處理;例如這裡就是在欄位值前加標識 u 。

3、本文只是實現了簡單的一個需求;如果熟悉掌握在欄位計算器中使用python腳本,對於圖層屬性表的操作就會變得非常簡單且高效。

推薦閱讀:

相關文章