ArcGIS字段计算器分割字段中的字符串
2017-07-07 18:44
190 查看
最近在整理植物数据,数据本来是以excel进行存储,但是其中涉及到要对字段进行分割,由于对excel的相关函数不熟悉于是想着能不能用arcgis的字段计算器进行解决,经过摸索成功地解决了自己遇到的问题,并记录下来,如下:
1、目的:用arcgis的字段计算器将字段基于特殊字符进行分割,并将分割后的数据保存在对应的新创建的字段中;
2、案例效果图:
(将OID编号为33的“桦木科鹅耳枥属”以“科”为特殊字符,分割成“桦木科”和“鹅耳枥属”,其它记录以此类推)
3、案例具体实现:
a、由于原始数据是保存在excel中,所以需要将excel数据添加到arcgis中,需要注意的是arcgis只能添加.xls格式的excel表,而不能添加.xlsx格式的excel表,后者会报“连接到数据库失败。出现基础数据库错误。没有注册类。”错误。截图如下:
当添加进.xls格式的数据表后,将其导出为arcgis自身支持的.dbf格式的数据,这样便于后期添加字段等操作。
b、在.dbf属性表中分别添加“ke”和"shu"两个字段,数据类型都设置为“文本”类型。
c、首先要从“分类”字段的记录中将形如“***科***属”记录的“***科”字符串部分分割出来。在“ke”字段上右键,在弹出的窗口中选择“字段计算器”;
d、在弹出的“字段计算器”中输入以下VB代码“Left( [分类] ,InStr( [分类] ,"科" ) )”,再点击确定,即可提取“***科”部分内容。
e、同理,在“shu”字段上右键,在弹出的窗口中选择“字段计算器”输入以下VB代码“Mid( [分类] ,InStr( [分类],"科" )+1)”,再点击确定,即可提取“***属”部分内容。
4、原理:
关于字段计算器中VB字符串函数的解释:
索引值 1 2 3 4 5 6 7 8
以:“安息香科安息香属”为例,代号为“a”
(1)、Left 函数:返回一个包含自字符串左侧起指定数量字符的变量(字符串型)。
(4)、InStr 函数:返回指定了一个字符串在另一个字符串中首次出现的位置的变量(长整型)。
(5)、Replace 函数:返回一个字符串,在该字符串中,指定的子串已替换为另外一个子串若干次(次数已指定)。
(7)、& 运算符:对两个表达式强制执行字符串串联。
5、扩展
例如:
(1)、将105°47‘24.42’‘E和28°36’32.40‘’N的经纬度数据分布分割成“***度”、“***分”和“***秒”可以使用上述分割方法,只需修改分割字符即可。
(2)、将“250x360x400”的长宽高数据分割成“长”、“宽”和“高”三个字段,可以采取类似的方法,如下:
(3)、案例:arcgis字段属性表清除字符串类型字段中的引号““”,如下图:
由于是采用VB脚本进行字段计算,所以需要用VB的标准对字段中的引号““”进行处理,在VB中用两个双引号转义表示字符串内容中的一个双引号。
依据此方法成功清除了字段中的引号。
6、参考资料:
http://www.cnblogs.com/dongteng/p/6581137.html //ArcGIS字段计算器分割字段中的字符串
1、目的:用arcgis的字段计算器将字段基于特殊字符进行分割,并将分割后的数据保存在对应的新创建的字段中;
2、案例效果图:
(将OID编号为33的“桦木科鹅耳枥属”以“科”为特殊字符,分割成“桦木科”和“鹅耳枥属”,其它记录以此类推)
3、案例具体实现:
a、由于原始数据是保存在excel中,所以需要将excel数据添加到arcgis中,需要注意的是arcgis只能添加.xls格式的excel表,而不能添加.xlsx格式的excel表,后者会报“连接到数据库失败。出现基础数据库错误。没有注册类。”错误。截图如下:
当添加进.xls格式的数据表后,将其导出为arcgis自身支持的.dbf格式的数据,这样便于后期添加字段等操作。
b、在.dbf属性表中分别添加“ke”和"shu"两个字段,数据类型都设置为“文本”类型。
c、首先要从“分类”字段的记录中将形如“***科***属”记录的“***科”字符串部分分割出来。在“ke”字段上右键,在弹出的窗口中选择“字段计算器”;
d、在弹出的“字段计算器”中输入以下VB代码“Left( [分类] ,InStr( [分类] ,"科" ) )”,再点击确定,即可提取“***科”部分内容。
e、同理,在“shu”字段上右键,在弹出的窗口中选择“字段计算器”输入以下VB代码“Mid( [分类] ,InStr( [分类],"科" )+1)”,再点击确定,即可提取“***属”部分内容。
4、原理:
关于字段计算器中VB字符串函数的解释:
索引值 1 2 3 4 5 6 7 8
以:“安息香科安息香属”为例,代号为“a”
(1)、Left 函数:返回一个包含自字符串左侧起指定数量字符的变量(字符串型)。
MyStr = Left(a, 1) 输出结果:安(2)、Right 函数:返回一个包含自字符串右侧起指定数量字符的变量(字符串型)。
MyStr = Right(a, 1) 输出结果:属(3)、Mid 函数:返回一个包含字符串中指定数量字符的变量(字符串型)。
MidWords = Mid(a, 5) 输出结果:安息香属
(4)、InStr 函数:返回指定了一个字符串在另一个字符串中首次出现的位置的变量(长整型)。
MyPosition = InStr(a, "科") 输出结果:4
(5)、Replace 函数:返回一个字符串,在该字符串中,指定的子串已替换为另外一个子串若干次(次数已指定)。
NewString = Replace(a, "科", "种") 输出结果:安息香种安息香属(6)、Chr 函数:返回一个包含与指定字符代码关联的字符的字符串。
(7)、& 运算符:对两个表达式强制执行字符串串联。
picdir= [pic] + [id] +".jpg" 输出结果:如下图
(8)、其它,如下:
like '%省道%' 查询字段中具有“省道”的字样,部分具有也行 Left( [RoadNum],4 ) 保留字段前四个字符 "S"+Left( [NAME],3 ) EG:201省道 -》》 S201 LTrim([NAME]) 清除字段左边的空格 RTrim([NAME]) 清除字段右边的空格 Left([NAME],2) 获取字段前两个字符 Right([NAME],2) 获取字段后两个字符 Replace([NAME],Left([NAME],3),"") 将字段前三个字符清除 Replace( [SEC_ID] ,Left( [SEC_ID],4 ),"B480")
5、扩展
例如:
(1)、将105°47‘24.42’‘E和28°36’32.40‘’N的经纬度数据分布分割成“***度”、“***分”和“***秒”可以使用上述分割方法,只需修改分割字符即可。
(2)、将“250x360x400”的长宽高数据分割成“长”、“宽”和“高”三个字段,可以采取类似的方法,如下:
用到VB脚本函数公式: 1、计算长度:Left( [field],InStr( [field],"x" )-1 ) 2、计算宽度:Left(Mid( [field],InStr( [field],"x" )+1 ),InStr( Mid( [field],InStr( [field],"x" )+1 ),"x" )-1) 3、计算高度:Mid(Mid( [field],InStr( [field],"x" )+2),InStr(Mid( [field],InStr( [field],"x" )+1),"x")) 其中field为对应的包含长宽高的字段 。
(3)、案例:arcgis字段属性表清除字符串类型字段中的引号““”,如下图:
由于是采用VB脚本进行字段计算,所以需要用VB的标准对字段中的引号““”进行处理,在VB中用两个双引号转义表示字符串内容中的一个双引号。
依据此方法成功清除了字段中的引号。
6、参考资料:
http://www.cnblogs.com/dongteng/p/6581137.html //ArcGIS字段计算器分割字段中的字符串
相关文章推荐
- ArcGIS字段计算器分割字段中的字符串
- SQL Server 分割某表中的字符串字段
- 将逗号分割的clob字段转化为varchar,并将字符串拆分为多行
- Oracle 把字符串分割后保存到Table的一个字段中
- 字符串截取。去掉拼凑字段后面的分割符号。
- oracle: 分割字符串,或者查找字段里面的关键字(关键字1,关键字2,关键字3)
- sql2000中ntext字段字符串分割函数
- 标题两行,但是只有一个字段,字符串分割,asp
- oracle sql查询字段中以“;”分割的字符串,转化成对应的,以“;”分割的文字串
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 使用Linq时,根据特定的字符串名称,找到对应字段并获取值
- Java中split()分割字符串时对特殊符号的处理
- SQL分割字符串取对应段空格前一部分
- 嵌入式 字符串分割(切分):strtok()与strsep()
- 在数据库中使用表值函数分割字符串
- C++字符串分割和C语言常用格式控制
- C#实现多个字符分割字符串的方法
- javascript 字符串分割split()
- Delphi分割字符串的函数
- JAVA分割字符串的方法需要注意的!转义字符