對於ArcGIS中的複雜多邊形處理起來有時候比較棘手,我們可以使用IPolygon4接口,遍歷IPolygon當中多有的外環和內環
下面給出代碼示例:
public void PolygonToRing(IPolygon4 polygon)
{
IGeometryBag exteriorRingGeometryBag = polygon.ExteriorRingBag;
IGeometryCollection exteriorRingGeometryCollection = exteriorRingGeometryBag as IGeometryCollection;
for (int i = 0; i < exteriorRingGeometryCollection.GeometryCount; i++)
{
List<IPoint> PointResult = new List<IPoint>();
IGeometry exteriorRingGeometry = exteriorRingGeometryCollection.get_Geometry(i);
IPointCollection exteriorRingPointCollection = exteriorRingGeometry as IPointCollection;
ReadPoints(exteriorRingPointCollection,PointResult);
CreateJson(PointResult);
IGeometryBag interiorRingGeometryBag = polygon.get_InteriorRingBag(exteriorRingGeometry as IRing);
IGeometryCollection interiorRingGeometryCollection = interiorRingGeometryBag as IGeometryCollection;
for (int k = 0; k < interiorRingGeometryCollection.GeometryCount;k++ )
{
IGeometry interiorRingGeometry = interiorRingGeometryCollection.get_Geometry(k);
IPointCollection interiorRingPointCollection = interiorRingGeometry as IPointCollection;
ReadPoints(interiorRingPointCollection, PointResult);
CreateJson(PointResult);
}
}
}
/// <summary>
/// 獲取結果多邊形節點座標
/// </summary>
/// <param name="ptCol"節>點集合</param>
private void ReadPoints(IPointCollection ptCol, List<IPoint> PointResult)
{
IPoint pnt;
for (int i = 0; i < ptCol.PointCount; i++)
{
pnt = ptCol.get_Point(i);
PointResult.Add(pnt);
}
}
ARCGIS複雜多邊形基礎知識講解http://www.cnblogs.com/willwayer/archive/2010/09/13/1824721.html