FAQ
2番目のフィールドの値を使用して個別値のシンボルをソートする方法

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

【概要】

2番目のフィールドの値を使用して個別値のシンボルをソートする方法を示します。

レイヤのプロパティ > シンボル > カテゴリ > "スタイルのシンボルに一致"を使用したときに、
値でアルファベット順にソートしたり、矢印ボタンを使用して手動でソートしたりすることができます。
アルファベット順にソートしたくない場合や多くの異なるクラスがある場合、
以下のコードによって2番目のフィールドを使用してソートすることができます。


【手順】

  1. 属性テーブルに数値フィールドを追加し、TOCや凡例にリストしたいシンボルの順番を示す値をつけていきます。

  2. TOCからレイヤを右クリックし"プロパティ"を選択します。

  3. "シンボル"タブをクリックし、カテゴリ > "複数フィールドによる個別値"を選択します。

  4. 1番目のフィールドは手順1で追加した、ソート順を示す数値フィールドを選択します。2番目のフィールドは分類用のフィールドを選択します。

  5. "全ての値を追加"をクリックしてからOKボタンをクリックします。

  6. ラベルは両方の値を使用するため、TOCや凡例には以下のように数値順で表示されます。

    Image

  7. 凡例の表示から数値部分(すなわち"1, "の部分)を取り除くために、以下のコードを実行します。

  8. Visual Basic Editorを開きます。

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

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

    
    Sub TrimClassLabels()
    
      Dim pMxDoc As IMxDocument
      Dim pGeoFeatLayer As IGeoFeatureLayer
      Set pMxDoc = Application.Document
      ' 最上位レイヤを取得します。
      Set pGeoFeatLayer = pMxDoc.ActiveView.FocusMap.Layer(0)
      Dim pUVRend As IUniqueValueRenderer
      Set pUVRend = pGeoFeatLayer.Renderer
    
      Dim i As Integer
      Dim j As Integer
      Dim strLabel As String
      Dim strValue As String
      For i = 0 To pUVRend.ValueCount - 1
        strValue = pUVRend.Value(i)
        j = InStr(strValue, ",")
        strLabel = Right(strValue, Len(strValue) - j)
        ' 2番目のフィールドの値だけにします。
        strLabel = LTrim(strLabel)
        pUVRend.Label(strValue) = strLabel
      Next i
    
      pMxDoc.UpdateContents
      pMxDoc.ActiveView.Refresh
    
    End Sub
    
    
  11. Visual Basic Editorを閉じます。

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

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

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

  13. TOCや凡例には以下のように。表示されます。

    Image

メタデータ

種類

機能

製品