1. 啟動方式與編輯狀態(tài)影響
①右鍵字段表頭選擇"字段計算器" 或使用工具箱"計算字段"工具
②非編輯狀態(tài)下計算結(jié)果不可撤銷,建議重要數(shù)據(jù)先備份
2. 腳本語言版本差異
①ArcMap支持VBScript/Python,Pro僅支持Python/Arcade
②VB字段名用[中括號],Python用!嘆號!包裹字段名(需半角符號)
3. 語法規(guī)范與排錯技巧
①VB字符串用雙引號,Python可用單/雙引號(需成對出現(xiàn))
②Python嚴(yán)格區(qū)分大小寫,字符數(shù)字連接需str()轉(zhuǎn)換
③出現(xiàn)錯誤時,粘貼代碼到記事本檢查半角符號/引號配對
4. 特殊符號與運算規(guī)則
①字段計算器自帶"="號,腳本中無需重復(fù)添加
②VB用"&"連接字符串與數(shù)字,Python用"+"但需類型統(tǒng)一
③涉及NULL值的運算結(jié)果恒為NULL(包括字符串拼接)
5. 空值處理注意事項
①任何字段含NULL的數(shù)學(xué)運算返回NULL
②字符串長度計算時NULL≠0,需先進(jìn)行非空判斷
③日期/數(shù)值字段建議設(shè)置默認(rèn)值避免空值問題
附:典型示例對照表
操作類型
VB語法示例
Python語法示例
截取字符串
Left([CODE],4)
!CODE![:4]
替換字符
Replace([NAME],"A","B")
!NAME!.replace('A','B')
類型轉(zhuǎn)換
CStr([ID])
str(!ID!)
保留小數(shù)
Round([AREA],2)
round(!AREA!,2)
15個例子
例 1:取字段 ZLDWDM 的前 9 位,使用 VB 腳本可以輸入:left([ZLDWDM],9),也可以輸入:Mid([ZLDWDM],1,9),前者 left 是從左邊取 9 位,后者 Mid 是從 1 位開始(VB 最小從 1 開始)取 9 位,而 right 函數(shù)則是從右邊開始取;如使用 Python 腳本,則輸入:!ZLDWDM![0 :9],意思是從 0 開始(Python 最小從 0 開始)的 9 位,如果輸入:!ZLDWDM![9:],則表示取該段從 10 位開始到結(jié)束 (最小是 0),如果輸入:!ZLDWDM![-3:],表示從字段值得右邊取 3 位。
例 2:空值,什么也沒有,不等于字符串為空,VB 語法是 null,不區(qū)分大小寫;Python 語法是 None,嚴(yán)格區(qū)分大小寫。
例 3:替換操作。如需將 0 替換為 1,使用 VB 語法時應(yīng)輸入:Replace([ZLDWDM],"0","1");而使用 Python 語法時,應(yīng)輸入的函數(shù)表達(dá)式應(yīng)為:!ZLDWDM!.replace("0","1")。
例 4:面積字段保留一位小數(shù),VB 語法是 round( [SHAPE_Area],1),Python 語法是 round (!SHAPE_Area!,1),這里 VB 和 Python 函數(shù)一致。
例 5:獲得字符串長度,如獲得“DLMC”字段長度,使用 VB 時的語法是 Len([DLMC]),使用 Python 時語法是 len(!DLMC!),這里 VB 和 Python 函數(shù)一致。
例 6:日期更新。如需將一個日期型字段的值更新為“2018 年 8 月 31 日”,使用 VB 時語法是 CDate("2018-8-31"),而使用 Python 時的語法是 datetime.datetime(2018,8,31)。注意不能輸入為:datetime.datetime(2018,08,31),8 前面不能加 0。
例 7:計算面積只能使用 Python 語法,寫法是:!shape.area!,也可以為大寫:!SHAPE.AREA!,這 個面積是平面面積。計算幾何對象的平面面積,空間數(shù)據(jù)的坐標(biāo)系必須是投影坐標(biāo)系。
例 8:橢球面積計算,只能使用 Python 語法:!shape.geodesicArea!,數(shù)據(jù)可以是地理坐標(biāo)系,也 可以是投影坐標(biāo)系。
例 9:獲得多部件要素,即一個空間對象由多部分組成,可以對其進(jìn)行分解,但不是中間帶孔的 圖形,此時只能使用 Python 語法,可輸入:!shape.partcount!,如結(jié)果大于 1,表示該記錄就是多部件。
例10:條件判斷(Python)
Python腳本判斷面積是否大于1000:!SHAPE_Area! > 1000
返回布爾值
或帶條件賦值:"大圖斑" if !SHAPE_Area! > 1000 else "小圖斑"
例11:數(shù)學(xué)運算(VB)
計算兩字段差值:[FieldA] - [FieldB]
計算比例(結(jié)果保留百分比):Round(([FieldA]/[FieldB])*100, 2) & "%"
例12:類型轉(zhuǎn)換(Python)
字符串轉(zhuǎn)浮點數(shù):float(!TEXT_FIELD!.replace(",",""))
數(shù)字轉(zhuǎn)文本:str(!NUM_FIELD!) + "平方米"
例13:幾何計算(Python)
獲取要素周長:!shape.length!
計算要素中心點坐標(biāo):!shape.centroid.X! + "," + !shape.centroid.Y!
例14:隨機數(shù)生成(Python)
生成1-100隨機整數(shù):import random; random.randint(1,100)
生成范圍隨機小數(shù):round(random.uniform(10.5, 20.5), 2)
例15:字段拼接(VB/Python)
VB拼接字段:[省名] & [市名] & [區(qū)名]
Python拼接帶分隔符:!省名! + "-" + !市名! + "-" + !區(qū)名!
使用要點補充:
批量更新時建議先備份數(shù)據(jù)
處理大數(shù)據(jù)時使用"計算字段"工具比交互式計算更穩(wěn)定
Python腳本換行需用反斜杠\ 或括號包裹
處理中文路徑可能導(dǎo)致腳本錯誤,建議使用英文路徑
涉及幾何計算時確保要素類已建立空間索引
計算前可用
arcpy.CalculateField_management
測試腳本語法
文 章部分內(nèi) 容來 源 GISAI
如有侵權(quán)請聯(lián)系刪除
聯(lián)系/合作: 微信 214979525
測繪行業(yè)服務(wù)平臺
產(chǎn)品目錄
住建部技工證《測量放線工》
中建協(xié)八大員《測量員》《施工員》
交通運輸部《公路工程測量員》
水利八大員《施工員》《質(zhì)檢員》
工信部人才中心《地理信息技術(shù)應(yīng)用》
技師/高級技師《工程測量員》 福州
2025注冊測繪師 視頻課件
備考習(xí)題APP,金考典
注冊測繪師 繼續(xù)教育抵充學(xué)時 課程
民航局 CAAC 執(zhí)照,全國均有考點
AOPA 飛手證(三類、四類)
代理申報《無人機運營合格證》
空域申請 代理服務(wù),讓飛行安全合法
CORS:華測、移動、全國賬號
幫您推廣:社 群公眾號
中專學(xué)歷提升《建筑工程》多個專業(yè)
智慧工程研究會《社會穩(wěn)定風(fēng)險評估》
實操教學(xué):工程測量、航測 等(成都)
往期干貨精選
中測網(wǎng)對話框,發(fā)送【關(guān)鍵詞】即可獲取
【規(guī)范】測量規(guī)范、常用Excel表格
【定額】測繪生產(chǎn)成本定額、勘察收費
【資質(zhì)】測繪資質(zhì)查詢 /申辦、甲級名單
【GIS】ArcGIS /MapGIS技巧、快捷鍵
【航測】無人機航測流程、規(guī)范、案例
【地圖】奧維/谷歌地圖 shp矢量數(shù)據(jù)
【CASS】快捷鍵、高手技巧、操作視頻
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.