1、联合整个面图层,
/// <summary>
/// 联合整个面图层
/// </summary>
/// <param name="featureClass"></param>
/// <returns></returns>
private void GetUnionGeometry(IFeatureClass pFeatureClass, ref IGeometry pGeometry)
{
//将图层选中的要素融合成一个大的多边形,最终返回一个多边形,供后续空间查询使用
IGeometry pResultGeometry; //用作空间查询的多边形
IFeatureCursor pCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pCursor.NextFeature();
pResultGeometry = pFeature.ShapeCopy;
ITopologicalOperator pTopo = pFeature.ShapeCopy as ITopologicalOperator;
while (pFeature != null)
{
pResultGeometry = pTopo.Union(pFeature.Shape);
pTopo = pResultGeometry as ITopologicalOperator;
pFeature = pCursor.NextFeature();
}
pGeometry = pResultGeometry;
}
2、联合整个面图层
/// <summary>
/// 联合整个面图层
/// </summary>
/// <param name="featureClass"></param>
/// <returns></returns>
private IGeometry UnionFeature(IFeatureClass featureClass)
{
IFeatureCursor featureCursor = featureClass.Search(null,false);
IGeometry pUnionGeo = new PolygonClass();
IFeature feature = featureCursor.NextFeature();
while(feature!=null)
{
ITopologicalOperator pUnionTopo = pUnionGeo as ITopologicalOperator;
pUnionGeo = pUnionTopo.Union(feature.Shape);
feature = featureCursor.NextFeature();
}
return pUnionGeo;
}
3、方法三
public IPolygon UinonFc(IFeatureClass featureClass, string str)
{
if (featureClass == null) return null;
IGeoDataset geoDataset = featureClass as IGeoDataset;
IGeometry geometryBag = new GeometryBagClass();
ISpatialFilter queryFilter = new SpatialFilterClass();
queryFilter.WhereClause = str;
geometryBag.SpatialReference = geoDataset.SpatialReference;
IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);
IGeometryCollection geometryCollection = geometryBag as IGeometryCollection;
IFeature currentFeature = featureCursor.NextFeature();
while (currentFeature != null)
{
object missing = Type.Missing;
geometryCollection.AddGeometry(currentFeature.Shape, ref missing, ref missing);
currentFeature = featureCursor.NextFeature();
}
ITopologicalOperator unionedPolygon = new PolygonClass();
unionedPolygon.ConstructUnion(geometryBag as IEnumGeometry);
return unionedPolygon as IPolygon;
}