This document is archived and information here might be outdated.  Recommended version.


Create GeneralizeOp Aggregate Raster Snippet (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference

Create GeneralizeOp Aggregate Raster Snippet

Create an generalized (reduced resolution) raster from an input GeoDataset.

[C#]
/// <summary>
/// Create an generalized (reduced resolution) raster from an input GeoDataset.
/// </summary>
/// <param name="geoDataset">An IGeoDataset interface that has cell values that need to have a generalization computed.</param>
/// <returns>An IGeoDataset interface that contains generalization values of the input raster.</returns>
/// <remarks>
/// Note: the input geoDataset must be of Type IRaster, IRasterDataset, IRasterBand, or IRasterDescriptor.
/// 
/// The IGeneralizeOp.Aggregate Method has several options (cellFactor, aggregationType, expandExtent, and ignoreNoData) that 
/// will greatly vary the output raster. These values will need to be adjusted for your application to achieve 
/// the desired results.
/// 
/// For information about the IGeneralizeOp.Aggregate Method see:
/// http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriSpatialAnalyst/IGeneralizeOp_Aggregate.htm
/// 
/// For more information on working with the ArcGIS Spatial Anaylst objects see:
/// http://edndoc.esri.com/arcobjects/9.2/CPP_VB6_VBA_VCPP_Doc/COM/VB6/working/work_rasters/sptl_analyst_objs.htm
/// </remarks>
public ESRI.ArcGIS.Geodatabase.IGeoDataset CreateGeneralizeOpAggregateRaster(ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset)
{

    if (geoDataset is ESRI.ArcGIS.Geodatabase.IRaster | geoDataset is ESRI.ArcGIS.Geodatabase.IRasterDataset | geoDataset is ESRI.ArcGIS.DataSourcesRaster.IRasterBand | geoDataset is ESRI.ArcGIS.GeoAnalyst.IRasterDescriptor)
    {

        // Create the RasterGeneralizeOp object                 
        ESRI.ArcGIS.SpatialAnalyst.IGeneralizeOp generalizeOp=new ESRI.ArcGIS.SpatialAnalyst.RasterGeneralizeOpClass();

        // Declare the output raster object
        //Note: Adjust the IGeneralizeOp.Aggregate method options to suit your applications need.
        ESRI.ArcGIS.Geodatabase.IGeoDataset geodataset_output=generalizeOp.Aggregate(geoDataset, 4, ESRI.ArcGIS.GeoAnalyst.esriGeoAnalysisStatisticsEnum.esriGeoAnalysisStatsMean, true, true);

        return geodataset_output;

    }
    else
    {

        //Invalid type of GeoDataset for this process
        return null;

    }

}
[Visual Basic .NET]
''' <summary>
''' Create an generalized (reduced resolution) raster from an input GeoDataset.
''' </summary>
''' <param name="geoDataset">An IGeoDataset interface that has cell values that need to have a generalization computed.</param>
''' <returns>An IGeoDataset interface that contains generalization values of the input raster.</returns>
''' <remarks>
''' Note: the input geoDataset must be of Type IRaster, IRasterDataset, IRasterBand, or IRasterDescriptor.
''' 
''' The IGeneralizeOp.Aggregate Method has several options (cellFactor, aggregationType, expandExtent, and ignoreNoData) that 
''' will greatly vary the output raster. These values will need to be adjusted for your application to achieve 
''' the desired results.
''' 
''' For information about the IGeneralizeOp.Aggregate Method see:
''' http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriSpatialAnalyst/IGeneralizeOp_Aggregate.htm
''' 
''' For more information on working with the ArcGIS Spatial Anaylst objects see:
''' http://edndoc.esri.com/arcobjects/9.2/CPP_VB6_VBA_VCPP_Doc/COM/VB6/working/work_rasters/sptl_analyst_objs.htm
''' </remarks>
Public Function CreateGeneralizeOpAggregateRaster(ByVal geoDataset As ESRI.ArcGIS.Geodatabase.IGeoDataset) As ESRI.ArcGIS.Geodatabase.IGeoDataset

  If (TypeOf geoDataset Is ESRI.ArcGIS.Geodatabase.IRaster _
  Or TypeOf geoDataset Is ESRI.ArcGIS.Geodatabase.IRasterDataset _
  Or TypeOf geoDataset Is ESRI.ArcGIS.DataSourcesRaster.IRasterBand _
  Or TypeOf geoDataset Is ESRI.ArcGIS.GeoAnalyst.IRasterDescriptor) Then

    ' Create the RasterGeneralizeOp object                      
    Dim generalizeOp As ESRI.ArcGIS.SpatialAnalyst.IGeneralizeOp=New ESRI.ArcGIS.SpatialAnalyst.RasterGeneralizeOpClass

    ' Declare the output raster object
    'Note: Adjust the IGeneralizeOp.Aggregate method options to suit your applications need.
    Dim geodataset_output As ESRI.ArcGIS.Geodatabase.IGeoDataset=generalizeOp.Aggregate(geoDataset, 4, ESRI.ArcGIS.GeoAnalyst.esriGeoAnalysisStatisticsEnum.esriGeoAnalysisStatsMean, True, True)

    Return geodataset_output

   Else

    'Invalid type of GeoDataset for this process
    Return Nothing

  End If

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.DataSourcesRaster
  • ESRI.ArcGIS.GeoAnalyst
  • ESRI.ArcGIS.Geodatabase
  • ESRI.ArcGIS.SpatialAnalyst
  • ESRI.ArcGIS.System