/// <summary>
/// 多部件处理
/// </summary>
/// <param name="pGeometry">任一要素</param>
/// <param name="listGeometry">多部件打散的列表</param>
/// <returns>是否为多部件</returns>
public static bool IsMuiltPart(IGeometry pGeometry, out List<IGeometry> listGeometry)
{
listGeometry = new List<IGeometry>();
IGeometryCollection pGeoColl = pGeometry as IGeometryCollection;
if (pGeoColl == null)
{
return false;
}
if (pGeoColl.GeometryCount <= 1)
{
return false;
}
IPolygon pGeoPolygon = pGeometry as IPolygon;
int iRCnt = pGeoPolygon.ExteriorRingCount;
if (iRCnt > 1)
{
IGeometryBag pExRings = (pGeometry as IPolygon4).ConnectedComponentBag;
IGeometryCollection geoColl = pExRings as IGeometryCollection;
for (int i = 0; i < iRCnt; i++)
{
if (pGeometry.GeometryType == esriGeometryType.esriGeometryPolygon)
{
IGeometry newGeom = geoColl.Geometry[i];
newGeom.SpatialReference = pGeometry.SpatialReference;
IGeometryCollection newGeoColl = new PolygonClass();
newGeoColl.AddGeometryCollection(newGeom as IGeometryCollection);
IGeometry pGeoNew2 = newGeoColl as IGeometry;
if (pGeoNew2 == null || pGeoNew2.IsEmpty) continue;
listGeometry.Add(pGeoNew2);
}
}
}
return true;
}