技术标签: ArcGIS Desktop
最近在整理植物数据,数据本来是以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 函数:返回一个包含自字符串左侧起指定数量字符的变量(字符串型)。
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字段计算器分割字段中的字符串
文章浏览阅读3.8k次。#问题描述insert into …普通的插入语句,经常出现耗时2s以上#数据状态1.表数据量大,每天产生200万条数据2.高并发插入#问题解决1.由于表中数据量庞大,建议数据归档处理,冷热处理2.表中有过多索引,当数据insert时,索引会重排产生太多的io操作。导致缓慢,有必然要的只保留主键。3.表的数据库引擎,默认InnerDB,若数据不重要,可以使用MyISAM......
文章浏览阅读3.6k次。需求背景EasyDarwin开发团队维护EasyDarwin开源流媒体服务器也已经很多年了,之前也陆陆续续尝试过很多种服务端录像的方案,有:在EasyDarwin中直接解析收到的RTP包,重新组包录像;也有:在EasyDarwin中新增一个RecordModule,再以RTSPClient的方式请求127.0.0.1自己的直播流录像,但这些始终都没有成气候;我们的想法是能够让整套EasyDarwin_开源录播系统
文章浏览阅读1.1w次。今天碰到一个执行语句等了半天没有执行:delete table XXX where ......,但是在select 的时候没问题。后来发现是在执行select * from XXX for update 的时候没有commit,oracle将该记录锁住了。可以通过以下办法解决: 先查询锁定记录 Sql代码 SELECT s.sid, s.seri_oracle delete update 锁表问题
文章浏览阅读3.4k次。报错信息error:Undefined symbol: typeinfo for sdk::IConfigUndefined symbol: vtable for sdk::IConfig具体信息:Undefined symbols for architecture x86_64: "typeinfo for sdk::IConfig", referenced from: typeinfo for sdk::ConfigImpl in sdk.a(config_impl.o) _xcode undefined symbols:
文章浏览阅读249次。背景《承接上文,项目05(Mysql升级06Mysql5.6.51升级到Mysql5.7.32)》,写在前面需要(考虑)检查和测试的层面很多,不限于以下内容。参考文档https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.htmllink推荐阅读以上链接,因为对应以下问题,有详细的建议。官方文档:不得存在以下问题:0.不得有使用过时数据类型或功能的表。不支持就地升级到MySQL 8.0,如果表包含在预5.6.4格_mysql8.0.26 升级32
文章浏览阅读3.7k次。一.安装基本环境工具:1.安装git工具sudo apt install wget g++ git2.检查并安装java等环境工具2.1、执行下面安装命令#!/bin/bashsudoapt-get-yinstall--upgraderarunrarsudoapt-get-yinstall--upgradepython-pippython3-pip#aliyunsudoapt-get-yinstall--upgradeopenjdk..._高通8155 qnx 源码
文章浏览阅读179次。“增材制造是未来制造业的发展趋势,其优势显而易见,它可以实现传统加工工艺难以制造的设计,比如复杂薄壁结构、点阵结构、一体化结构等。其中,点阵结构作为一种新型的轻量化结构,具有良好的比刚度、比强度等力学性能。传统加工工艺很难制造点阵结构,3D打印技术的快速发展使得点阵结构的制造更加具有可行性。”本期谷.专栏列举了面向增材制造的点阵加筋一体化压力容器的设计与分析案例,仿真技术作为正向设计体系..._点阵结构的等效属性计算
文章浏览阅读5.9k次,点赞2次,收藏2次。由于国内用户IP被屏蔽的原因,安装广告屏蔽插件(uBlock Origin、AdGuard、AdBlocker、AdBlock For Firefox、AdBlock)访问受限,官方原因为“由于法律原因不可用(HTTP 451 Unavailable For Legal Reasons)”,需要另辟蹊径安装,以下是安装uBlock Origin的方法介绍。然后,在Firefox的扩展管理页面,打开【从文件安装附加组件】选项。选择刚才下载的.xpi文件,就可以成功安装了。_ublock origin插件
文章浏览阅读1.2k次。在容器化应用中,每个环境都要独立的打一个镜像再给镜像一个特有的tag,这很麻烦,这就要用到k8s原生的配置中心configMap就是用解决这个问题的。使用configMap部署应用。这里使用nginx来做示例,简单粗暴。直接用vim常见nginx的配置文件,用命令导入进去kubectl create cm nginx.conf --from-file=/home/nginx.conf然后查看kub..._pod mount目录会自动创建吗
文章浏览阅读169次。随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,高校各种管理系统层出不穷。高校作为学习知识和技术的高等学府,信息技术更加的成熟,为新生报到管理开发必要的系统,能够有效的提升管理效率。一直以来,新生报到一直没有进行系统化的管理,学生无法准确查询学院信息,高校也无法记录新生报名情况,由此提出开发基于微服务的分布式新生报到系统,管理报名信息,学生可以在线查询报名状态,节省时间,提高效率。_关于spring cloud的参考文献有啥
文章浏览阅读3.2k次。Public MustInherit Class Contact '只能作基类且不能实例化 Private mID As Guid = Guid.NewGuid Private mName As String Public Property ID() As Guid Get Return mID End Get_vb.net 继承多个接口
文章浏览阅读1.7k次。1.美图# 2.概述因为要上传我的所有仓库的包,希望nexus中已有的包,我不覆盖,没有的添加。所以想批量上传jar。3.方案1-脚本批量上传PS:nexus3.x版本只能通过脚本上传3.1 批量放入jar在mac目录下,新建一个文件夹repo,批量放入我们需要的本地库文件夹,并对文件夹授权(base) lcc@lcc nexus-3.22.0-02$ mkdir repo2..._nexus3 批量上传jar包 java代码