ラベル機能を使用すると地物の近くに属性情報等を表示することができます。
地物が密集している場合、複数のラベルが重なって表示されることがあります。

初期設定では、ラベルの大きさやレイヤの並び順で自動的に表示順序が決定されます。
そのため、意図した表示にならず、一番上に表示してほしいラベルが、下の方に表示されてしまう場合があります。

今回紹介する方法では、レイヤ単位でラベルの表示順を指定することができます。
「Aレイヤのラベルは一番下、Bレイヤは2番目、Cレイヤは一番上」という風に、ラベルが重なった時の順番を指定できます。

なお、今回の方法を使用せずに、1つずつラベルの位置を調整して、重ならないようにすることもできます。
しかし、「地物の数が非常に多く、そこまでの労力はかけられない。特に重要なラベルは重なっても表示されるようにしたい。」という場合に、今回の方法は有効です。

国土数値情報の「郵便局」データというポイントデータを使用して説明を行います。

ラベルの設定画面の開き方
レイヤパネルでラベルを表示するレイヤの右クリックメニューから「プロパティ」を選択します。「レイヤプロパティ」ウインドウが表示されるので左側に並んでいる文字列から「ラベル」を選択しラベルの設定画面を開きます。 上部の選択メニューを「なし」から「単一定義」に変更すると、ラベル表示に係る設定項目が表示されます。

異なるレイヤのラベルの重なり順を指定する

複数のレイヤでラベルを表示しておりラベルが重なって表示されている時の重なり順を指定する方法です。
以下の画像では、3つのレイヤのラベルが重なって表示されています。

trygis026 26 min
重なったラベル。上から行政区域名(白バッファの黒文字)、郵便局名(フレーム付きの黒文字)、駅名(赤バッファの白文字)の順で重なって表示されている

QGISの初期設定では、このようにラベルが重なる場合、以下のルールで表示されます。

  • 2つのラベルが異なるレイヤのものである場合、ラベルはレイヤ自体の順序と同じように描画される(レイヤパネルの一番上のレイヤのラベルが一番上の表示される)
  • 2つのラベルが同じレイヤのものである場合、小さいサイズのラベルが大きいサイズのラベルの上に描画される

ルール通りだと、異なるレイヤのラベルは、レイヤの並び順で重なって表示されます。
上の画像の場合、上から行政区域レイヤ、郵便局レイヤ、駅名レイヤの並びになっています。

trygis026 27 min
レイヤの並び順。上から行政区域レイヤ、郵便局レイヤ、駅名レイヤになっている

しかし、作業をしやすくなる順番でレイヤを並べている場合など、ラベルの表示順と一致させることが難しい場合も多くあります。
そのような場合には、Z-indexという項目で表示される優先順位を指定します。

Z-indexを設定するには、ラベルの設定画面左側のメニューから「レンダリング」を選択し、レンダリング関連の設定欄を開きます。

trygis026 28 min
ラベルの設定画面から「レンダリング」を選択する

中央部に「ラベルのz-index」欄があります。
ここにラベルの表示順を指定する数字を入力します。
入力した数値が大きいレイヤほど、ラベルが上に表示されます。

trygis026 29 min
「ラベルのz-index」欄に入力した数値が大きい順に上から表示される

数値自体に意味はなく順番がわかれば大丈夫です。
例えば、郵便局レイヤ→駅名レイヤ→行政区域レイヤの順番でラベルを表示したい場合は、以下のように入力します。

  • 郵便局レイヤを「1」
  • 駅名レイヤを「0」
  • 行政区域レイヤを「-1」

Z-indexを使用してラベルの表示順を変更すると以下のようになります。

trygis026 30 min
Z-indexの数値を指定し、レイヤの順番と異なる順番でラベルを重ならせて表示させた

使用したデータ