注意!この記事はかなり古い情報です。現在のQGISとは操作方法が違いますので注意してください
元ネタは、「QGIS Label with a line to a feature」というYoutubeの手順紹介です。
以前から、ラベルを枠外に表示したいとき、そのラベルまでラインを自動で引きたいと思っていました。
こんな感じで。
FaceBookでこの動画を見て歓喜しました。
忘れないように操作方法などをメモっておこうと思います。
動画ではポイントとポリゴンの設定方法を紹介していますが、ここからは、ポリゴンの設定方法をメモしておきます。
なお、自分用のメモなので、あまり画像は貼りません。
1.属性データにラベル位置を設定する「x」と「y」フィールドを追加する
まずは、属性データにラベルの位置を記録するX座標とY座標を入力するフィールドを作ります。
新しいフィールドは、フィールド計算機で作成します。
ポリゴンの中心位置を求める計算式は、X座標「 x( centroid( $geometry ) ) 」、Y座標「 y( centroid( $geometry ) )」で求められます。
ただし、いびつなポリゴンの場合には、ポリゴンの外の座標が記録されることもあるので、「realcentroid」プラグインで、ポリゴンの中での中心付近のポイントを作って、そのポイント座標をフィールド計算機の計算式「$x」「$y」で取得してフィールドを作り、「場所で属性を結合する」でX座標とY座標をポリゴンに移してもいいと思います。
2.ラベルにX座標、Y座標を指定する
レイヤプロパティの「ラベル」で、ポリゴンに表示したいラベルを選択し、「配置」の「X」「Y」にそれぞれ追加した座標値が入力されているフィールドを指定します。
ここで、一度「適用」をクリックすると、ポリゴンの中心付近にラベルが表示されます。(座標フィールドに入力されている座標値が中心付近の座標のため)
3.スタイルでラベルにラインを引く
ポリゴンのスタイルを開き、「+」ボタンでシンボルを追加します。追加したシンボルは、ポリゴンの塗りつぶしシンボルより上に移動します。
追加したシンボルの種類を、「ジオメトリジェネレーター」にします。
「ジオメトリタイプ」を「Line String」にします。
計算式の欄に「make_line( centroid( $geometry ) , make_point( "x" , "y" ) ) 」と入力します。
「centroid( $geometry )」は、ポリゴンの中心点座標です。
「 make_point( "x" , "y" ) 」は、ラベルの位置です。
つまり、この計算式は、ポリゴンの中心点からラベルの位置までラインを引きなさい。と言う計算式です。
「realcentroid」プラグインで中心点をずらしている場合には、もう一つそのずらした中心点のX座標とY座標を記録したフィールドが必要です。
この場合は、計算式の欄に「make_line( make_point( "x1" , "y1" ) , make_point( "x2" , "y2" ) ) 」と入力します。
(x1、y1が中心付近の座標、x2、y2がラベルの位置の座標の場合)
これで、ラベルを移動すると、自動的にラベルにラインが付いて、そのラベルの地物がわかるようになります。
続きを読む
ラベル:QGIS