18.2.4. ラベルアイテム

ラベル アイテムは、地図をテキストで装飾して地図の理解を助けるためのツールです。ラベルテキストにはタイトル、作成者、データソースやその他の情報などが考えられます。 label ラベルを追加 ツールを使用して、 アイテムの作成手順 に従いラベルを追加し、 レイアウトアイテムの操作 と同じ方法でラベルアイテムを操作します。

デフォルトでは、ラベルアイテムにはデフォルトのテキストが入っていますが、これは アイテムプロパティ パネルを使用して変更できます。 アイテムの共通プロパティ の他に、ラベルアイテムには以下の機能があります( 図 18.23 参照)。

../../../../_images/label_mainproperties.png

図 18.23 ラベルアイテムプロパティパネル

18.2.4.1. メインプロパティ

メインプロパティ グループは、ラベルを作成するためのテキスト(HTMLも可)または式を指定するための場所です。式の場合は、それが式として解釈されるために [%%] で囲む必要があります。

  • checkbox HTMLとしてレンダリングする にチェックを入れると、ラベルはHTMLコードとして解釈することができます。 これにより、URL、webページにリンクしたクリック可能な画像、あるいはさらに複雑なものを挿入することができます。

  • また、 を使用することもできます。 式の挿入・編集... ボタンをクリックして通常通りに式を書き、ダイアログでOKを押すと、QGISは式に自動的に囲み文字を追加します。

注釈

テキストボックスで何も選択されていない状態で 式の挿入・編集... ボタンをクリックすると、既存のテキストに対して新しい式が追加されます。既存のテキストを更新したい場合には、あらかじめ対象となる部分を選択しておく必要があります。

HTMLレンダリングと式を組み合わせることで、高度なラベル付けができるようになります。以下のコードは、 図 18.24 のような出力結果となります。

<html>
 <head>
   <style>
      /* Define some custom styles, with attribute-based size */
      name {color:red; font-size: [% ID %]px; font-family: Verdana; text-shadow: grey 1px 0 10px;}
      use {color:blue;}
   </style>
 </head>

 <body>
   <!-- Information to display -->
   <u>Feature Information</u>
   <ul style="list-style-type:disc">
     <li>Feature Id: [% ID %]</li>
     <li>Airport: <name>[% NAME %]</name></li>
     <li>Main use: <use>[% USE %]</use></li>
   </ul>
   Last check: [% concat( format_date( "control_date", 'yyyy-MM-dd'), ' by <b><i>', @user_full_name, '</i></b>' ) %]

   <!-- Insert an image -->
   <p align=center><img src="path/to/logos/qgis-logo-made-with-color.svg" alt="QGIS icon" style="width:80px;height:50px;"</p>
 </body>
</html>
../../../../_images/label_htmlexpression.png

図 18.24 HTMLスタイリングを使用したラベルの活用

18.2.4.2. 外観

  • フォント... ボタンをクリックして フォント を定義したり、 色ウィジェット を押して フォントの色 を定義します。

  • 水平方向や垂直方向のマージンを mm 単位で別々に指定できます。これは、レイアウトアイテムの端からの余白です。例えばラベルアイテムを他のアイテムと位置を揃える場合など、ラベル境界の外側にラベルを配置することもできます。この場合には、マージンに負の値を使用します。

  • テキスト配置の使用は、ラベルを配置するもう一つの方法です。これには、以下の設定があります:

    • 水平方向配置 については、 中央部正当化する

    • 垂直方向配置 については、 上部中央部Bottom

18.2.4.3. ラベルアイテムの式の探究

以下は、ラベルアイテムに興味深い情報入力するために使用できる式のいくつかの例です。コード、あるいは少なくとも計算式の部分は、 メインプロパティ フレームで [%%] で囲む必要があります。

  • 現在の地図帳地物の "field1" の値を使ったタイトルを表示する:

    'This is the map for ' || "field1"
    

    メインプロパティ セクションに書く場合には、以下のようにします:

    This is the map for [% "field1" %]
    
  • 現在の地図帳地物に関するページ番号を追加する(例 Page 1/10 ):

    concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
    
  • 共通の属性に基づいて、現在の地図帳領域地物に対する空港の名前を返す:

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := fk_regionId = attribute( @atlas_feature, 'ID' ),
               concatenator := ', '
             )
    

    属性リレーション が設定されている場合には、次のようにもできます:

    relation_aggregate( relation := 'airports_in_region_relation',
                        aggregate := 'concatenate',
                        expression := "NAME",
                        concatenator := ', '
                      )
    
  • 空間関係に基づいて、現在の地図帳領域地物に含まれる空港の名前を返す:

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := contains( geometry( @parent ), $geometry ),
               concatenator := ', '
             )
    

    または:

    array_to_string( array:= overlay_contains( layer := 'airports',
                                               expression := "NAME" ),
                     delimiter:= ', '
                   )
    
  • Map 1 アイテムの範囲のX座標の最小値を返す:

    x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
    
  • 現在のレイアウトの Map 1 アイテムのレイヤの名前を取得し、1行に1つのレイヤ名となるよう整形する:

    array_to_string(
     array_foreach(
      map_get( item_variables( 'Map 1' ), 'map_layers' ), -- retrieve the layers list
      layer_property( @element, 'name' ) -- retrieve each layer name
     ),
     '\n' -- converts the list to string separated by breaklines
    )