這里所說的重復是指完成重復的,不是疊在一起的兩個或多個要素,這種應該叫做“壓蓋”或“重疊”。重復往往是在合並多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
對於點:
還有必要贅述嗎?