多要素合并,不能采用一个一个union的方法,速度太慢。使用ITopologicalOperator的ConstructUnion方法合并多条要素。
public IPolygon union(IFeatureClass featureClass)
{
if (featureClass == null)
{ return null; }
IGeoDataset geoDataset = featureClass as IGeoDataset;
IGeometry geometryBag = new GeometryBagClass();
IGeoDataset geoDataset = featureClass as IGeoDataset;
ISpatialFilter queryFilter = new SpatialFilterClass();
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;
}