Option Explicit
Sub SpatialJoinWithArcMapUI()
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
'アクティブなデータフレームの取得
Dim pMap As IMap
Set pMap = pMxDocument.FocusMap
'ソース フィーチャ レイヤーの取得
Dim pSourseFeatureLayer As IFeatureLayer
Set pSourseFeatureLayer = pMap.Layer(1)
'ソース フィーチャクラスを取得
Dim pSourseFeatureClass As IFeatureClass
Set pSourseFeatureClass = pSourseFeatureLayer.FeatureClass
'ジョイン フィーチャ レイヤーの取得
Dim pJoinFeatureLayer As IFeatureLayer
Set pJoinFeatureLayer = pMap.Layer(0)
'ジョイン フィーチャ クラスの取得
Dim pJoinFeatureClass As IFeatureClass
Set pJoinFeatureClass = pJoinFeatureLayer.FeatureClass
'ワークスペース ネームの作成
Dim pWorkspaceName As IWorkspaceName
Set pWorkspaceName = New WorkspaceName
pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory.1" '出力ワークスペース タイプ
pWorkspaceName.PathName = "C:\Temp\New File Geodatabase.gdb" '出力ワークスペース パス
'フィーチャクラス ネームの作成
Dim pDatasetName As IDatasetName
Set pDatasetName = New FeatureClassName
pDatasetName.Name = "SpatialJoin_Output" 'フィーチャクラス名
Set pDatasetName.WorkspaceName = pWorkspaceName
Dim pSpatialJoin As ISpatialJoin
Set pSpatialJoin = New SpatialJoin
Set pSpatialJoin.SourceTable = pSourseFeatureClass 'ターゲット フィーチャクラ
Set pSpatialJoin.JoinTable = pJoinFeatureClass '結合フィーチャクラス
pSpatialJoin.LeftOuterJoin = True
pSpatialJoin.ShowProcess(False) = 0
'属性を集計する方法は?
Dim pAggregateOptions As IAggregateOptions
Set pAggregateOptions = pSpatialJoin
With pAggregateOptions
.IsAverage = False '平均
.IsCount = True 'カウント
.IsMax = False '最大値
.IsMin = False '最小値
.IsStdDev = False '標準偏差
.IsSum = False '合計値
.IsVar = False '分散
End With
'各ポリゴンの属性テーブルに、そのポリゴン内に含まれるポイント フィーチャの数値属性の集計値を追加します。また、新規フィールド「Count」に各ポリゴンに含まれるポイント フィーチャの数を格納します。
Dim pOutFeatureClass As IFeatureClass
'Set pOutFeatureClass = pSpatialJoin.JoinWithin(pDatasetName)
Dim maxMapDist As Double
maxMapDist = -1
'各ポリゴンに、そのポリゴン境界と最近隣関係にあるすべてのポイントの属性を与え、distance フィールドにポリゴン境界とポイントの距離をターゲット レイヤーの単位で格納します。
'Set pOutFeatureClass = pSpatialJoin.JoinAggregate(pDatasetName, maxMapDist)
'Set pOutFeatureClass = pSpatialJoin.JoinNearest(pDatasetName, maxMapDist)
End Sub
空間結合
2023/6/12 (月)