YouTube | Facebook | X(Twitter) | RSS

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

2016/9/1 (木)

VBA
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
-,

S