ArcEngine中多邊形內外環的處理

2021-06-09 04:43:58 字數 1392 閱讀 2343

polylgon

物件是由乙個或多個

ring

物件的有序集合,它可以是由單個

ring

物件構成,也可以使用多個

ring

組成如下圖所示。其中

ring

可以分為

outer ring(外環)

和inner

ring(內環)

之分。外環和內環都是有方向的,它們的區別是外環的方向是順時針的,內環的方向是逆時針。如果多邊形只有外環,沒有內環,很好處理,難得是如何將內環和外環區分開來,並且保證正確的內外環包含關係。

前段時間做mdb資料庫的座標轉換功能,由於針對的是地方座標系,所以無法用7引數構建投影座標統一轉換。我採用的是將featurelayer中的feature乙個乙個取出來,將每個點的起始點座標取出來進行轉換,然後再組合回去。現在將多邊形部分**貼出來:

ipolygon4 polygon = pfeature.shapecopy as ipolygon4; 

igeometrybag bag = polygon.exteriorringbag;     //獲取多邊形的所有外環

ienumgeometry geo = bag as ienumgeometry;

geo.reset();

iring exring = geo.next() as iring;

while (exring != null)

iring ir = ring as iring;

ir.close();

ppolygon.addgeometry(ir);

inring = geos.next() as iring;

}isegmentcollection seg = exring as isegmentcollection;

isegmentcollection rings = new ringclass();

for (int i = 0; i < seg.segmentcount; i++)  //處理外環

iring irr = rings as iring;

irr.close();

ppolygon.addgeometry(irr);

exring = geo.next() as iring;                           

}ipolygon p = ppolygon as ipolygon;

p.simplifypreservefromto();    //保證多邊形封閉

pfeature.shape = p;  

pfeature.store();

通過以上的方法能夠將polygon取出來,實現自定義的座標轉換過程,由於先取出來然後再重新組合,所以效率不是很高,但是經過大資料量的驗證,表明效率能夠接受。

多邊形判斷點內外

在圖形學中判斷乙個點是否在多邊形內,若多邊形不是自相交的,那麼可以簡單的判斷這個點在多邊形內部還是外部 若多邊形是自相交的,那麼就需要根據非零環繞數規則和奇 偶規則判斷。判斷多邊形是否是自相交的 多邊形在平面內除頂點外還有其他公共點 內 外測試 不自交的多邊形 多邊形僅在頂點處連線,而在平面內沒有其...

點 多邊形內外判斷

問題情境 1.判斷點是否在人體某個部位 不規則多邊形 上 思路辨析 判斷方法有好多種,需要考慮到實用性 侷限性 和 化簡易程度。1.面積和判斷,內角和判斷 角法 等,或侷限於多邊形形狀 凹 凸 或 計算有複雜地方 弧長,角度計算 或侷限於多邊形頂點的順序問題等。2.觀察及檢驗之下,射線法 判斷奇偶 ...

演算法 點在多邊形內外判斷

射線發 射線發判斷點是否在多邊形內部 p 待判斷的點。格式 poly 多邊形定點,陣列成員格式相同 private string raycasting point p,listpoly 判斷線段兩短點是否在射線兩側 if sy py sy py tyif x px return flag in ou...