現需要用ArcGIS將多邊形面層中是"空洞"的要素查找出來。
代碼思路
一開始沒有思路,於是寫了代碼,基本流程如下:
1)遍歷需要判斷的要素(可通過屬性篩選);
2)檢查某一要素相鄰的所有要素;
3)反向檢查某一要素相鄰要素的相鄰圖斑:如果相鄰圖斑的個數唯一,且相鄰圖斑的FID與某一要素的FID相同,則某一要素的相鄰要素在某一要素"內部",某一要素則為"空洞"要素。
注意:如果數據量過大,可只輸出"空洞"要素的FID,然后利用屬性查詢在ArcGIS中查找即可;對於邊界的判斷可能有誤,最好人工核查。
工具思路
1)用"要素轉點"(feature to point)將面轉點,目的是保留屬性,轉換時選中inside選項;
2)用"面轉線"(polygon to line)將面轉線;
3)再用"要素轉面"*feature to polygon)將生成的線轉面,轉換時用第一步轉成的點做label features,並選中preserve attributes選項。
沒有相應屬性的多邊形就是原來的空洞。