FAQ
選択したフィーチャのみを表示する方法

ナレッジ番号:5471 | 登録日:2023/07/27 | 更新日:2024/12/02

【概要】

以下のコードによって、フィーチャの選択セットのみを表示することができます。


【手順】

  1. ArcMapを起動します。

  2. Visual Basic Editorを開きます。

  3. プロジェクト・エクスプローラ・ウィンドウで、Projectの下にあるArcMap Objects > ThisDocumentをダブルクリックし、
    コード・ウィンドウを開きます。

  4. コード・モジュールに次のコードをペーストします。

    
    Sub Main()
    
      Dim pDoc As IMxDocument
      Dim pLayer As IGeoFeatureLayer
      Dim pFS As IFeatureSelection
      Dim pSS As ISelectionSet
    
      Set pDoc = Application.Document
    
      'TOC内でレイヤが選択されていることを確認します。
      Set pLayer = pDoc.SelectedLayer
      Set pFS = pLayer 'QI
      Set pSS = pFS.SelectionSet
    
      DisplayOnlySelectedFeatures pLayer, pSS
    
      'データフレームを再描画します。
      pDoc.ActiveView.Refresh
    
    End Sub
    
    Public Sub DisplayOnlySelectedFeatures(pGlayer As IGeoFeatureLayer, _
    pSelectionset As ISelectionSet)
    
      '変数宣言
      Dim pFCEntire As IFeatureCursor
      Dim pSelFC As IFeatureCursor
      Dim lEntireOID As Long
      Dim lSelOID As Long
      Dim pFeatureIDSet As IFeatureIDSet
      Dim pEntireEnumId As IEnumIDs
      Dim pSelEnumIds As IEnumIDs
      Dim pEntireSelSet As ISelectionSet
    
      'フィーチャクラス内の全フィーチャをFeatureCursorとSelectionSetへ格納します。
      Set pFCEntire = pGlayer.FeatureClass.Search(Nothing, False)
      pSelectionset.Search Nothing, False, pSelFC
    
      'SelectionSetからIDリストを取得します。
      Set pSelEnumIds = pSelectionset.IDs
      pSelEnumIds.Reset
      lSelOID = pSelEnumIds.Next
      Set pEntireSelSet = pGlayer.FeatureClass.Select(Nothing, _
      esriSelectionTypeHybrid, esriSelectionOptionNormal, Nothing)
      Set pEntireEnumId = pEntireSelSet.IDs
      pEntireEnumId.Reset
      lEntireOID = pEntireEnumId.Next
      Set pFeatureIDSet = New FeatureIDSet
    
      'ループ処理によって全てのOIDをFeatureIDSetオブジェクト内に追加します。
      Do Until lEntireOID = -1
        pFeatureIDSet.Add lEntireOID
        lEntireOID = pEntireEnumId.Next
      Loop
    
      '選択したフィーチャのOIDリストをループ処理します。
      'FeatureIDSet内にOIDが含まれている場合は、そのIDをFeatureIDSetから取り除きます。
      Do Until lSelOID = -1
        If pFeatureIDSet.Contains(lSelOID) Then
          pFeatureIDSet.Remove (lSelOID)
        End If
        lSelOID = pSelEnumIds.Next
      Loop
    
      '取り除いたFeatureIDSetを設定して表示するフィーチャを制限します。
      Set pGlayer.ExclusionSet = pFeatureIDSet
    
    
    
    
    End Sub
    
    
  5. Visual Basic Editorを閉じます。

  6. ArcMapへフィーチャクラスを追加し、いくつかのフィーチャを選択します。

  7. TOCからレイヤを選択します。

  8. マクロを実行します。

    A:ArcMapで、ツール > マクロ > マクロと選択し、マクロ・ダイアログを表示します。

    B:マクロを選択し、実行をクリックします。

メタデータ

種類

機能

製品