' ワークスペースの名前を作成
Dim pWorkspaceName As IWorkspaceName = New WorkspaceName
Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.ScratchWorkspaceFactory")
Dim pScracthWorkspaceFactory As IScratchWorkspaceFactory2 = CType(Activator.CreateInstance(factoryType), IScratchWorkspaceFactory2)
Dim pWorkspace As IWorkspace = pScracthWorkspaceFactory.CreateNewScratchWorkspace()
Dim pDataset As IDataset = CType(pWorkspace, IDataset)
' フィーチャクラスの名前を作成
Dim pFeatureClassName As IFeatureClassName = New FeatureClassName
With pFeatureClassName
.FeatureType = esriFeatureType.esriFTSimple
.ShapeFieldName = "Shape"
.ShapeType = esriGeometryType.esriGeometryPolygon
End With
' データセットの名前を作成
Dim pDatasetName As IDatasetName = pFeatureClassName
With pDatasetName
.Name = "test"
.WorkspaceName = pDataset.FullName
End With
' TOC の最上位レイヤを取得
Dim pMxDocument As IMxDocument = My.ArcMap.Document
Dim pMap As IMap = pMxDocument.FocusMap
Dim pLayer As ILayer = pMap.Layer(0)
Dim pFeatureLayer As IFeatureLayer = pLayer
' レイヤの空間参照を取得
Dim pGeoDataset As IGeoDataset = pFeatureLayer
Dim pSpatialReference As ISpatialReference = pGeoDataset.SpatialReference
' レイヤのカーソルを取得
Dim pFeatureCursor As IFeatureCursor = pFeatureLayer.Search(Nothing, True)
' FeatureCursorBuffer オブジェクトの取得
Dim pFeatureCursorBuffer As IFeatureCursorBuffer2 = New FeatureCursorBuffer
' バッファ プロセスのプロパティを設定
Dim pBufferProcessingParameter As IBufferProcessingParameter = pFeatureCursorBuffer
With pBufferProcessingParameter
.AdjustCirclesForProjection = False
.BufferSpatialReference = esriBufferSpatialReferenceType.esriFeatureSetOptimizedSpatialReference
.FeatureClass = pFeatureLayer.FeatureClass
.GenerateRings = False
.InputHasPolygons = False
.SaveAsGraphics = False
.SimplifyShapes = False
.TargetSpatialReference = esriBufferSpatialReferenceType.esriFeatureSetOptimizedSpatialReference
End With
' FeatureCursorBuffer のプロパティを設定
With pFeatureCursorBuffer
.PolygonBufferType = esriBufferType.esriBufferAll
.Dissolve = False
.CancelTrack = Nothing
.FeatureCursor = pFeatureCursor
.ValueDistance = 100000
.SpatialReference = pSpatialReference
.Units(esriUnits.esriMeters) = esriUnits.esriMeters
.BufferSpatialReference = pSpatialReference
.DataFrameSpatialReference = pSpatialReference
.TargetSpatialReference = pSpatialReference
.Buffer(pFeatureClassName) ' バッファの実行
End With
Dim pFCName As IName = CType(pFeatureClassName, IName)
Dim pFeatureClass As IFeatureClass = CType(pFCName.Open(), IFeatureClass)
Dim pFeatureCursor2 As IFeatureCursor = pFeatureClass.Search(Nothing, True)
Dim pFeature As IFeature = pFeatureCursor2.NextFeature()
Dim pGeometryBag As IGeometryCollection = New GeometryBagClass
While Not pFeature Is Nothing
pGeometryBag.AddGeometry(pFeature.ShapeCopy)
pFeature = pFeatureCursor2.NextFeature()
End While
記事
