ArcGISでは、単バンド(1ビット、もしくは8ビット)のラスタ データセットに限ってカラーマップというセル値を表現する色をあらかじめデータ内に格納しておくことができます。
ラスタ セルの各色を表現するには任意のRGBを割り当てないといけませんが、1ビットや8ビットのラスタだとRGBを表現することはできません。通常はモノクロ、もしくはグレースケールで表現されてしまうところですが、ラスタの解析ではセルの値に関心があるわけで、セルの色はその表現手法に他ならず(単バンドは特に)、グレースケールで表現すると表現が貧弱で結果が分かりにくい場合があります。
ArcMapでは適当な遷移色を割り当てたりするレンダラ(シンボル タブ)も用意されてますが、特定のセル値に割り当てたい色が決まっている場合はカラーマップであらかじめ定義しておくのが便利です。
ただ、このカラーマップの設定はArcGISの標準GUIで用意されてません。
うーん困った。そこでArcObjectsの出番です。
Private Sub Run()
'アクティブ データ フレームの最上位レイヤにラスタ レイヤを配置
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
Dim pRasterLayer As IRasterLayer
Set pRasterLayer = pMxDocument.FocusMap.Layer(0)
'カラーマップの割り当て
Dim lOLE_COLOR(1) As OLE_COLOR
lOLE_COLOR(0) = vbBlack 'セルの0値に黒を設定
lOLE_COLOR(1) = vbWhite 'セルの1値に白を設定
CreateRasterColorMap pRasterLayer, lOLE_COLOR
End Sub
Private Sub CreateRasterColorMap(RasterLayer As IRasterLayer, OLE_COLORs() As OLE_COLOR)
'ColorMapの作成
Dim pRasterColorMap As IRasterColormap
Set pRasterColorMap = New RasterColormap
pRasterColorMap.Colors = OLE_COLORs
'対象レイヤの取得
Dim pDataset As IDataset
Set pDataset = RasterLayer
Dim pName As IName
Set pName = pDataset.FullName
'カラーマップを変更
Dim pRasterDatasetEdit As IRasterDatasetEdit
Set pRasterDatasetEdit = pName.Open
' pRasterDatasetEdit.DeleteColormap 'カラーマップの削除
pRasterDatasetEdit.AlterColormap pRasterColorMap 'カラーマップの追加
End Sub
