解析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

對於點:

還有必要贅述嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM