計算欄位 (資料管理)
ArcGIS 10 匯總
為要素類、要素圖層或柵格目錄計算欄位的值。
查看計算欄位工具的使用樣本
用法
Python 運算式可通過 幾何對象中的屬性(type、extent、centroid、firstPoint、lastPoint、area、length、isMultipart 和 partCount)進行建立。
!shape.area!
Python 運算式可以使用具有面積或線性單位的幾何 area 和 length 屬性將值轉換為不同的測量單位(例如 !shape.length@kilometers!)。如果資料存放區在地理座標系中且具有線性單位(例如英裡),則使用測地線演算法計算長度。在地理資料中使用面積單位會產生不正確的結果,這是由於沿 globe 的十進位度並不一致。
- 面積測量單位關鍵字:
- 英畝 | 公畝 | 公頃 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方千米 | 平方米 | 平方英裡 | 平方毫米 | 平方碼 | 平方地圖單位 | 未知
- 線性測量單位關鍵字:
- 厘米 | 十進位度 | 分米 | 英尺 | 英寸 | 千米 | 米 | 英裡 | 毫米 | 海裡 | 磅 | 未知 | 碼
在工具對話方塊中,可將運算式直接輸入到運算式參數中,或者使用“欄位計算機”以互動方式構建運算式。
使用所選要素集(如從建立要素圖層或按屬性選擇圖層內的查詢中建立的要素集)時,此工具將只更新所選的記錄。
每次操作僅能對一個欄位應用計算。
現有欄位值將被覆蓋。如果想要保留原始欄位值,應建立輸入表副本
對於 Python 計算,必須在欄位名稱兩旁添加驚歎號(!欄位名!)。
對於 VB 計算,欄位名稱必須用方括弧括起([欄位名])。
計算文本或字元欄位的字串時,在對話方塊中,必須對字串添加雙引號("字串"),而在指令碼中,還必須對加雙引號的字串添加單引號('"字串"')。
此工具也可用於更新字元項。應對使用字串的運算式添加單引號(例如 [CHARITEM] = ‘新字串')。但是,如果字串已包含單引號,則要對該字串添加雙引號,例如 [CHARITEM] = "類型'A'"。
要計算數值欄位,可在運算式參數中輸入數值;值的兩旁無需加引號。
如果已指定 Python 運算式,則此工具支援 arcgis.rand() 函數。已為 ArcGIS 工具建立 arcgis.rand() 函數,不應將此函數與 Python Rand() 函數相混淆。arcgis.rand() 函數的可用分布的文法在隨機值的分布文法中進行介紹。
運算式與代碼塊會相互串連。代碼塊必須返回與運算式的關聯;代碼塊的結果應傳入到運算式中。
代碼塊參數可用於建立複雜運算式。您可以在對話方塊中直接輸入代碼塊,或在指令碼中將代碼塊作為連續字串輸入。
Python 數學模組及格式可供代碼塊參數使用。您可以匯入附加模組。數學模組可提供數論函數與表達函數、冪函數與對數函數、三角函數、角度轉換函式、雙曲函數以及數學常數。要瞭解更多有關數學模組的內容,請參閱 Python 的協助。
儲存的 ArcGIS 先前版本的 VB .cal 檔案可以直接使用或者只需做少量修改後即可使用。如果擁有使用 ArcObjects 的過去版本的 VBA 代碼,則計算需經過修改後才能用於 10.0。
計算串連資料時,您無法直接計算串連列。然而,您可以直接計算源表的列。要計算串連資料,必須先將串連表或串連圖層添加至 ArcMap。然後可以分別對此資料執行計算。這些更改將反映在串連列中。
- 計算欄位樣本
文法CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
參數 |
說明 |
資料類型 |
in_table |
此表包含將通過新的計算進行更新的欄位。 |
Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
field |
將通過新的計算進行更新的欄位。 |
Field |
expression |
使用簡單計算運算式建立的值將用於填充所選行。 |
SQL Expression |
expression_type(可選) |
指定要使用的運算式的類型。
- VB —運算式將使用標準 VB 格式編寫。這是預設設定。
- PYTHON —運算式將使用標準 Python 格式編寫。地理處理器方法和屬性的使用與建立 9.2 版地理處理器相同。
- PYTHON_9.3 —運算式將使用標準 Python 格式編寫。地理處理器方法和屬性的使用與建立 9.3 版地理處理器相同。
|
String |
code_block(可選) |
允許為複雜運算式輸入代碼塊。 |
String |
程式碼範例CalculateField 樣本(Python 視窗)
以下 Python 視窗指令碼示範了如何在立即模式下使用 CalculateField 函數。
import arcpyfrom arcpy import envenv.workspace = "C:/data"arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", '!VEG_TYPE!.split(" ")[-1]', "PYTHON")
CalculateField 樣本:計算質心
使用 CalculateField 將質心值分配給新欄位。
# Name: CalculateField_Centroids.py# Description: Use CalculateField to assign centroid values to new fields # Import system modulesimport arcpyfrom arcpy import envtry: # Set environment settings env.workspace = "C:/data/airport.gdb" # Set local variables inFeatures = "parcels" fieldName1 = "xCentroid" fieldName2 = "yCentroid" fieldPrecision = 18 fieldScale = 11 # Expressions are calculated using the Shape Field's geometry property expression1 = "float(!SHAPE.CENTROID!.split()[0])" expression2 = "float(!SHAPE.CENTROID!.split()[1])" # Execute AddField arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", fieldPrecision, fieldScale) arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", fieldPrecision, fieldScale) # Execute CalculateField arcpy.CalculateField_management(inFeatures, fieldName1, expression1, "PYTHON") arcpy.CalculateField_management(inFeatures, fieldName2, expression2, "PYTHON")except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message
CalculateField 樣本:計算範圍
使用具有代碼塊的 CalculateField 計算基於範圍的值。
# Name: CalculateField_Ranges.py# Description: Use CalculateField with a codeblock to calculate values# based on ranges # Import system modulesimport arcpyfrom arcpy import env # Set environment settingsenv.workspace = "C:/data/airport.gdb" # Set local variablesinTable = "parcels"fieldName = "areaclass"expression = "getClass(float(!SHAPE.area!))"codeblock = """def getClass(area): if area <= 1000: return 1 if area > 1000 and area <= 10000: return 2 else: return 3""" # Execute AddFieldarcpy.AddField_management(inTable, fieldName, "SHORT") # Execute CalculateField arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON", codeblock)
CalculateField 樣本:計算隨機值
使用 CalculateField 將隨機值分配給新欄位。
# Name: CalculateField_Random.py# Description: Use CalculateField to assign random values to a new field # Import system modulesimport arcpyfrom arcpy import env # Set environment settingsenv.workspace = "C:/data/airport.gdb" # Set local variablesinFeatures = "parcels"fieldName = "RndValue"expression = "arcgis.rand('Integer 0 10')" # Execute AddFieldarcpy.AddField_management(inFeatures, fieldName, "LONG") # Execute CalculateField arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON")
環境當前工作空間相關主題欄位工具集概述
著作權 1995-2011 Esri. 著作權所有,並保留一切權利。
來自協助