



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
地理国情监测云平台ArcGIS教程:删除重复的要素之-点大家在用数据的时候,经常会碰到有重复的点。此文做了一个归总,提供给需要的人员。1 使用ArcGIS工具,组合解决删除重复点思路:buffer merge explodemulti-part feature feature to point spatial join说明:重复点,在某个精度下很相近而可以认为是同一个点的点。这里所谓的删除重复点,其实是通过点做缓冲,构成面;然后把构成的面合并起来,这样,重复点或者近距离点所形成的面的边界就会消融而形成一个面;然后打散,把不相邻的面分散成独立的要素;最后,生成这些面的质心点,即为所求。1.1 Buffer对点层做缓冲,生成面这里有个重要的参数,就是缓冲距离,怎么定呢?可以参考数据精度;还可以用 Analysis tools proximity point distince算一下各点距离,找到认为不重复的点之间的最近距离,设置的缓冲距离应该比这个距离的一半要小。1.2 Merge这里说的Merge是编辑下的合并功能。Editor Starting editing 全选buffer后的面层,选择Merge,合并到一个空图班上。这一步的作用是将相邻过近,以至于重复的点形成的面的边界消掉,融合一起。1.3 ExplodeMulti-part Feature在Editor下拉菜单选择AdvancedEditing,调出高级编辑工具条。点击一下Merge后的面层,选择ExplodeMulti-part Feature。这一步的作用是将上一步生成的不相邻不重合而被融合在一起的多部件面给炸开,打散。1.4 Featureto pointArctoolbox data management toolsfeatures Features to points,生成打散后面的质心点。这样生成的点层,就达到了消除重复点的目的。1.5 SpatialJoin这一步,主要是把原始点层含的属性给带过来。可以点击图层,右键Join and Relates JoinJoindata from another layer based on spatial location,也可以从工具箱里analysistoolsoverlay spatial Join,位置关系匹配方式,可以选择closest。2 完全通过field Calculate实现思路:先将点的坐标按 x,y 的格式写入一个字段,然后对这个字段进行重复项检查。两步都是使用field Calculate,输入VBA的计算字符即可。2.1 计算x,y的格式的坐标串新建字段coordinate ,类型设置为text,长度默认50,右击该字段,选择field Calculate,点advanced,填入一下表达式:Dim Output As stringDim pPoint As IPointSet pPoint = ShapeOutput = pPoint.X& , & pPoint.Y2.2 找到重复的字符串新建字段Dup,类型设置为long integer,右键选field Calculate,在advanced的表达式框中填入:Static d As ObjectStatic i As LongDim iDup As IntegerDim sField-这里填写需要检查的字段名sField = coordinate-If (i = 0) ThenSet d =CreateObject(Scripting.Dictionary)End IfIf(d.Exists(CStr(sField) TheniDup = 1Elsed.Add CStr(sField), 1iDup = 0End Ifi = i + 1以下是原作者对上段代码的解释:这段代码的思路,就是在第一行的时候,新建了一个Scripting.Dictionary 这算是一个容器(存放二维数组)。当VBA脚本在每一行执行的时候,都会把该条记录的sField字段值放到容器里比较一下。如果容器里没有,那么就添加进去,与此同时,把标识符 iDup赋值为 0;如果该条记录的sField字段值容器里已经存在了,那么,标识符iDup赋值为1。依次循环,一直到记录结束。从思路里不难看出,不重复的,标记为0;重复值的第一条记录,会被标记为 0,剩下重复的都被标记为1.比如,该字段里有 4个A,A,A,A,第一个A,放到容器里一查,没有,那么把A放到容器里,该条记录标记为0,剩下的3个A,放到容器里查的时候,会发现已经存在了,会被标记为1。 从而达到查找和标记重复记录的目的。if(d.Exists(Str(sField) TheniDup=1这句话,就是说如果字段 sField的值在容器里已经存在了。Elsed.Add Cstr(sField),1iDup=0这里,说的是不存在,就添加进去。Scripting.Dictionary 这个容器存放的是二维数组,所以 d.add 后面跟着的2个参数。第一个参数是键,第二个参数是值。因为sField 已经不同了,所以后面那个值,可以是 1,也可以写2 或者其他。在字段计算器里,字段名是取了该行的字段值。2.3 挑选出Dup字段值为1的删掉即可2.4 思考这里可不可以删除在一定精度下不完全重复但是靠的很近的点呢?可以在把坐标写入字段的时候控制一下,用format 函数规定好xy坐标输出的小数位数。3 selectby attributes属性查询思路:如果数据是Geodatabase(mdb或gdb)格式,可考虑用SQL语句查询点x、y值相同的记录,并进行删除。3.1 计算点x、y坐标值Data Management ToolsFeaturesAdd XYCoordinates工具,为点数据计算x、y坐标值,结果会在属性表中生成POINT_X和POINT_Y两个字段。3.2 SQL语句查询坐标值相同的点在select by attributes窗口里输入:OBJECTIDnot in (select max(OBJECTID) from 图层名 group by point_x,point_y)。选中的要素删掉即可。4 DeleteIdentical工具此工具是ArcGIS10新推出的工具,可以删除重复的要素。Filed里勾上通过AddXY Coordinates工具计算的x、y坐标值,通过比较重复坐标值的要素,将其删除。用之前,可用Find Identical工具查找有无重复的点。 Delete Identical工具也可以选择用shape字段进行比较,并可以设置XY Tolerance来查找非常近的点。但是执行效果不佳,不知ArcGIS10.1有无改进。5 Di
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不正当竞争行为的法律后果
- 算法交易对股市的影响研究
- 2025年编程原理试题及答案
- 奇葩语文拼音题目及答案
- 七年级数学下试卷及答案
- 2025年善意的谎言辩论反方资料
- CN222980409U 一种抗跌落型继电器 (四川宏发电声有限公司)
- CN120248362A 一种多孔配位聚合物及其制备方法与其在c3h6-c3h8混合气分离中的应用 (同济大学)
- 2025年职测题库及答案
- UPS服务安全培训课件
- 扣件式钢管脚手架培训课件
- 物业沟通技巧培训
- 2025至2030中国美容祛斑仪行业发展趋势分析与未来投资战略咨询研究报告
- 民宿旅游培训课件
- 2025-2030年中国连续性肾脏替代治疗(CRRT)行业市场现状供需分析及投资评估规划分析研究报告
- 现场员工计件管理制度
- 健康养老课件模板
- DZ/T 0261-2014滑坡崩塌泥石流灾害调查规范(1∶50 000)
- 计算机二级MySQL真题下载试题及答案
- 佛山市顺德区容桂街道专业电镀产业发展规划(2023-2035年)环境影响报告书(简本)
- 高效人员管理的5大核心思路与方法
评论
0/150
提交评论