3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(QGIS)ポイントのラベルに引き出し線を引く

最近QGISをちょいと使い始めました。初心者なりに使い方をメモしておきます。
QGISは3.0です。

ポイントにラベルを付けた時に、ラベルをポイントから少し離したいときがあります。
その際に、ポイントとラベルの間に引き出し線を引く方法です。

f:id:deloreanmc12:20180325231841j:plain

以下YouTubeで方法が紹介されてました。
https://www.youtube.com/watch?v=lcaX5hlwNQ0

まず、ポイントレイヤーの[属性テーブル]を開きます。 ツールバーより[新規フィールド]にて以下のフィールドを追加します。

名前 x
タイプ 小数点付き数値(real)
長さ 20
精度 4

同様に名前が"y"のフィールドも作成します。

次にラベルの設定をします。 ポイントレイヤーの[プロパティ]-[ラベル]にて、[ラベルなし]→[このレイヤのラベルを表示]に変更します。[ラベル]ドロップダウンリストから表示したいラベルを選択します。
ここまでは通常のラベル表示手順ですね。

[データで定義された]セクションの[座標 X]を押下し、[フィールド型:整数,倍精度実数,string]-[x(倍精度実数)]を選択します。 同様に、[座標 Y]は[y(倍精度実数)]を選択します。

f:id:deloreanmc12:20180325230313j:plain

最後に線の設定です。
そしてポイントレイヤーの[プロパティ]-[シンポロジー]の+ボタン(シンボルレイヤの追加)を押下します。
[シンボルレイヤタイプ]を[Simple marker]→[Geometry generator]に変更します。
[ジオメトリタイプ]を[ラインストリング/マルチラインストリング]に変更します。
テキストボックスに以下の式を入力します。(動画では式ダイアログボックスを表示させてますが、ここでは式がわかってるので直接入力します)

make_line(  make_point( $x,$y), make_point( "x","y"))

make_lineの第一引数がポイントのある座標、第二引数がラベルのある座標になります。

これで引出線が引けるようになりました。

ラベルの左下に引出線が到達するので、第二引数に値を加えて若干ずらすと見やすくなります。 こんな感じです。

make_line(  make_point( $x,$y), make_point( "x+5","y"))

f:id:deloreanmc12:20180325231841j:plainf:id:deloreanmc12:20180325231949j:plain

ラベルを下方向にするとラベルと線がかぶるので背景を描画するようにしてやるといいかもしれません。

参考:
【QGIS】枠外にラベルを置くときにラベルまでラインを引く方法