YouTube | Facebook | X(Twitter) | RSS

フィーチャをラスターに変換

2016/9/1 (木)

Attribute VB_Name = "Module_Feature2Raster"
Option Explicit
 
'*********************************************************************
' 定義 :fncCreateRaster(valIndex As Integer, valFieldName As String,
'           valCellSize As Double, valRasterFormat As String,
'           valOutputFilePath As String, valOutputFilename As String)
' 概要 :フィーチャをラスタに変換(エクステンションライセンス不要)
' 第1引数 :IFeatureLayer    'フィーチャレイヤ
' 第2引数 :String           'フィールド名
' 第3引数 :Double           '出力セルサイズ
' 第4引数 :String           '出力ファイルパス
' 第5引数 :String           '出力ファイル名
' 第6引数 :String Optional  '出力フォーマット(オプション)
' 戻り値 :IRasterLayer      'ラスタレイヤ
' 更新履歴 :2006/01/11 新規作成
'*********************************************************************
Function fncCreateRaster(pFeatureLayer As IFeatureLayer, valFieldName As String, _
    valCellSize As Double, valOutputFilePath As String, valOutputFileName As String, _
    Optional valRasterFormat As String) As IRasterLayer
     
    '出力フォーマットが指定されていない場合はESRI GRIDで出力
    If valRasterFormat = "" Then
        valRasterFormat = "GRID"
    End If
     
    'フィーチャクラスの取得
    Dim pFeatureClass As IFeatureClass
    Set pFeatureClass = pFeatureLayer.FeatureClass
     
    'フィーチャクラスディスクリプタの作成
    Dim pFeatCDr As IFeatureClassDescriptor
    Set pFeatCDr = New FeatureClassDescriptor
    pFeatCDr.Create pFeatureClass, Nothing, valFieldName
     
    'ConversionOpオブジェクトの作成
    Dim pConvOp As IConversionOp
    Set pConvOp = New RasterConversionOp
     
    '出力ラスタセルサイズの設定
    Dim pRAEnv As IRasterAnalysisEnvironment
    Set pRAEnv = pConvOp
    pRAEnv.SetCellSize esriRasterEnvValue, valCellSize
     
    Dim pWSF As IWorkspaceFactory
    Set pWSF = New RasterWorkspaceFactory
     
    Dim pRWS As IRasterWorkspace
    Set pRWS = pWSF.OpenFromFile(valOutputFilePath, 0)
     
    Dim pRasterDataset As IRasterDataset
    Set pRasterDataset = pConvOp.ToRasterDataset(pFeatCDr, valRasterFormat, pRWS, valOutputFileName)
     
    'ラスタレイヤの追加
    Dim pRaster As IRaster
    Set pRaster = pRasterDataset.CreateDefaultRaster
     
    Dim pRasterLayer As IRasterLayer
    Set pRasterLayer = New RasterLayer
    pRasterLayer.CreateFromRaster pRaster
     
    Set fncCreateRaster = pRasterLayer
     
End Function
  • この記事を書いた人

羽田 康祐

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

-プログラミング, ArcGIS
-,