/// <summary>
/// 获取单个要素的外包矩形
/// </summary>
/// <param name="pFeature"></param>
/// <returns></returns>
public IEnvelope GetEnvelope(IFeature pFeature)
{
IEnvelope pEnvelope = pFeature.Extent;
return pEnvelope;
}
/// <summary>
/// 通过ITopologicalOperator接口,获得包含几个或多个要素的外包矩形
/// </summary>
/// <param name="pGeometryCollection"></param>
/// <returns></returns>
public IEnvelope GetEnvelope(IGeometryCollection pGeometryCollection)
{
IPolygon pPolygon = new PolygonClass();
ITopologicalOperator pTopo;
pTopo = pPolygon as ITopologicalOperator;
pTopo.ConstructUnion(pGeometryCollection as IEnumGeometry);
IEnvelope pEnvelope = pPolygon.Envelope;
return pEnvelope;
}
/// <summary>
/// 通过ITopologicalOperator接口,获得包含几个或多个要素的外包矩形
/// </summary>
/// <param name="pGeometryCollection"></param>
/// <returns></returns>
public IEnvelope GetEnvelope(IFeatureClass featureClass, string whereCaluse = "1=1")
{
if (featureClass == null)
{ return null; }
IGeoDataset geoDataset = featureClass as IGeoDataset;
IGeometry geometryBag = new GeometryBagClass();
ISpatialFilter queryFilter = new SpatialFilterClass();
queryFilter.WhereClause = whereCaluse;
geometryBag.SpatialReference = geoDataset.SpatialReference;
IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);
IGeometryCollection geometryCollection = geometryBag as IGeometryCollection;
IFeature currentFeature = featureCursor.NextFeature();
object missing = Type.Missing;
int j = 0;
while (currentFeature != null)
{
j++;
geometryCollection.AddGeometry(currentFeature.Shape, ref missing, ref missing);
currentFeature = featureCursor.NextFeature();
}
if (featureCursor != null)
ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(featureCursor);
ITopologicalOperator unionedPolygon = new PolygonClass();
unionedPolygon.ConstructUnion(geometryBag as IEnumGeometry);
return (unionedPolygon as IPolygon).Envelope;
}
/// <summary>
/// 通过IGeoDataset接口,获得一个要素图层的外包矩形
/// </summary>
/// <param name="pFeatureClass"></param>
/// <returns></returns>
public IEnvelope GetEnvelope(IFeatureClass pFeatureClass)
{
IGeoDataset pGeoDataset;
pGeoDataset = pFeatureClass as IGeoDataset;
IEnvelope pEnvelope = pGeoDataset.Extent;
return pEnvelope;
}