About the Create a Math Function Raster dataset Sample
[C#]
CreateMathFunctionRasterDataset.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.SpatialAnalyst;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.esriSystem;
namespace CreateMathFunctionRasterDataset
{
class Program
{
static void Main(string[] args)
{
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
IAoInitialize aoInit = new AoInitialize();
esriLicenseStatus licStat = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
licStat = aoInit.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);
CreateMathFunctionRasterDataset();
aoInit.Shutdown();
}
public static void CreateMathFunctionRasterDataset()
{
//Create the Raster Function object and Function Arguments object for first operation
IRasterFunction rasterFunction1 = new MathFunction();
IMathFunctionArguments mathFunctionArguments1 = new MathFunctionArguments() as IMathFunctionArguments;
//Specify operation to be "Plus" for the first operation
mathFunctionArguments1.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionPlus;
//Specify input rasters to the operation
IRasterDataset ras01 = OpenRasterDataset("c:\\data\\test", "degs");
IRasterDataset ras02 = OpenRasterDataset("c:\\data\\test", "negs");
mathFunctionArguments1.Raster = ras01;
mathFunctionArguments1.Raster2 = ras02;
//Create and initialize 1st 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 2nd operation
IRasterFunction rasterFunction2 = new MathFunction();
IMathFunctionArguments mathFunctionArguments2 = new MathFunctionArguments() as IMathFunctionArguments;
//Specify operation to be "Divide" for the 2nd operation
mathFunctionArguments2.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionDivide;
//Specify input rasters to the 2nd operation
//Use the output function raster dataset from the 1st operation as one of the input
mathFunctionArguments2.Raster = functionRasterDataset1;
IRasterDataset ras03 = OpenRasterDataset("c:\\data\\test", "cost");
mathFunctionArguments2.Raster2 = ras03;
//Create and initialize the 2nd function raster dataset
IFunctionRasterDataset functionRasterDataset2;
functionRasterDataset2 = new FunctionRasterDataset();
IFunctionRasterDatasetName functionRasterDatasetName = (IFunctionRasterDatasetName)new FunctionRasterDatasetName();
functionRasterDatasetName.FullName = "c:\\output\\math_out.afr";
functionRasterDataset2.FullName = (IName)functionRasterDatasetName;
functionRasterDataset2.Init(rasterFunction2, mathFunctionArguments2);
//Save the 2nd function raster dataset
ITemporaryDataset temporaryDataset = (ITemporaryDataset)functionRasterDataset2;
temporaryDataset.MakePermanent();
}
public static IRasterDataset OpenRasterDataset(string sPath, string sFileName)
{
// Returns RasterDataset object given a file name and its directory.
// sPath: path of the input raster dataset.
// sFileName: name of the input raster dataset.
IRasterDataset rasterDataset = null;
try
{
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();
IRasterWorkspace rasterWorkspace;
rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(sPath, 0);
rasterDataset = rasterWorkspace.OpenRasterDataset(sFileName);
}
catch (Exception ex)
{
Console.WriteLine("Failed in Opening RasterDataset. " + ex.InnerException.ToString());
}
return rasterDataset;
}
public static IRasterWorkspace OpenRasterWorkspace(string sPath)
{
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();
IRasterWorkspace rasterWorkspace = null;
rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(sPath, 0);
return rasterWorkspace;
}
}
}
[Visual Basic .NET]
CreateMathFunctionRasterDataset.vb
Imports ESRI.ArcGIS.DataSourcesRaster
Imports ESRI.ArcGIS.SpatialAnalyst
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.esriSystem
Module Module1
Sub Main()
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)
Dim aoInit As IAoInitialize
aoInit = New AoInitialize()
Dim licStat As esriLicenseStatus
licStat = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine)
licStat = aoInit.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst)
CreateMathFunctionRasterDataset()
aoInit.Shutdown()
End Sub
Public Sub CreateMathFunctionRasterDataset()
'Create the Raster Function object and Function Arguments object for first operation
Dim rasterFunction1 As IRasterFunction
rasterFunction1 = New MathFunction()
Dim mathFunctionArguments1 As IMathFunctionArguments
mathFunctionArguments1 = New MathFunctionArguments()
'Specify operation to be "Plus" for the first operation
mathFunctionArguments1.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionPlus
'Specify input rasters to the operation
Dim ras01 As IRasterDataset
Dim ras02 As IRasterDataset
ras01 = OpenRasterDataset("c:\data\test", "degs")
ras02 = OpenRasterDataset("c:\data\test", "negs")
mathFunctionArguments1.Raster = ras01
mathFunctionArguments1.Raster2 = ras02
'Create and initialize 1st 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 2nd operation
Dim rasterFunction2 As IRasterFunction
rasterFunction2 = New MathFunction()
Dim mathFunctionArguments2 As IMathFunctionArguments
mathFunctionArguments2 = New MathFunctionArguments()
'Specify operation to be "Divide" for the 2nd operation
mathFunctionArguments2.Operation = esriGeoAnalysisFunctionEnum.esriGeoAnalysisFunctionDivide
'Specify input rasters to the 2nd operation
'Use the output function raster dataset from the 1st operation as one of the input
mathFunctionArguments2.Raster = functionRasterDataset1
Dim ras03 As IRasterDataset
ras03 = OpenRasterDataset("c:\data\test", "cost")
mathFunctionArguments2.Raster2 = ras03
'Create and initialize the 2nd function raster dataset
Dim functionRasterDataset2 As IFunctionRasterDataset
functionRasterDataset2 = New FunctionRasterDataset()
Dim functionRasterDatasetName As IFunctionRasterDatasetName
functionRasterDatasetName = New FunctionRasterDatasetName()
functionRasterDatasetName.FullName = "c:\output\math_out.afr"
functionRasterDataset2.FullName = functionRasterDatasetName
functionRasterDataset2.Init(rasterFunction2, mathFunctionArguments2)
'Save the 2nd function raster dataset
Dim temporaryDataset As ITemporaryDataset
temporaryDataset = functionRasterDataset2
temporaryDataset.MakePermanent()
End Sub
Public Function OpenRasterDataset(ByVal sPath As String, ByVal sFileName As String) As IRasterDataset
' Returns RasterDataset object given a file name and its directory.
' sPath: path of the input raster dataset.
' sFileName: name of the input raster dataset.
Dim rasterDataset As IRasterDataset = Nothing
Try
Dim workspaceFactory As IWorkspaceFactory = New RasterWorkspaceFactory()
Dim rasterWorkspace As IRasterWorkspace
rasterWorkspace = CType(workspaceFactory.OpenFromFile(sPath, 0), IRasterWorkspace)
rasterDataset = rasterWorkspace.OpenRasterDataset(sFileName)
Catch ex As Exception
Console.WriteLine("Failed in Opening RasterDataset. " & ex.InnerException.ToString)
End Try
Return rasterDataset
End Function
Public Function OpenRasterWorkspace(ByVal sPath As String) As IRasterWorkspace
Dim workspaceFactory As IWorkspaceFactory
workspaceFactory = New RasterWorkspaceFactory()
Dim rasWS As IRasterWorkspace
rasWS = Nothing
rasWS = workspaceFactory.OpenFromFile(sPath, 0)
OpenRasterWorkspace = rasWS
End Function
End Module