Try using IGridTable, ICursor, IRow. This code snippet is for updating raster cell values, however it shows the basics of iterating:
How can I add a new field in a raster attribute table and loop through it?
Public Sub CalculateArea(raster As IRaster, areaField As String)
Dim bandCol As IRasterBandCollection
Dim band As IRasterBand
Set bandCol = raster
Set band = bandCol.Item(0)
Dim hasTable As Boolean
band.hasTable hasTable
If (hasTable = False) Then
Exit Sub
End If
If (AddVatField(raster, areaField, esriFieldTypeDouble, 38) = True) Then
' calculate cell size
Dim rstProps As IRasterProps
Set rstProps = raster
Dim pnt As IPnt
Set pnt = rstProps.MeanCellSize
Dim cellSize As Double
cellSize = (pnt.X + pnt.Y) / 2#
' get fields index
Dim attTable As ITable
Set attTable = band.AttributeTable
Dim idxArea As Long, idxCount As Long
idxArea = attTable.FindField(areaField)
idxCount = attTable.FindField("COUNT")
' using update cursor
Dim gridTableOp As IGridTableOp
Set gridTableOp = New gridTableOp
Dim cellCount As Long, cellArea As Double
Dim updateCursor As ICursor, updateRow As IRow
Set updateCursor = gridTableOp.Update(band.RasterDataset, Nothing, False)
Set updateRow = updateCursor.NextRow()
Do Until updateRow Is Nothing
cellCount = CLng(updateRow.Value(idxCount))
cellArea = cellCount * (cellSize * cellSize)
updateRow.Value(idxArea) = cellArea
updateCursor.updateRow updateRow
Set updateRow = updateCursor.NextRow()
Loop
End If
End Sub
Once you are traversing the table you can get the specific field row value by using row.get_Value(yourfieldIndex)
. If you Google
arcobjects row.get_Value
you should be able to get plenty of examples showing this.
Hope that helps.