由于种种原因,可能涉及到要对ArcGIS属性字段进行合并、分割、提取等操作,我们可以在Excel中进行运算,然后连接到ArcGIS中,这里主要介绍下通过属性表字段计算器的操作方法。
目标
① 合并“名称”、“代码”字段内容到新建字段“用地”,中间以“-”字符连接。
② 以“-”为界,拆分“用地”字段分别到新建字段“名称2”和“代码2”。
说明
ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python,这里也分别进行操作一下。
01字段的合并操作
① 添加字段,取名“用地”,类型设置为“文本”。
② 方法一:在“用地”字段上右键,选择“字段计算器”;解析程序选择“VB脚本”,输入框输入:[名称] & "-" & [代码],点击确定。
③ 方法二:在“用地”字段上右键,选择“字段计算器”;解析程序选择“Python”,输入框输入:!名称! + "-" + !代码!,点击确定。
解释
① 在VBScript中,字符串之间的连接使用“&”运算符;
② 在Python中,字符串之间的连接使用“+”运算符;
③ 在ArcMap的字段计算器里,VBScript语句中字段用[field_Name]的样式输入,Python语句中字段用!field_Name!的样式输入。
02基于字符顺序进行分割提取操作
①添加两个字段,分别取名“名称2”和“代码2”,类型设置为“文本”。
②方法一:在“名称2”字段上右键,选择“字段计算器”;解析程序选择“VB脚本”,输入框输入:Left( [用地] , 2 ),点击确定;同理,“代码2”输入VB代码为:Right( [用地] , 4 )。
③方法二:在“用地2”字段上右键,选择“字段计算器”;解析程序选择“Python”,输入框输入:!用地![:2],点击确定;同理,“代码2”输入Python代码为:!用地![-4:]。
解释
① 所有符号一定使用英文半角。
② VBScript字符串函数:Left 函数和Right 函数。
Left 函数:返回一个包含自字符串左侧起指定数量字符的变量(字符串型)。(获取字段前n个字符)
Right 函数:返回一个包含自字符串右侧起指定数量字符的变量(字符串型)。(获取字段后n个字符)
③ 在 Python 中,字符串字段中的字符可以通过索引和分割操作进行访问。索引操作将在索引位置提取字符,而分割操作则会提取一组字符。
在Python 中,通过“[]”操作符获取字符串中字符,通过“[ : ]”截取字符串中的一部分。例如已知a字段的值为字符串 "Hello",a[1]即为'e',a[1:4]即为'ell'。
03基于特定字符进行提取分割有时候字段的字符串结构并不统一规整,如“林地-03”与“设施农用地-0501”,这时候用以上方法提取字段就行不通了。这里,我们可以利用字符串中共有的特定字符“-”来分割。
操作
① 添加两个字段,名称根据情况自取,这里分别取名“名称2”和“代码2”,数据类型设置为“文本”。
②方法一:在“名称2”字段上右键,选择“字段计算器”;解析程序选择“VB脚本”,输入框输入:Left( [用地],InStr( [用地],"-" ) -1),点击确定;“代码2”输入VB代码为:Mid( [用地],InStr( [用地],"-" )+1 )。
③方法二:在“用地2”字段上右键,选择“字段计算器”;解析程序选择“Python”,输入框输入:!用地![: !用地! .index("-")],点击确定;同理,“代码2”输入Python代码为:!用地![ !用地! .index("-")+1:]。
解释
① Mid 函数:返回一个包含字符串中指定数量字符的变量(字符串型)。
MID(text, start_num, num_chars)
start_num:必选,从左起第几位开始截取。
num_chars:VB语言中可选,如果省略,将指定为从Start参数位置开始向右到字符串结尾的所有字符数。
② InStr 函数:返回指定了一个字符串在另一个字符串中首次出现的位置的变量(长整型)。
③ index( ):在python语言中检测选择字符是否包含在指定范围内,如果是返回该字符开始出现的索引值。