ラスタ データセットのカラーマップを作成する方法

      2009/07/19

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

 - GIS, ArcObjects