圖斑整理之字段計算器使用技巧


  1. 字段計算器簡介

在數據整理過程中經常要用到對屬性表的處理,即為字段進行賦值或運算。字段計算器(Field Calculator)是一個強大的處理字段值的工具,不僅可以實現快速批量賦值,還支持Python和VBScript,可以通過代碼進行復雜條件的賦值工作,並且字段計算器還可以在Model Builder中調用,構建空間模型。

 

在某個屬性字段的右鍵菜單中即可調出字段計算器,在該界面中即可對該字段進行統一批量賦值,如果勾選Show Codeblock可以編寫代碼實現條件賦值、復雜計算或是幾何體的計算。下面我們就以國土行業的圖斑數據整理為例,看看靈活而強大字段計算器是如何應用的。

2. 應用實例

已有的圖斑數據的屬性表如下,兩個字段分別代表二級地類的編碼(DLBM)和名稱(DLMC)。

 

  • 截取拼接字符串

問題描述:從已有的DLBM(二級地類編碼)中提取一級地類的編碼,由於前兩位即是一級地類編碼,我們可以通過字符串的截取來實現

解決方法:創建字段YJDL,在字段計算器內選擇Python,輸入!DLBM![0:2]

注:Python中對字符串的處理非常簡單,直接通過下標位置的索引來提取,拼接字符串則可使用加號來連接字段即可。

  • 條件賦值

問題描述:根據一級地類的代碼為其增加具體描述信息

解決方法:創建字段YJDLMC(一級地類名稱),勾選Show Codeblock,根據YJDL的代碼為其賦值,在YJDLMC=下面輸入CalDLMC(!YJDL!),在上面的Pre-Logic Script Code空白處輸入代碼如下:

   def CalDLMC(code):

     if(code==’01’):

       return “耕地”

     elif(code==’02’):

       return “園地”

     else:

       return “”

  • 為重復記錄進行編號

問題描述:將同一地類圖斑自動編號(標記重復記錄),例如根據DLBM字段,把具有相同值的記錄標出來,並且按照從小到大的排序自動增加一個編號,實現如下效果:

 

解決方法:增加DLCOUNT字段,計算每種用地類型有多少塊,即同類型的DLBM按順序從1開始賦值,勾選Show Codeblock,編寫代碼:

UniqueDict = {}

def isDuplicateIndex(inValue):

   UniqueDict.setdefault(inValue,0)

   UniqueDict[inValue] += 1

   return str(UniqueDict[inValue])

  • 計算幾何體信息

計算圖斑面積:!Shape.Area!

質心X坐標:!Shape.CENTROID.X!

質心Y坐標:!Shape.CENTROID.Y!

  • 字段間運算

在上一步計算得到的面積基礎上進行單位轉換,如將平方米轉換為平方公里

!Area! /1000000

  • 順序賦值,即為每條記錄進行唯一值編號

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM