这里所说的重复是指完成重复的,不是叠在一起的两个或多个要素,这种应该叫做“压盖”或“重叠”。重复往往是在合并多Shpfile文件时不小心重复导入造成的。
这里提供一种可能的解决办法,数据无价,请备份!
本篇使用Python语句
暂不说如何处理,先获取要素的一些几何属性。下文中所有的语句使用Python解析。
!shape.type!
要素的类型,返回一个文本值,点线面(point,polyline,polygon)等。这个想不出有啥用来
对于面要素(polygon):
!shape.area!
计算要素几何面积,前面有讲,一个double数值。
此外,在字段标题上右键——计算几何(Calculate Geometry)——面积(area)也可以。
!shape.length!
计算要素长度,一个double数值。
此外,在字段标题上右键——计算几何(Calculate Geometry)——周长(perimeter)也可以。
!shape.centroid.x!
计算质心的X坐标值,一个double。
同样可以在字段标题右键
!shape.centroid.y!
计算质心的Y坐标值,一个double。
同样可以在字段标题右键
结果可以看下图:
选中的记录为重复的3个面要素,很明显,他们的上述各种值是一样的,那么我们做一个字符串拼接游戏,面积+周长+质心X坐标+质心Y坐标是不是应该可以确定一组重复了?
拼好后把属性表搞到Excel(不会请百度,也许有时间我会写一下),根据这个表识字段(这里命名用了unique)排一下序,使用一个简单的函数简单的Excel函数=COUNTIF(H$2:H2,H2)给相同项编个号,结果如下图。
上图已经很明晰,干掉所有编号为1的,挂接回ArcMap属性表,能挂接上值的就是应该删掉的,能想明白不?
多说一句,挂接也是有些道道儿的。挂接这个事儿需要写一下吗?好多……
今天就遇到一个根据FID挂接不上的,Object 类型能挂接才怪,如果依据它的值做连接,需要新建一个字段(最好文本),把FID值计算过来再挂接。
对于线要素:
计算一下起点、终点、长度啥的拼一下可以处理了
!shape.firstPoint.x! 是起点x
!shape.lastPoint.y!是终点y
对于点:
还有必要赘述吗?
作者:yzhyingcool