YouTube | Facebook | X(Twitter) | RSS

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

2009/7/16 (木)

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エンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-