FAQ
フィーチャからグラフィックのバッファー ポリゴンを作成する方法

ナレッジ番号:5568 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

IFeatureCursorBuffer を使用して選択したフィーチャからグラフィックのバッファー ポリゴンを作成する方法を示します。
※ArcMap アドインでのみ使用可能です。

サンプル コード

下記のサンプル コードを使用する前に、[コンテンツ] ウィンドウで ArcMap 画面上に表示されているレイヤーが選択状態になっているのを確認し、フィーチャを選択してください。

//[コンテンツ] ウィンドウで選択されているレイヤーの取得
IMxDocument pMxDoc = ArcMap.Document;
IFeatureLayer pLayer = (IFeatureLayer)pMxDoc.SelectedLayer;

//選択フィーチャの取得
IFeatureSelection pFS = (IFeatureSelection)pLayer;
ISelectionSet pSelectionSet = pFS.SelectionSet;

//マップ座標系の取得
ISpatialReference pSpatialRef = pMxDoc.FocusMap.SpatialReference;

//選択セットを Cursor として取得
ICursor pCursor;
pSelectionSet.Search(null, false, out pCursor);

//グラフィック バッファー ポリゴンの作成
IFeatureCursorBuffer2 pFeatureBuff = new FeatureCursorBufferClass();
pFeatureBuff.BufferSpatialReference = pSpatialRef;
pFeatureBuff.DataFrameSpatialReference = pSpatialRef;
pFeatureBuff.Dissolve = false;
pFeatureBuff.FeatureCursor = (IFeatureCursor)pCursor;
pFeatureBuff.SourceSpatialReference = pSpatialRef;
pFeatureBuff.TargetSpatialReference = pSpatialRef;
pFeatureBuff.set_Units(pMxDoc.FocusMap.MapUnits, ESRI.ArcGIS.esriSystem.esriUnits.esriMeters);
pFeatureBuff.ValueDistance = 1000;

//グラフィックス バッファー ポリゴンの表示
ICompositeGraphicsLayer pCompositeGraphicsLayer = (ICompositeGraphicsLayer)pMxDoc.FocusMap.BasicGraphicsLayer;
pFeatureBuff.BufferToGraphics(pCompositeGraphicsLayer);
pMxDoc.ActiveView.Refresh();
' [コンテンツ] ウィンドウで選択されているレイヤーの取得
Dim pMxDoc As IMxDocument = My.ArcMap.Document
Dim pLayer As IFeatureLayer = pMxDoc.SelectedLayer

'選択フィーチャの取得
Dim pFS As IFeatureSelection = pLayer
Dim pSelectionSet As ISelectionSet = pFS.SelectionSet

'マップ座標系の取得
Dim pSpatialRef As ISpatialReference = pMxDoc.FocusMap.SpatialReference

'選択セットを Cursor として取得
Dim pFCCursor As IFeatureCursor
pSelectionSet.Search(Nothing, False, pFCCursor)

'グラフィック バッファー ポリゴンの作成
Dim pFeatureBuff As IFeatureCursorBuffer2 = New FeatureCursorBuffer
With pFeatureBuff
    .BufferSpatialReference = pSpatialRef
    .DataFrameSpatialReference = pSpatialRef
    .Dissolve = False
    .FeatureCursor = pFCCursor
    .SourceSpatialReference = pSpatialRef
    .SpatialReference = pSpatialRef
    .TargetSpatialReference = pSpatialRef
    .Units(pMxDoc.FocusMap.MapUnits) = 9
    .ValueDistance = 1000
End With

'グラフィックス バッファー ポリゴンの表示
Dim pCompositeGraphicsLayer As ICompositeGraphicsLayer = pMxDoc.FocusMap.BasicGraphicsLayer
pFeatureBuff.BufferToGraphics(pCompositeGraphicsLayer)
pMxDoc.ActiveView.Refresh()

メタデータ

機能

種類

製品