zoukankan      html  css  js  c++  java
  • 解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面

    这里所说的重复是指完成重复的,不是叠在一起的两个或多个要素,这种应该叫做“压盖”或“重叠”。重复往往是在合并多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

    对于点:

    还有必要赘述吗?

  • 相关阅读:
    字符串String
    冒泡排序、二分查找法
    数组习题
    数组
    附加习题
    编写Java程序,应用for循环打印菱形、三角形
    JAVA的语法基础4
    3.20 每日一题题解
    3.19 每日一题题解
    3.18 每日一题题解
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/10075906.html
Copyright © 2011-2022 走看看