How to create a Math Function raster dataset


Creating a Math Function raster dataset

Do the following steps to create a Math Function raster dataset:
  1. Create the Math Function object.
  2. Create the Math Function Arguments object.
  3. Set the properties for the Math Function arguments.
    1. Specify the operation.
    2. Specify the operands for the operation.
      • If only one operand is needed, only specify the Raster property; otherwise, specify both Raster and Raster2 respectively.
      • The operands can be a Raster or Scalar (at least one must be a Raster) object.
  4. Create a Raster Function object.
  5. Create a Function Raster dataset object.
  6. Initialize the new Function Raster dataset with the raster function and its arguments.
The following code example shows how to create a Math function raster dataset, combining multiple operations together into a complex equation:
  • outFunctionRaster = (raster01 + raster02) / raster03
[VB.NET]
'Create the Raster Function object and Function Arguments object for the first operation.
Dim rasterFunction1 As IRasterFunction
rasterFunction1 = New MathFunction()
Dim mathFunctionArguments1 As IMathFunctionArguments
mathFunctionArguments1 = New MathFunctionArguments()

'Open raster datasets and specify as inputs for the "Plus" operation.
mathFunctionArguments1.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionPlus
mathFunctionArguments1.Raster = inRasterDataset01
mathFunctionArguments1.Raster2 = inRasterDataset02

'Create and initialize first function raster dataset with the Raster Function object and its arguments object.
Dim functionRasterDataset1 As IFunctionRasterDataset
functionRasterDataset1 = New FunctionRasterDataset()
functionRasterDataset1.Init(rasterFunction1, mathFunctionArguments1)

'Create the Raster Function and the Function Arguments object for the second operation.
Dim rasterFunction2 As IRasterFunction
rasterFunction2 = New MathFunction()
Dim mathFunctionArguments2 As IMathFunctionArguments
mathFunctionArguments2 = New MathFunctionArguments()

'Specify input rasters for the "Divide" operation.
'Use the output function raster dataset from the 1st operation as one of the input.
mathFunctionArguments2.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionDivide
mathFunctionArguments2.Raster = functionRasterDataset1
mathFunctionArguments2.Raster2 = inRasterDataset03

'Create and initialize the second function raster dataset.
Dim functionRasterDataset2 As IFunctionRasterDataset
functionRasterDataset2 = New FunctionRasterDataset()
functionRasterDataset2.Init(rasterFunction2, mathFunctionArguments2)
[C#]
//Create the Raster Function object and Function Arguments object for the first operation. 
IRasterFunction rasterFunction1 = new MathFunction();
IMathFunctionArguments mathFunctionArguments1 = new MathFunctionArguments()as
    IMathFunctionArguments;

//Open raster datasets and specify as inputs for the "Plus" operation.
mathFunctionArguments1.Operation =
    esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionPlus;
mathFunctionArguments1.Raster = inRasterDataset01;
mathFunctionArguments1.Raster2 = inRasterDataset02;

//Create and initialize first function raster dataset with the Raster Function object and its arguments object.
IFunctionRasterDataset functionRasterDataset1;
functionRasterDataset1 = new FunctionRasterDataset();
functionRasterDataset1.Init(rasterFunction1, mathFunctionArguments1);

//Create the Raster Function and the Function Arguments object for the second operation.
IRasterFunction rasterFunction2 = new MathFunction();
IMathFunctionArguments mathFunctionArguments2 = new MathFunctionArguments()as
    IMathFunctionArguments;

//Specify input rasters for the "Divide" operation.
//Use the output function raster dataset from the first operation as one of the input. 
mathFunctionArguments2.Operation =
    esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionDivide;
mathFunctionArguments2.Raster = functionRasterDataset1;
mathFunctionArguments2.Raster2 = inRasterDataset03;

//Create and initialize the second function raster dataset.
IFunctionRasterDataset functionRasterDataset2;
functionRasterDataset2 = new FunctionRasterDataset();
functionRasterDataset2.Init(rasterFunction2, mathFunctionArguments2);


See Also:

How to create a Local Function raster dataset
How to create a Conditional Function raster dataset
Sample: Create a Function Raster dataset
How to save a Function raster dataset into a raster dataset
How to access a raster dataset




To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing Deployment licensing
ArcGIS for Desktop Advanced: Spatial Analyst ArcGIS for Desktop Advanced: Spatial Analyst
ArcGIS for Desktop Basic: Spatial Analyst ArcGIS for Desktop Basic: Spatial Analyst
ArcGIS for Desktop Standard: Spatial Analyst ArcGIS for Desktop Standard: Spatial Analyst