This sample code demonstrate how to add two rasters using the IMathOp::Plus method of RasterMathOps object.
How to use
- Start ArcMap and add two rasters.
- Paste the code into VBA.
- Make sure the Spatial Analyst extension is checked.
- Add reference to ESRI SpatialAnalyst Object Library.
- Run the sub from the Macros dialog.
Sub RasterMathOps_Plus()
'Get the Map
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
'Get the first raster from the first layer in ArcMap
Dim pLayer1 As ILayer
Set pLayer1 = pMap.Layer(0)
If Not TypeOf pLayer1 Is IRasterLayer Then
Exit Sub
End If
Dim pRasLayer1 As IRasterLayer
Set pRasLayer1 = pLayer1
Dim pRas1 As IRaster
Set pRas1 = pRasLayer1.Raster
'Get the second raster from the second layer in ArcMap
Dim pLayer2 As ILayer
Set pLayer2 = pMap.Layer(1)
If Not TypeOf pLayer2 Is IRasterLayer Then
Exit Sub
End If
Dim pRasLayer2 As IRasterLayer
Set pRasLayer2 = pLayer2
Dim pRas2 As IRaster
Set pRas2 = pRasLayer2.Raster
'Create a Spatial operator
Dim pMathOp As IMathOp
Set pMathOp = New RasterMathOps
'Set output workspace
Dim pEnv As IRasterAnalysisEnvironment
Set pEnv = pMathOp
Dim pWS As IWorkspace
Dim pWSF As IWorkspaceFactory
Set pWSF = New RasterWorkspaceFactory
Set pWS = pWSF.OpenFromFile("c:\temp", 0)
Set pEnv.OutWorkspace = pWS
'Perform the operation
Dim pOutRaster As IRaster
Set pOutRaster = pMathOp.Plus(pRas1, pRas2)
'Create a raster layer and add it into ArcMap
Dim pOutRasLayer As IRasterLayer
Set pOutRasLayer = New RasterLayer
pOutRasLayer.CreateFromRaster pOutRaster
pMap.AddLayer pOutRasLayer
End Sub