ArcObjects Library Reference

Create ExtractionOp Attribute Raster Snippet

Create an raster from a logical based attribute query of an input GeoDataset.

[C#]
/// <summary>
/// Create an raster from a logical based attribute query of an input GeoDataset.
/// </summary>
/// <param name="geoDataset">An IGeoDataset interface that has cell values that will be selected based upon an attribute query.</param>
/// <param name="string_WhereClause">A System.String that is the where clause portion of the attribute query. Example: "Value = 3".</param>
/// <param name="string_FieldName">A System.String that is the Field name in the input geoDataset.</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.
/// 
/// For information about the IExtractionOp.Attribute Method see:
/// http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriSpatialAnalyst/IExtractionOp_Attribute.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 CreateExtractionOpAttributeRaster(ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset, System.String string_WhereClause, System.String string_FieldName)
{

    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 RasterExtractionOp object
        ESRI.ArcGIS.SpatialAnalyst.IExtractionOp extractionOp = new ESRI.ArcGIS.SpatialAnalyst.RasterExtractionOpClass();

        // Declare the input object
        ESRI.ArcGIS.Geodatabase.IRaster raster = (ESRI.ArcGIS.Geodatabase.IRaster)geoDataset;

        // Declare a RasterDescriptor
        ESRI.ArcGIS.GeoAnalyst.IRasterDescriptor rasterDescriptor = new ESRI.ArcGIS.GeoAnalyst.RasterDescriptorClass();

        // Select the field used for extraction
        ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass();
        queryFilter.WhereClause = string_WhereClause;

        rasterDescriptor.Create(raster, queryFilter, string_FieldName);

        // Call the method
        // Note: the input rasterDescriptor that is created by a logical expression based on the attributes in a Raster. 
        // Those cells for which the logical expression evaluated to True in the RasterDescriptor are selected. 
        // Those cells that are not selected will be set to NoData.
        ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset_output = extractionOp.Attribute(rasterDescriptor);

        return geoDataset_output;

    }
    else
    {

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

    }

}
[Visual Basic .NET]
''' <summary>
''' Create an raster from a logical based attribute query of an input GeoDataset.
''' </summary>
''' <param name="geoDataset">An IGeoDataset interface that has cell values that will be selected based upon an attribute query.</param>
''' <param name="string_WhereClause">A System.String that is the where clause portion of the attribute query. Example: "Value = 3".</param>
''' <param name="string_FieldName">A System.String that is the Field name in the input geoDataset.</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.
''' 
''' For information about the IExtractionOp.Attribute Method see:
''' http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriSpatialAnalyst/IExtractionOp_Attribute.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 CreateExtractionOpAttributeRaster(ByVal geoDataset As ESRI.ArcGIS.Geodatabase.IGeoDataset, ByVal string_WhereClause As System.String, ByVal string_FieldName As System.String) 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 RasterExtractionOp object
    Dim extractionOp As ESRI.ArcGIS.SpatialAnalyst.IExtractionOp = New ESRI.ArcGIS.SpatialAnalyst.RasterExtractionOpClass

    ' Declare the input object
    Dim raster As ESRI.ArcGIS.Geodatabase.IRaster = CType(geoDataset, ESRI.ArcGIS.Geodatabase.IRaster)

    ' Declare a RasterDescriptor
    Dim rasterDescriptor As ESRI.ArcGIS.GeoAnalyst.IRasterDescriptor = New ESRI.ArcGIS.GeoAnalyst.RasterDescriptorClass

    ' Select the field used for extraction
    Dim queryFilter As ESRI.ArcGIS.Geodatabase.IQueryFilter = New ESRI.ArcGIS.Geodatabase.QueryFilterClass
    queryFilter.WhereClause = string_WhereClause

    rasterDescriptor.Create(raster, queryFilter, string_FieldName)

    ' Call the method
    ' Note: the input rasterDescriptor that is created by a logical expression based on the attributes in a Raster. 
    ' Those cells for which the logical expression evaluated to True in the RasterDescriptor are selected. 
    ' Those cells that are not selected will be set to NoData.
    Dim geoDataset_output As ESRI.ArcGIS.Geodatabase.IGeoDataset = extractionOp.Attribute(rasterDescriptor)

    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