14.1. ベクタプロパティダイアログ

ベクタレイヤの レイヤプロパティ ダイアログには、地図内のレイヤの地物の外観(シンボロジ、ラベル、ダイアグラム)やマウスとのインタラクション(アクション、地図のTips、フォームデザイン)を管理するための一般的な設定があります。また、レイヤについての情報を提供します。

レイヤプロパティ ダイアログにアクセスするには:

  • レイヤ パネル内において、レイヤをダブルクリックするか、レイヤを右クリックしてポップアップメニューから プロパティ... を選択する

  • レイヤを選択した状態で、 レイヤ ► レイヤのプロパティ... メニューを選ぶ

ベクタ レイヤプロパティ ダイアログには以下のセクションがあります:

メタデータ 情報

システム ソース

シンボロジー シンボロジ[1]

ラベリング ラベル[1]

ラベルマスク マスク[1]

3d 3Dビュー[1]

ダイアグラム ダイアグラム

sourceFields 属性

formView 属性フォーム

結合 テーブル結合

auxiliaryStorage 補助テーブル

アクション アクション

ディスプレイ 表示名

レンダリング レンダリング

時系列 時系列

式 変数

editMetadata メタデータ

依存関係 依存関係

凡例 凡例

オーバーレイ QGISサーバー

digitizing デジタイズ

外部プラグイン[2] タブ

[1] レイヤスタイルパネル からも利用可能です

[2] インストールした 外部プラグイン は、任意でこのダイアログにタブを追加できます。これらについては、このドキュメントでは説明しません。外部プラグインのドキュメントを参照してください。

ちなみに

レイヤスタイルの完全なまたは部分的なプロパティを共有する

ダイアログの下部にある スタイル メニューを使用すると、レイヤスタイルのプロパティまたはその一部をさまざまな対象(ファイル、クリップボード、データベース)からインポートしたり、対象へエクスポートしたりすることができます。 カスタムスタイルを管理する を参照してください。

注釈

埋め込まれたレイヤ( プロジェクトを入れ子にする を参照)のプロパティ(シンボロジ、ラベル、アクション、デフォルト値、フォーム...)は、元のプロジェクトファイルから引き出されているため、この動作を壊す可能性のある変更を避けるために、埋め込まれたレイヤに対してはレイヤプロパティダイアログは利用できなくなっています。

14.1.1. 情報プロパティ

メタデータ 情報 タブは読み取り専用で、現在のレイヤの要約された情報やメタデータをさっと掴むことができる興味深い場所です。提供される情報には、以下のものがあります:

  • レイヤのプロバイダからの情報(ストレージ形式、パス、ジオメトリのタイプ、データソースのエンコーディング、領域など...)

  • メタデータ から抜き出した情報(アクセス、リンク、連絡先、履歴など...)

  • ジオメトリに関連した情報(空間領域、CRSなど...)や、属性(フィールドの数、各フィールドの特性など...)に関する情報

14.1.2. ソースプロパティ

システム このタブでは、ベクタレイヤの一般的な設定の定義ができます。

../../../_images/vector_source_menu.png

図 14.1 ベクタレイヤプロパティダイアログのソースタブ

レイヤパネル 内に表示される レイヤ名 の設定の他に、以下のオプションがあります:

14.1.2.1. 座標参照系

  • レイヤの 座標参照系(CRS) を表示します。最近使用したCRSをドロップダウンリストから選ぶか、 setProjection CRSの選択 ボタン( 座標参照系の選択 を参照)をクリックすることで、レイヤのCRSを変更できます。レイヤに適用されたCRSが間違っていた場合か、CRSが何も適用されていない場合にのみ、この操作を行ってください。データを別のCRSに再投影したい場合には、プロセシングアルゴリズムのレイヤの再投影を使用するか、 別のレイヤに保存 してください。

  • 空間インデックスの作成 (OGRがサポートする形式のみです)

  • 領域の更新 レイヤの領域情報を更新します。

14.1.2.2. クエリビルダ

クエリビルダ ダイアログは、レイヤプロパティダイアログの ソース タブの下部、 プロバイダ地物フィルタ グループの下にある名前どおりのボタンからアクセスできます。

クエリビルダは、SQLライクな WHERE句を使用してレイヤ内の地物のサブセットを定義し、メインウィンドウにその結果を表示するためのインターフェースを提供します。クエリが有効である限り、プロジェクトで利用可能となる地物はクエリの結果に対応するもののみです。

クエリビルダ でフィルタを定義するために、複数のレイヤ属性を使用することができます。複数の属性の使用例を 図 14.2 に示します。この例では、フィルタは属性の結合を行っています。

  • toa (DateTime フィールド: cast("toa" as character) > '2017-05-17'cast("toa" as character) < '2019-12-24T18:00:00') 、

  • name (String フィールド: "name" > 'S') 、

  • FID (Integer フィールド: FID > 10)

これらをAND、ORそしてNOT演算子と括弧で結合しています。この文法( toa フィールドのDateTime形式も含め)は、GeoPackageデータセットで動作します。

フィルタはデータプロバイダ(OGR、PostgreSQL、MSSQLなど...)のレベルで適用されます。従って、構文はデータプロバイダに依存します(例えばDateTime型はESRIシェープファイル形式ではサポートしていません)。完全な式は以下のようになります:

cast("toa" as character) > '2017-05-17' AND
cast("toa" as character) < '2019-12-24T18:00:00' AND
NOT ("name" > 'S' OR FID > 10)
../../../_images/queryBuilder.png

図 14.2 クエリビルダ

また、 クエリビルダ ダイアログは レイヤ メニューまたはレイヤのコンテキストメニューの フィルタ... オプションを使用して開くこともできます。ダイアログの フィールド演算子 セクションは、 プロバイダ特有のフィルタ式 ボックスに表示されるSQLライクなクエリを構築するのに役立ちます。

フィールド のリストには、レイヤの全てのフィールドが含まれます。SQL WHERE句フィールドに属性カラムを追加するには、フィールド名をダブルクリックするか、SQLボックスにフィールド名を入力します。

フレームは現在選択されているフィールドの値をリストします。フィールドのユニークな値を全てリストするには、 全て ボタンをクリックします。代わりに、カラムのユニークな値を最初の25個リストするには、 サンプル ボタンをクリックします。SQL WHERE句フィールドに値を追加するには、値リストの値をダブルクリックします。値フレームの上部にある検索ボックスを使用して、リスト内から属性値を簡単にブラウズして見つけることができます。

演算子 セクションには、使用可能な演算子全てが含まれています。SQL WHERE句フィールドに演算子を追加するには、適切なボタンをクリックします。関係演算子( => など...)、文字列比較演算子( LIKE )、論理演算子( ANDOR など...)が利用可能です。

テスト ボタンはクエリをチェックするのに役立ち、現在のクエリを満足する地物の数がメッセージボックスに表示されます。 クリア ボタンを使うと、SQLクエリを消去し、レイヤを元の状態(すなわち全ての地物を完全に読み込む状態)に戻します。

フィルタが適用されている場合、QGISは結果として得られるサブセットがレイヤの全体であるかのように扱います。例えば、 'Borough' にフィルタ("TYPE_2" = 'Borough' )を適用すると、 Anchorage を表示することも、クエリすることも、保存も編集もできません。なぜならば、これは 'Municipality' であり、従ってサブセットの部分には含まれないからです。

ちなみに

レイヤパネル内におけるフィルタされたレイヤの表示

レイヤ パネルにおいて、フィルタされたレイヤはレイヤの横に indicatorFilter フィルター アイコンが表示され、ボタンの上にマウスを置くと、使用されているクエリが表示されます。アイコンをダブルクリックすると クエリビルダ ダイアログが開き、フィルタを編集できます。

14.1.3. シンボロジプロパティ

シンボロジー シンボロジタブには、ベクタデータのレンダリングとシンボライズのための包括的なツールが用意されています。すべてのベクタデータに共通のツールや、さまざまな種類のベクタデータ用に作られた特別なシンボライズツールを使用することができます。ただし、すべてのタイプで次のようなダイアログ構造は共通です:上部には分類と地物のシンボルを準備するのに役立つウィジェットがあり、下部には レイヤレンダリング ウィジェットがあります。

ちなみに

様々なレイヤ表現をすばやく切り替える

レイヤプロパティ ダイアログの下部にある スタイル ► 追加 メニューを使用すると、必要なだけスタイルを保存できます。スタイルとは、レイヤの全てのプロパティ(例えばシンボロジ、ラベル、ダイアグラム、属性フォーム、アクションなど)を好きなように組み合わせたものです。そして、 レイヤパネル 内のレイヤのコンテキストメニューからスタイルを切り替えるだけで、異なるデータ表現が自動的に得られます。

ちなみに

ベクタシンボロジをエクスポートする

QGISからGoogle *.kml や *.dxf、MapInfo *.tab ファイルにベクタシンボロジをエクスポートするオプションがあります。まずはレイヤの右マウスメニューを開き、 名前を付けて保存... をクリックして、出力ファイルの名前とその形式を指定します。ここでダイアログで シンボロジのエクスポート メニューを使用して、シンボルを 地物シンボロジ ► または シンボルレイヤシンボロジ ► のいずれかとして保存します。シンボルレイヤを使用している場合には、2番目の設定を使用することをお勧めします。

14.1.3.1. 地物のレンダリング

レンダラーは適切なシンボルでの地物の描画を担います。レイヤのジオメトリタイプに関係なく、レンダラーには4つの共通なタイプ:単一、カテゴリ値、連続値、ルールベースがあります。ポイントレイヤには、点の競合回避とヒートマップレンダラもあり、ポリゴンレイヤは反転ポリゴンと2.5Dレンダラーを使用してレンダリングすることもできます。

連続色のレンダラーはありません。これは、実際には連続値レンダラーの特殊な場合でしかないからです。カテゴリ値レンダラーおよび連続値レンダラーは、シンボルとカラーランプを指定して作成することができ、これによってシンボルの色を適切に設定できます。各データタイプ(ポイント、ライン、およびポリゴン)には、ベクタシンボルレイヤタイプが利用可能です。選択したレンダラーによっては、ダイアログにさまざまな追加のセクションがあります。

注釈

ベクタレイヤのスタイルを設定する際にレンダラーの種類を変更しても、シンボルに設定した内容は維持されます。この機能は変更1回だけにしか働かないことに注意してください。レンダラーの種類の変更を繰り返すと、シンボルの設定は失われます。

単一シンボルレンダラー

singleSymbol 単一定義(single) レンダラは、単一のユーザー定義のシンボルを使用してレイヤの全ての地物をレンダリングするために使用します。シンボル表現についての情報は、 シンボルセレクタ を参照してください。

../../../_images/singlesymbol_ng_line.png

図 14.3 単一シンボルラインプロパティ

シンボルレンダラーなし

nullSymbol シンボルなし レンダラーは、全ての地物に同一のレンダリングを適用することから、「単一定義シンボル」の特別なユースケースです。このレンダラーを使用すると、地物には何のシンボルも描画されませんが、ラベルやダイアグラム、その他の非シンボル部分は表示されます。

地物選択もキャンバスのレイヤで行うことができ、選択された地物はデフォルトのシンボルでレンダリングされます。編集中の地物も表示されます。

このレンダラーは、ラベルやダイアグラムだけを表示したいレイヤのための便利なショートカットです。この目的のために完全に透明な塗りつぶしやストロークでシンボルをレンダリングする必要はありません。

カテゴリ値レンダラー

categorizedSymbol カテゴリ値による定義(categorized) レンダラーは、属性値または式の離散的な値を反映する側面を持ったユーザー定義のシンボルを使用してレイヤの地物をレンダリングするために使用します。

../../../_images/categorysymbol_ng_line.png

図 14.4 カテゴリ値シンボルのオプション

カテゴリ値によるシンボロジをレイヤに使用するには、以下のように操作します。

  1. 分類の の選択: これには既存のフィールドまたは が使用できます。式はボックスに入力するか、関連する 式 ボタンを使用して構築することができます。 カテゴリ値に式を使用することで、シンボロジのために一時的なフィールドを作成する必要がなくなります(例えば、分類基準が複数の属性値に由来する場合など)。

    地物の分類のために使用する式は、どんな種類のものでも可能です。例えば、

    • 比較式:この場合、QGISは 1True ) か 0False )を返します。 以下は一例です。

      myfield >= 100
      $id = @atlas_featureid
      myfield % 2 = 0
      within( $geometry, @atlas_geometry )
      
    • 異なるフィールドの結合:

      concat( field_1, ' ', field_2 )
      
    • フィールド値を使った計算結果:

      myfield % 2
      year( myfield )
      field_1 + field_2
      substr( field_1, -3 )
      
    • 連続値から離散値への変換:例えば、

      CASE WHEN x > 1000 THEN 'Big' ELSE 'Small' END
      
    • 複数の離散値を結合して単一カテゴリ化:例えば、

      CASE
      WHEN building IN ('residence', 'mobile home') THEN 'residential'
      WHEN building IN ('commercial', 'industrial') THEN 'Commercial and Industrial'
      END
      

    ちなみに

    地物を分類するためにはどんな種類の式も使用できますが、いくつかの複雑な式については ルールによる定義に基づくレンダリング を使用する方が簡単かもしれません。

  2. 全てのクラスのベースシンボルとなる シンボル を設定します。

  3. カラーランプ を指定します。すなわち、各シンボルに適用する色によって、色の範囲を選択します。

    カラーランプウィジェット の一般的なオプションに加えて、 unchecked ランダムカラーランプ をカテゴリに適用することもできます。色が気に入らない場合には、 色をシャッフル エントリをクリックすると新しいランダムカラーの組み合わせを再生成することができます。

  4. 次に、 分類 ボタンをクリックすると、与えられたフィールドもしくは式の離散値からクラスを生成します。

  5. ライブ更新 が利用できない場合には、 適用 ボタンを押して変更を適用すると、マップキャンバス上の各地物がその分類のシンボルでレンダリングされます。

    デフォルトでは、QGISは そのほかの値 クラスをリストに追加します。初期状態では値が空ですが、このクラスは他のクラスに該当しない地物のためのデフォルトのクラスとして使用されます(例えば、分類フィールド/式にない値を持った新しい地物を作成した場合)。

デフォルトの分類をさらに微調整することができます:

  • 新しい分類を signPlus 追加 したり、選択した分類を signMinus 削除 する、または分類を すべて削除 することができます。

  • クラス名の左にあるチェックボックスのチェックを外すことで、クラスを無効化することができます。無効化されたクラスに対応する地物はマップ上に表示されません。

  • 行をドラッグ&ドロップしてクラスの順序を並べ替えることができます。

  • アイテムをダブルクリックすると、シンボルや値、クラスの凡例を変更することができます。

選択したアイテムを右クリックすると、コンテキストメニューが表示されます:

  • シンボルをコピーするシンボルを貼り付ける は、アイテムの表現を他のクラスに適用するのに便利な方法です。

  • 選択したシンボルの 色を変更...

  • 選択したシンボルの 不透明度を変更...

  • 選択したシンボルの 出力単位を変更...

  • 選択したラインシンボルの 幅を変更する...

  • 選択したポイントシンボルの サイズを変更...

  • 選択したポイントシンボルの 角度を変更...

  • カテゴリをマージ :選択した複数のカテゴリを1つにまとめます。これにより、多数のカテゴリを持つレイヤのスタイル設定を簡単にできます。多数の相異なるカテゴリを、複数の値に適用される少数のより管理しやすいカテゴリの組にまとめることが可能になります。

    ちなみに

    マージされたカテゴリのシンボルは、リスト内で選択されたカテゴリのうち最上位のものとなるため、マージする前に再利用したいシンボルのカテゴリを上に移動させると良いでしょう。

  • 以前にマージされた カテゴリをアンマージ

詳細設定 メニューのオプションにアクセスして、分類を効率化したり、シンボルレンダリングを微調整することができます。

  • 保存されたシンボルに一致シンボルのライブラリ を使用して、分類のクラス値と名前が一致するシンボルを各カテゴリに割り当てます。

  • ファイルからのシンボルに一致... :シンボルが保存されたファイルを指定して、分類のクラス値と名前が一致するシンボルを各カテゴリに割り当てます。

  • 描画順序... は、シンボルのレンダリング順序を定義できます。

ちなみに

レイヤ パネルからカテゴリを直接編集する

レイヤのシンボロジが カテゴリ値連続値 または ルール に基づくシンボロジモードの場合、 レイヤ パネルから各カテゴリを編集することが可能です。レイヤのサブアイテムを右クリックして、以下の操作が可能です:

  • toggleAllLayers アイテム切り替え カテゴリの可視性を変更します

  • showAllLayers 全アイテム表示

  • hideAllLayers 全アイテム非表示

  • カラーセレクタ ホイールを使用したシンボル色の修正

  • シンボルセレクタ ダイアログを使用した シンボルの編集...

  • シンボルをコピーする

  • シンボルを貼り付ける

連続値レンダラー

graduatedSymbol 連続値による定義(graduated) レンダラーは、選択した地物の属性値のクラス割り当てを反映した色やサイズのユーザー定義のシンボルを使用して、レイヤの地物すべてをレンダリングするために使用します。

カテゴリ値レンダラーと同じように、連続値レンダラーでは特定の列から回転とサイズ縮尺の値を定義できます。

また、カテゴリ値レンダラーと同じように、以下の選択ができます:

  • 値(フィールドのリストボックスか、 式 値の式の設定 機能を使用します)

  • シンボル(シンボルセレクタダイアログを使用します)

  • 凡例のフォーマットと精度

  • シンボルを変更するために使用する方法:色または大きさ

  • 色(カラーランプのリストを使用):方法で色を選択した場合

  • 大きさ(大きさの定義域およびその単位)

それから、割り当てられたフィールドまたは式の値のインタラクティブなヒストグラムを示す「ヒストグラム」タブを使用できます。ヒストグラムウィジェットを使用して、クラス分割の移動や追加ができます。

注釈

ベクタレイヤに関する詳細な情報を取得するために、統計パネルを使用できます。 統計パネル 参照。

「クラス」タブに戻って、クラスの数および地物をクラスに分類するためのモードも(「モード」リストを使用して)指定できます。使用可能なモードは以下のとおりです:

  • 等量分類(Quantile):各クラスは同じ数の要素を持ちます(ボックスプロットの考え方)。

  • 等間隔分類:各クラスは同じサイズを持ちます(例:値の範囲が1から16で、4つのクラスとすると、各クラスのサイズは4です)

  • 対数スケール:広い範囲の値を持つデータに対して適しています。小さい値は狭いクラス、大きな値は広いクラスになります(例:範囲 [0..100] の10進数で、2つのクラスとすると、1つ目のクラスは0から10まで、2つ目のクラスは10から100までとなります)。

  • 自然分類(Jenks):各クラス内の分散を最小化し、クラス間の分散を最大化するように分類します。

  • 丸め間隔(Pretty):xの値の範囲をカバーする、約n+1 個の等間隔のちょうどよい値の列を計算します。値は10のべき乗の1、2または5倍になるように選択されます(R言語のpretty https://www.rdocumentation.org/packages/base/topics/pretty に基づいています)。

  • 標準偏差:クラスは値の標準偏差に応じて形成されます。

シンボロジ タブの中央にあるリストボックスには、クラスと値の範囲、凡例、レンダリングされるシンボルがリストされます。

分類 ボタンをクリックすると、選択したモードを使用してクラスが作成されます。各クラスは、クラス名の左にあるチェックボックスのチェックを外すことで無効にできます。

シンボルや値、クラスの凡例を変更するには、変更したい項目をダブルクリックします。

選択したアイテムを右クリックすると、コンテキストメニューが表示されます:

  • シンボルをコピーするシンボルを貼り付ける は、アイテムの表現を他のクラスに適用するのに便利な方法です。

  • 選択したシンボルの 色を変更...

  • 選択したシンボルの 不透明度を変更...

  • 選択したシンボルの 出力単位を変更...

  • 選択したラインシンボルの 幅を変更する...

  • 選択したポイントシンボルの サイズを変更...

  • 選択したポイントシンボルの 角度を変更...

図 14.5 の例は、QGISサンプルデータセットの major_rivers レイヤに対する連続値レンダリングダイアログを示しています。

../../../_images/graduatedsymbol_ng_line.png

図 14.5 連続値シンボルのオプション

ちなみに

式を利用した主題図

式の結果を利用して、カテゴリ分けされた主題図や段階値で分けられた主題図を作成することができます。ベクタレイヤのプロパティダイアログにおいて、属性値のセレクタは 式 列の式を設定 機能で拡張されています。そのため、分類属性を複数のフィールドの合成やある種の式としたい場合に、属性テーブルの新しい列に分類属性を記述する必要はありません。

比例シンボルと多変量解析

比例シンボルや多変量解析は、シンボロジのレンダリングドロップダウンリストから利用可能なレンダリングタイプではありません。しかし、上に挙げた任意のレンダリングオプションと データによって定義された上書き オプションを組み合わせることで、QGISにおいてポイントデータやラインデータをそのような表現で表示することができます。

比例シンボルを作成する

比例シンボルレンダリングを適用するには、以下の手順で操作します:

  1. まずは、レイヤに 単一シンボルレンダラー を適用します。

  2. 次に、地物に適用するシンボルを設定します。

  3. シンボルツリーの上位のアイテムを選択し、 大きさ (ポイントレイヤ)や (ラインレイヤ)オプションの隣にある dataDefined データによって定義された上書き ボタン を使用します。

  4. フィールドを選択するか式を入力すると、各地物についてQGISは出力値をプロパティに適用し、マップキャンバスのシンボルを比例したサイズに変更します。

    必要ならば、 dataDefined メニューの アシスタント... オプションを使用することで、シンボルサイズに何らかの変換(指数関数的、フラナリー...)を適用し、サイズの再スケーリングができます(詳細は データによる定義のアシスタントインターフェースを使用する 参照)。

レイヤパネル 内や 印刷レイアウトの凡例アイテム で比例シンボルを表示するかどうかを選択することができます。シンボロジ タブのメインダイアログの下部にある 詳細設定 ドロップダウンリストを開き、 データによる凡例サイズの定義... を選択して、凡例アイテムの設定ができます(詳細は データ定義による凡例サイズ を参照)。

../../../_images/proportional_symbols.png

図 14.6 空港の標高に応じた空港シンボルのスケーリング

多変量解析を作成する

多変量解析レンダリングを使用すると、複数の変数間の関係を評価するのに役立ちます。例えば、ある変数をカラーランプで表して、別の変数をサイズで表現することができます。

QGISで多変量解析を作成する最も簡単な方法は、

  1. はじめに、カテゴリ値または連続値によるレンダリングをレイヤに適用します。すべてのクラスが同じタイプのシンボルです。

  2. 次に、クラスに比例シンボロジを適用します:

    1. 分類フレームの上にある 変更 ボタンをクリックすると、 シンボルセレクタ ダイアログが開きます。

    2. 上で見たのと同様、 dataDefined データによって定義された上書き ウィジェットを使用して、シンボルレイヤの大きさや幅を再スケーリングします。

比例シンボルと同様に、カテゴリ値あるいは連続値クラスシンボルの上には、 データによる凡例サイズの定義 機能を使用してスケーリングされたシンボロジをレイヤツリーに追加することができます。また、これらの表現は印刷レイアウトの凡例アイテムでも利用可能です。

../../../_images/multivariate_example.png

図 14.7 凡例サイズを変化させた多変量解析の例

ルールベースレンダラー

ruleBasedSymbol ルールによる定義(rule-based) レンダラーは、選択された地物の属性のクラスへの割り当てを反映したルールベースのシンボルを使用して、レイヤの地物すべてをレンダリングするために使用します。ルールはSQL文に基づいており、入れ子にすることができます。このダイアログではフィルタやスケールによるルールのグループ化が可能で、ルールはシンボルレベルで有効とするか、最初にマッチしたルールのみを使用するかを決められます。

ルールを作成するには:

  1. 既存の行をダブルクリックしてアクティブにするか(デフォルトでは、QGISはレンダリングモードが有効な場合、ルールなしのシンボルを追加します)、または projectProperties 現在のルールを編集 ボタンまたは signPlus ルールを追加 ボタンをクリックします。

  2. 開いた ルールの編集 ダイアログにおいて、各ルールを識別しやすいようにラベルを定義することができます。このラベルは レイヤパネル 内や印刷レイアウトの凡例にもに表示されます。

  3. radioButtonOn フィルタ オプションの隣にあるテキストボックスに式を手入力するか、テキストボックスの隣にある 式 ボタンを押し、式文字列ビルダダイアログを開きます。

  4. 提供されている関数とレイヤ属性を使用して、検索したい地物をフィルタリングするための を作成します。 テスト ボタンを押すと、クエリの結果が確認できます。

  5. ルールの詳しい説明のため、より長いラベルを入力することができます。

  6. checkbox 縮尺の範囲 オプションを使用して、ルールが適用される縮尺を設定することができます。

  7. 最後に、地物に 使用するシンボル を設定します。

  8. そして、 OK ボタンを押します。

ルールを要約した新しい行がレイヤプロパティダイアログに追加されます。上記の手順に従いルールを作成するか、既存のルールをコピー&ペーストして、必要なだけルールを作成できます。ルールをドラッグ&ドロップで上に重ねることで、ルールを入れ子にし、上位のルールの地物をサブクラスで改良できます。

ルールを選択したのち、 選択したルールの絞り込み ドロップダウンメニューを使用して、地物をサブクラスに構造化することもできます。自動的なルールの絞り込みは以下に基づきます:

絞り込まれたクラスはルールのサブアイテムのようにツリー階層に表示され、上記と同様、各クラスにシンボロジを設定できます。

ルールの編集 ダイアログでは、全てのルールは記述せず、 radioButtonOff もしくは オプションを使用して、同じレベルの他のどんなルールにもマッチしない地物全てをキャッチすることができます。これは、 レイヤプロパティ ► シンボロジ ► ルールによる定義 ダイアログの ルール 列に Else と入力することでも実現できます。

選択したアイテムを右クリックすると、コンテキストメニューが表示されます:

  • コピー貼り付け :既存のアイテムをもとに新しいアイテムを作成するのに便利な方法です。

  • シンボルをコピーするシンボルを貼り付ける は、アイテムの表現を他のクラスに適用するのに便利な方法です。

  • 選択したシンボルの 色を変更...

  • 選択したシンボルの 不透明度を変更...

  • 選択したシンボルの 出力単位を変更...

  • 選択したラインシンボルの 幅を変更する...

  • 選択したポイントシンボルの サイズを変更...

  • 選択したポイントシンボルの 角度を変更...

  • 現在のルールを再調整するスケールカテゴリ (カテゴリ値レンダラー)、 範囲 (連続値レンダラー)で現在のルールの絞り込みができるサブメニューを開きます。

作成したルールはマップ凡例内のツリー階層にも表示されます。マップ凡例のルールをダブルクリックすると、レイヤプロパティのシンボロジタブが表示され、ツリー内のシンボルのもととなっているルールが表示されます。

図 14.8 の例は、QGISサンプルデータセットの河川レイヤに対するルールによるレンダリングダイアログを示しています。

../../../_images/rulesymbol_ng_line.png

図 14.8 ルールによる定義シンボルのオプション

点の競合回避レンダラー

pointDisplacementSymbol 点の競合回避 レンダラーを使用すると、ポイントが同じ位置にあったとしても、ポイントレイヤの全ての地物を可視化できます。これを実現するため、レンダラーはお互いが与えられた許容範囲の 距離 内にあるポイントをとり、その重心の周りにさまざまな 配置方法 に従って配置させます。配置方法には下記のものがあります:

  • リング状に配置 :すべての地物を一つの円周上に配置します。円周の半径は表示する地物の数に依存します。

  • 同心円状に配置 :地物を表示するために同心円の集合を使用します。

  • グリッド :規則的な格子を生成し、格子の交点にポイントシンボルを配置します。

中央シンボル ウィジェットでは、中央の点のシンボルと色をカスタマイズできます。周囲のポイントシンボルに対しては、 レンダラ ドロップダウンリストを使用して シンボルなし単一定義カテゴリ値による定義連続値による定義ルールによる定義 レンダラーのいずれかを適用することができ、 レンダラの設定... ボタンを使用してカスタマイズができます。

置き換え線 の最小間隔は点シンボルレンダラーに依存しますが、 ストローク幅ストローク色サイズ調整 (レンダリングされるポイント間の間隔を増やします)などの設定をカスタマイズすることができます。

ラベル グループのオプションは、ポイントのラベル付けに使用します:ラベルは地物の実際の位置ではなく、ずらしたシンボル位置の近くに配置されます。 ラベルの属性 の設定のほかにも、 ラベルフォントラベル色 、ラベルを表示する 地図の最小縮尺 の設定ができます。

../../../_images/poi_displacement.png

図 14.9 点の競合回避ダイアログ

注釈

点の競合回避レンダラーは、地物のジオメトリは変更しません。つまり、ポイントはその位置から移動してはいません。ポイントは元の場所に位置しています。変更はレンダリング目的のための視覚的なものに過ぎません。ずらした地物を作成したい場合には、代わりにプロセシングアルゴリズムの 近隣点を散らす を使用してください。

点のクラスタレンダラー

近傍あるいは重なったポイント地物の配置をばらばらにする pointDisplacementSymbol 点の競合回避 レンダラーとは異なり、 pointClusterSymbol 点のクラスタ レンダラーは、近傍のポイントをグループ化し単一のマーカーシンボルでレンダリングします。指定された 距離 に基づき、お互いにこの距離にあるポイントは単一のシンボルに統合されます。ポイントの集約は単に検索距離内の最初のグループを割り当てるのではなく、形成された最も近いグループに基づいて行われます。

メインダイアログでは、以下の設定ができます。

  • クラスタ・シンボル で、ポイントのクラスタを表現するシンボルの設定ができます。デフォルトのレンダリングは、 @cluster_size 変数 をフォントマーカーシンボルレイヤに設定することで、集約された地物の数が表示されます。

  • レンダラ ドロップダウンリストを使用して、レイヤに任意の他の地物レンダリングタイプ(単一、カテゴリ値、ルールによる定義...)を適用することができます。さらに、 レンダラの設定... ボタンを押すと通常通り地物のシンボロジ設定ができます。このレンダラーは、クラスター化されていない地物にのみ適用されることに注意してください。また、クラスター内のポイント地物の色がすべて同じ場合には、この色がクラスターの @cluster_color 変数に設定されます。

../../../_images/cluster_symbol.png

図 14.10 点のクラスタダイアログ

注釈

点のクラスタレンダラーは、地物のジオメトリは変更しません。つまり、ポイントはその位置から移動してはいません。ポイントは元の場所に位置しています。変更はレンダリング目的のための視覚的なものに過ぎません。クラスターに基づく地物を作成したい場合には、代わりにプロセシングアルゴリズムの K平均クラスタリング または DBSCANクラスタリング を使用してください。

反転ポリゴンレンダラー

invertedSymbol 反転ポリゴン レンダラーでは、レイヤのポリゴンの外側を塗りつぶすシンボルを定義できます。上記と同様、サブレンダラー、すなわち単一シンボル、連続値、カテゴリ値、ルールに基づく、または2.5Dレンダラーを選択できます。

../../../_images/inverted_polygon_symbol.png

図 14.11 反転ポリゴンダイアログ

ヒートマップレンダラー

heatmapSymbol ヒートマップ レンダラーを使用すると、(マルチ)ポイントレイヤ用のライブダイナミックヒートマップを作成できます。ヒートマップ半径をミリメートル、ポイント、ピクセル、地図単位、インチで指定したり、ヒートマップのスタイルのカラーランプの選択・編集をしたり、スライダーを使用してレンダリングの速度と品質のトレードオフを選択したりすることができます。また、最大値の上限を定義したり、フィールドや式を使用してポイントに重みづけを与えることもできます。地物を追加したり削除したりすると、ヒートマップレンダラは自動的にヒートマップスタイルを更新します。

../../../_images/heatmap_symbol.png

図 14.12 ヒートマップダイアログ

2.5Dレンダラー

25dSymbol 2.5D レンダラーを使用すると、レイヤの地物に対して2.5次元的な効果を作成することができます。まずは、 高さ の値を(マップ単位で)選択します。これには、固定値、レイヤのフィールドのいずれか、または式を使用することができます。また、視点位置を再現するために 角度 を(度単位)を選択する必要があります(0° は西を意味し、反時計回り方向に数字が大きくなります)。詳細設定オプションで、 屋根の色壁の色 を設定します。地物の壁に太陽放射をシミュレートしたい場合には、 checkbox 壁の向きに応じた陰影表現 オプションにチェックを入れてください。また、影の 大きさ (マップ単位)を設定することで、影をシミュレートすることもできます。

../../../_images/2_5dsymbol.png

図 14.13 2.5Dダイアログ

ちなみに

2.5D効果を他のレンダラーと併用する

2.5Dレンダラーの基本的なスタイルの設定が完了したら、これをのレンダラー(単一、カテゴリ値、連続値)に変換できます。2.5D効果は保持され、他のすべてのレンダラー固有のオプションを使用して調整することができます(これにより、例えばカテゴリシンボルに素敵な2.5次元表現を加えたり、2.5Dシンボルにさまざまな追加のスタイリングを加えられます)。影や「建物」自体が他の近くの地物と干渉しないようにするためには、描画順序を有効にする必要がある場合があります( 詳細設定 ► 描画順序... )。2.5Dの高さと角度の値はレイヤ内の変数に保存されているので、後からレイヤのプロパティダイアログボックスの変数タブで編集することができます。

14.1.3.2. レイヤレンダリング

シンボロジタブでは、レイヤの全ての地物に共通で作用するいくつかのオプションを設定することもできます:

  • 不透明度 slider :このツールを使用すると、マップキャンバス内の下にあるレイヤを見えるようにすることができます。スライダーを使用して、ベクタレイヤの見え方を必要に応じて変化させてください。スライダーの横にあるメニューで不透明度の割合を正確に定義することもできます。

  • レイヤ地物 レベルの 混合モード :このツールを使用すると、これまでグラフィックプログラムでしか知られていないような、特別なレンダリング効果が得られます。上下のレイヤのピクセルは、 混合モード で説明されている設定で混合されます。

  • 描画エフェクト ボタンを使用して、レイヤの地物すべてに 描画効果 を適用します。

  • 地物描画順序の制御 では、地物属性を使用して、地物のレンダリングの Z-順序 を定義できます。チェックボックスを有効にし、横にある sort ボタンを押してください。 順序を定義する ダイアログが開き、以下の手順で描画順序の定義ができます:

    1. フィールドを選択するか、レイヤの地物に適用する式を作成します。

    2. 取得した地物をどの順序で並べるかを設定します。つまり、 昇順 を選択した場合には、低い値の地物が高い値の地物よりも下にレンダリングされます。

    3. 地物がNULL値を返す時のレンダリングについて定義します: NULLは最初に (一番下に)または NULLは最後に (一番上に)

    4. 使用したいルールの数だけ上記の手順を繰り返します。

    最初のルールはレイヤ内の全ての地物に適用され、戻り値に応じてz-順序が付けられます。それから、同じ値(NULL値も含む)を持った各グループ内の地物について、同じz-順序を持っていることから、次のルールを適用してこれらを並べ替えます。以下、同様に続きます。

../../../_images/layer_rendering_options.png

図 14.14 レイヤレンダリングオプション

14.1.3.3. その他の設定

シンボルレベル

重なったシンボルレイヤを許可するレンダラー(ヒートマップのみなし)のために、各シンボルレベルのレンダリング順序を制御するためのオプションがあります。

ほとんどのレンダラーについて、保存されたシンボルリストの下の 詳細設定 ボタンをクリックして 描画順序 を選択することで、シンボルレベルのオプションにアクセスすることができます。 ルールベースレンダラー では、このオプションは 描画順序... ボタンから直接利用可能である一方で、 点の競合回避レンダラー レンダラーではこのボタンは レンダラの設定 ダイアログ内にあります。

シンボルレベルを有効にするには、 checkbox 描画順序を有効にする にチェックを入れます。各行には結合されたシンボルの小さなサンプルとそのラベル、個々のシンボルレイヤが表示され、個々のシンボルレイヤは横に番号が付いた列に分割されています。数字はシンボルレイヤが描画されるレンダリング順序のレベルを表します。低い値のレベルが最初に描画されて下に置かれ、高い値のレベルは最後に他のシンボルレイヤの上に描かれます。

../../../_images/symbol_levels.png

図 14.15 描画順序ダイアログ

注釈

描画順序を無効にしている場合には、完全なシンボルがそれぞれの地物の順序に従って描画されます。重なるシンボルは、他の下にあるシンボルを単に見えにくくします。加えて、同種のシンボルがお互いに「結合する」ことはありません。

../../../_images/symbol_levels_examples.png

図 14.16 シンボルレベルの有効(A)と無効(B)の差

データ定義による凡例サイズ

レイヤが 比例シンボルや多変量解析レンダリング によってレンダリングされている場合や、レイヤに 可変サイズダイアグラム が適用されている場合には、 レイヤパネル印刷レイアウトの凡例 のどちらにもスケーリングされたシンボルを表示させることができます。

データ定義による凡例サイズ ダイアログを有効にしてシンボロジをレンダリングするには、保存されたシンボルリストの下にある 詳細設定 ボタンの同盟のオプションを選択します。ダイアグラムについては、このオプションは 凡例 タブにあります。このダイアログには、以下のオプションがあります:

  • 凡例タイプの選択: radioButtonOn 凡例が有効になっていませんradioButtonOff リスト型凡例radioButtonOff 重ね合わせ凡例 から選択します。重ね合わせ凡例オプションについては、凡例アイテムの整列を Bottom中央 で選択できます。

  • 凡例の表現に 使用するシンボル の設定

  • 凡例へのタイトルの挿入

  • 使用するクラスのサイズの再設定:デフォルトでは、QGISは(自然なプリティブレークに基づく)5つのクラスの凡例を提供しますが、 checkbox サイズ項目の指定 オプションを使用して独自の分類を適用することができます。 signPlussignMinus ボタンを使用して、カスタムクラスの値とラベルを設定します。

凡例のプレビューがダイアログの右パネルに表示され、 パラメータの設定に応じて更新されます。重ね合わせ凡例の場合には、 シンボルの水平方向の中心から対応する凡例のテキストまでの引出線が引かれます。

../../../_images/data_defined_size_legend.png

図 14.17 データによる凡例サイズの設定

注釈

現在のところ、レイヤのシンボロジに対するデータによる凡例サイズの設定は、ポイントレイヤで単一定義、カテゴリ値、または連続値シンボロジを使用する場合にのみ適用できます。

描画エフェクト

レイヤのレンダリングを改善し、地図の最終レンダリングのために他のソフトウェアに頼ることを避ける(あるいは少なくとも減らす)ために、QGISにはもう 1 つ強力な機能があります。 それは paintEffects 描画エフェクト オプションで、ベクタレイヤの可視化をカスタマイズするための描画効果を追加します。

このオプションは、 レイヤプロパティ ► シンボロジ ダイアログの レイヤレンダリング グループ(レイヤ全体に適用する場合)、または シンボルレイヤプロパティ (対応する地物に適用する場合)にて利用可能です。両方を組み合わせて使用することもできます。

描画効果は checkbox 描画エフェクト オプションにチェックを入れ、 paintEffects 効果をカスタマイズ ボタンをクリックすることで有効化できます。これによって 効果のプロパティ ダイアログ( 図 14.18 参照)が開きます。以下のエフェクトタイプとカスタムオプションが利用可能です:

  • ソース :レイヤのプロパティの設定に応じて地物の元のスタイルを描画します。スタイルの 不透明度 や、 混合モード描画モード の調整を行えます。これらはすべてのエフェクトタイプにに共通のプロパティです。

    ../../../_images/source.png

    図 14.18 描画エフェクト:ソースダイアログ

  • ぼかし :ベクタレイヤにぼかし効果を追加します。変更可能なカスタムオプションには、 ぼかしの種類Stack blur (高速・高dpi非対応) または Gaussian blur (高dpi対応) )と ぼかしの強さ があります。

    ../../../_images/blur.png

    図 14.19 描画エフェクト:ぼかしダイアログ

  • 色付け :この効果は、単一の色相を使用したスタイルのバージョンを作成するために使用します。ベースは常にシンボルのグレースケールバージョンで、これに対し以下の設定ができます:

    • selectString グレースケール は、グレースケール画像をどのように作成するかを選択するのに使用します:選択肢は、「明度を使用」、「光度を使用」、「平均を使用」、「オフ」です。

    • checkbox 着色 にチェックを入れると、別の色と混合することができ、色の強さを調整できます。

    • 適用後のシンボルの 輝度コントラスト彩度 のレベルを調整できます。

    ../../../_images/colorise.png

    図 14.20 描画エフェクト:色付けダイアログ

  • ドロップシャドウ :この効果を使用すると地物に影が追加され、奥行きが追加されたように見えます。この効果は、影が移動する方向とソースオブジェクトとの近さを決定する オフセット 角度・距離を変更することでカスタマイズできます。 ドロップシャドウ にはエフェクトの ぼかし半径 を変更するオプションもあります。

    ../../../_images/drop_shadow.png

    図 14.21 描画エフェクト:ドロップシャドウダイアログ

  • インナーシャドウ :この効果は ドロップシャドウ 効果と似ていますが、こちらは地物の境界の内部に影効果を追加します。カスタマイズに関するオプションは ドロップシャドウ 効果のものと同様です。

    ../../../_images/inner_shadow.png

    図 14.22 描画エフェクト:インナーシャドウダイアログ

  • インナーグロー :地物内部にグロー効果を追加します。この効果は、グローの 広がり (幅)や ぼかし半径 を調整することでカスタマイズできます。後者は、ぼかしをかけたい地物の端からの距離を指定します。加えて、 単一色 または カラーランプ を使用してグローの色をカスタマイズするオプションもあります。

    ../../../_images/inner_glow.png

    図 14.23 描画エフェクト:インナーグローダイアログ

  • アウターグロー :この効果は インナーグロー 効果と似ていますが、こちらは地物の境界の外部にグロー効果を追加します。カスタマイズに関するオプションは インナーグロー 効果のものと同様です。

    ../../../_images/outer_glow.png

    図 14.24 描画エフェクト:アウターグローダイアログ

  • トランスフォーム :シンボル形状の変形可能性を追加します。カスタマイズに利用可能な1つ目のオプションは 水平反転垂直反転 で、これらは実際、水平・垂直軸に反転したものを作成します。その他のオプションは以下のとおりです:

    • 変形X,Y :地物をX軸方向やY軸方向に傾けます。

    • 縮尺 X,Y :X軸やY軸に沿って与えられた割合で地物を拡大または縮小します。

    • 回転 :地物を中心周りに回転させます。

    • 移動 X,Y :与えられたX軸やY軸方向距離に基づきアイテムの位置を変更します。

    ../../../_images/transform.png

    図 14.25 描画エフェクト:トランスフォームダイアログ

複数のエフェクトタイプを同時に使用することができます。エフェクトリスト内のチェックボックスを使用して。エフェクトを有効化(無効化)できます。選択したエフェクトタイプを変更するには、 selectString エフェクトのタイプ オプションを使用します。 arrowUp 上に移動arrowDown 下に移動 ボタンを使用してエフェクトを並べ替えたり、 signPlus 新しい効果を追加signMinus 効果を削除 ボタンを使用してエフェクトを追加/削除することもできます。

描画エフェクトで共通のオプションがあります。 不透明度混合モード オプションは、 レイヤレンダリング での説明と同様に働き、トランスフォーム効果を除く全ての描画エフェクトで使用できます。

また、全てのエフェクトについて selectString 描画モード オプションが利用可能であり、下記のいくつかのルールに従い、シンボルのレンダリングや修正を行うかどうかについて選択できます。

  • エフェクトは上から下の順でレンダリングされます。

  • レンダーのみ モードは、エフェクトが見えることを意味します。

  • モディファイアのみ モードは、エフェクトは見えないものの、適用した変更は次のエフェクト(すぐ1つ下のエフェクト)に渡されます。

  • レンダーとモディファイア モードは、エフェクトが表示され、変更は次のエフェクトに渡されます。エフェクトがエフェクトリストの最上位またはすぐ上のエフェクトがモディファイアモードでない場合には、レイヤプロパティのオリジナルのソースシンボルを使用します(「ソース」と同様です)。

14.1.4. ラベルプロパティ

ラベリング ラベル プロパティは、ベクタレイヤに対するスマートなラベル付けを設定するために必要かつ適切なすべての機能を提供します。このダイアログには、 レイヤスタイル パネルや ラベルツールバーラベリング レイヤラベリングオプション ボタンからもアクセスできます。

最初のステップは、ラベル付けの手法をドロップダウンリストから選択することです。利用可能な手法は、以下のとおりです:

  • labelingNone なし :デフォルト値で、レイヤにラベルを表示しません。

  • ラベリング 単一定義 :単一の属性もしくは式を使用して、マップにラベルを表示します。

  • labelingRuleBased ルールに基づく定義

  • labelingObstacle 他レイヤのラベルをブロック :自分のラベルはレンダリングしませんが、レイヤが他のレイヤのラベルとの衝突を回避するように設定することができます。

ラベリング 単一定義 オプションを選択したとすると、次のステップは以下のダイアログが開きます。

../../../_images/label_menu_text.png

図 14.26 レイヤのラベル設定 - 単一定義

ダイアログの最上部には、 値(Value) のドロップダウンリストがあります。ラベル付けに使用する属性カラムを選択することができます。デフォルトでは、 表示名フィールド が使用されます。式に基づいてラベルを定義したい場合には、 式 をクリックします。詳細は 式に基づいてラベルを定義する を参照してください。

以下は、様々なタブの下でラベルをカスタマイズするために表示されるオプションです。

各プロパティの設定方法は、 ラベルの設定 にあります。

14.1.4.1. 自動配置エンジンの設定

ラベルの自動的なふるまいに関するプロジェクトレベルの設定を行うために、自動配置設定を使用することができます。 ラベル タブの右上隅にある autoPlacement 自動配置設定(全レイヤに適用) ボタンをクリックするとダイアログが開き、以下の設定ができます:

../../../_images/placement_engine.png

図 14.27 ラベルの自動配置エンジン

  • 候補の数 :ライン地物やポリゴン地物について、地物のサイズに基づき可能なラベル配置の数を計算し割り当てます。地物が長いあるいは広いほど、より多くの候補を持ち、そのラベルは衝突のリスクが減ってより良い配置が可能となります。

  • テキスト出力形式 :PDFやSVGへの マップキャンバスのエクスポートレイアウトのエクスポート の際に、ラベルレンダリングウィジェットのデフォルト値を設定します。 ラベルを常にテキストとしてレンダリング を選択した場合、ラベルは外部アプリケーション(Inkscapeなど)で通常のテキストとして編集することが可能です。ただし、副作用としてレンダリング品質が低下し、さらにテキストにバッファ等の特定の設定がなされていると、レンダリングに問題が発生します。このため、ラベルをアウトラインとしてエクスポートする ラベルを常にパスとしてレンダリング(推奨) を推奨しています。

  • checkbox 地図の端のラベルは省略 :マップ範囲から部分的に外れたラベルをレンダリングするかどうかを制御します。チェックを入れると、(見える範囲内で完全なラベルを配置できない場合、)切れたラベルが表示されます。チェックを外すと、部分的にしか見えないラベルはスキップされます。この設定は、 地図レイアウトのアイテム のラベル表示には影響しないことに留意してください。

  • unchecked 全レイヤの全ラベルを表示(衝突ラベルを含む) :このオプションはレイヤ単位で設定することもできます( 描画(レンダリング) を参照)。

  • unchecked 位置未定ラベルの表示 :これにより、重要なラベルがマップから(重複やその他の制約のためなどで)欠落しているかどうかを判断することができます。これらのラベルの表示色はカスタマイズ可能です。

  • unchecked 候補を表示(デバッグ用) :ラベル配置のために生成された候補を示すボックスすべてをマップ上に描画するかどうかを制御します。ラベル名のとおり、これはさまざまなラベル設定がもたらす効果のデバッグとテストのためにのみ有用です。これは、 ラベルツールバー のツールを使用して手動でより良い配置を行うのにも便利です。

  • ラベルバージョン :QGISはラベルの自動配置について2つの異なるバージョンをサポートしています:

    • Version 1 :古いシステム(QGIS3.10 以前のバージョンで使用されており、これらのバージョンで作成されたプロジェクトをQGIS3.12以降で開く時に使用されます)です。 Version 1 では、ラベルや障害物の優先順位を「大まかな目安」としてのみ扱っており、優先度の高い障害物の上に優先度の低いラベルが配置される可能性があります。このため、このバージョンを使用する場合には望むラベル付け結果を得ることが難しい場合があり、古いプロジェクトとの互換性を保つためでしか推奨されません。

    • Version 2 (推奨) :これは、QGIS 3.12以降で作成された新規プロジェクトでのデフォルトのシステムです。Version 2 では、どんな時にラベルが 障害物 に重なるのを許可するかを決定するロジックが変更修正されました。新しいロジックでは、 ラベル優先度に比べて障害物の重みづけが大きい障害物にラベルが重なることを禁止しています。その結果、このバージョンではラベル付けの結果がより予測しやすく、理解しやすくなりました。

14.1.4.2. ルールに基づくラベル付け

ルールに基づくラベル付けは ルールに基づくレンダリング と同様、複数のラベルの設定を定義し、式フィルタとスケール範囲に基づいて選択的にルールを適用できます。

ルールを作成するには、 ラベル タブのメインドロップダウンリストで labelingRuleBased ルールに基づく定義(rule-based) オプションを選択し、ダイアログ下部にある signPlus ボタンをクリックします。そして新しいダイアログにルールの説明と地物をフィルタリングするための式を入力します。ラベルのルールを適用する範囲を 縮尺の範囲 に設定することもできます。このダイアログで利用できるその他のオプションは、前で説明した 共通の設定 です。

../../../_images/label_rule_settings.png

図 14.28 ルールの設定

現在のルールの概要がメインダイアログに表示されます( 図 14.29 参照)。複数のルールを追加したり、ドラッグ&ドロップでルールの並べ替えや融合ができます。ルールを signMinus ボタンで削除したり、 projectProperties ボタンまたはダブルクリックで編集することもできます。

../../../_images/label_rules_panel.png

図 14.29 ルールに基づくラベル作成パネル

14.1.4.3. 式に基づいてラベルを定義する

ラベル付けタイプに単一定義、ルールに基づく定義のどちらを選択しても、QGISでは地物のラベル付けに式を使用することができます。

単一定義 を使用している場合には、プロパティのダイアログの ラベリング ラベル タブの ドロップダウンリストの近くにある、 式 ボタンをクリックします。

図 14.30 に alaska trees レイヤに木のタイプと面積をラベル付けするためのためのサンプル式を示します。 'VEGDESC' フィールドと説明用のテキスト、 $areaformat_number() 関数を組み合わせて、ラベルを見栄え良くしています。

../../../_images/label_expression.png

図 14.30 式を使用したラベル付け

式に基づくラベル付けは簡単です。気を付ける必要があるのは、以下の点だけです。

  • すべての要素(文字列、フィールド、関数)を concat+|| のような文字列連結関数で結合する必要があるかもしれません。状況によっては、これらのツールすべてが必要とするものに適合するとは限らないことに注意してください(null や数値が含まれる場合など)。

  • 文字列は 'シングルクォート' で書きます。

  • フィールドは "ダブルクォート" で書くか、引用符なしで書きます。

いくつかの例を見てみましょう:

  1. 2つのフィールド「name」と「place」をカンマ区切りで並べたラベル:

    "name" || ', ' || "place"
    

    これは次のような文字列を返します:

    John Smith, Paris
    
  2. 2つのフィールド「name」、「place」と他のテキストによるラベル:

    'My name is ' + "name" + 'and I live in ' + "place"
    'My name is ' || "name" || 'and I live in ' || "place"
    concat('My name is ', name, ' and I live in ', "place")
    

    これは次のような文字列を返します:

    My name is John Smith and I live in Paris
    
  3. 2つのフィールド「name」、「place」と他のテキストを様々な連結関数で組み合わせたラベル:

    concat('My name is ', name, ' and I live in ' || place)
    

    これは次のような文字列を返します:

    My name is John Smith and I live in Paris
    

    「place」フィールドがNULLである場合には、次のような文字列が返ります:

    My name is John Smith
    
  4. 2つのフィールド「name」、「place」と説明テキストによる複数行のラベル:

    concat('My name is ', "name", '\n' , 'I live in ' , "place")
    

    これは次のような文字列を返します:

    My name is John Smith
    I live in Paris
    
  5. フィールドと $area 関数を使用した、場所の名前と単位を変換して丸めた面積を表示するラベル:

    'The area of ' || "place" || ' has a size of '
    || round($area/10000) || ' ha'
    

    これは次のような文字列を返します:

    The area of Paris has a size of 10500 ha
    
  6. CASE ELSE 条件を作成します。 population フィールドの人口値が <= 50000 であれば town、そうでなければ city とします:

    concat('This place is a ',
    CASE WHEN "population" <= 50000 THEN 'town' ELSE 'city' END)
    

    これは次のような文字列を返します:

    This place is a town
    
  7. city の名前を表示し、他の地物はラベルを表示しません("city" のコンテキストについては、上記の例を参照):

    CASE WHEN "population" > 50000 THEN "NAME" END
    

    これは次のような文字列を返します:

    Paris
    

式ビルダーで見ればわかるとおり、データのラベル付けのためにシンプルな式から非常に複雑な式まで作成できる何百もの関数がQGISにあります。式の詳細と例については の章を参照してください。

14.1.4.4. ラベル付けのためにデータ定義の上書きを使用する

dataDefined データによって定義された上書き 機能を使用すると、属性テーブルのエントリやそれに基づく式によってラベル付けの設定が上書きされます。この機能は、上で説明したほとんどのラベル付けオプションの値を設定するために使用することができます。

例えば、Alaska QGISサンプルデータセットを使用して、 airports レイヤを軍用利用の USE 列、つまり、空港が以下の意味で利用可能かどうかに基づいて名前をラベル付けしてみましょう:

  • 軍が利用可能な場合には、ラベルの色はグレーで、大きさはは8です。

  • それ以外の場合には、ラベルの色は青で、大きさは10です。

このラベル付けを行うためには、レイヤの NAME フィールドでのラベル付け( ラベルの設定 参照)を有効にした後に、

  1. テキスト タブを有効化します。

  2. 大きさ プロパティの横にある dataDefined アイコンをクリックします。

  3. 編集... を選択し、以下の内容を入力します:

    CASE
      WHEN "USE" like '%Military%' THEN 8 -- because compatible values are 'Military'
                                          -- and 'Joint Military/Civilian'
      ELSE 10
    END
    
  4. OK ボタンを押して式を有効にします。ダイアログが閉じて dataDefined ボタンが dataDefineExpressionOn になり、これはルールが実行されていることを意味します。

  5. 次に、色プロパティの横にあるボタンをクリックし、以下の式を入力して有効化します:

    CASE
      WHEN "USE" like '%Military%' THEN '150, 150, 150'
      ELSE '0, 0, 255'
    END
    

同様にして、ラベルの他の任意のプロパティを好きなようにカスタマイズすることができます。 dataDefined データ定義の上書き ウィジェットの詳細については、 データによって定義された上書きの設定 セクションの説明と操作方法を参照してください。

../../../_images/label_attribute_data_defined.png

図 14.31 属性値に基づいて書式設定された空港ラベル

ちなみに

データ定義の上書きをマルチパート地物の各パートのラベル付けに使用する

ラベルプロパティとは別に、マルチパート地物のラベル付けを設定するオプションがあります。 render レンダリング を選択し、 地物オプションunchecked マルチパートの各パートに表示 チェックボックスの横にある dataDefined データによって定義された上書き ボタンをクリックして、 データによって定義された上書きの設定 で説明しているようにラベルを定義します。

ラベルツールバー

ラベルツールバー には、 ラベリング ラベルダイアグラム ダイアグラム のプロパティを操作するためのツールがあります。

../../../_images/diagram_toolbar.png

図 14.32 ラベルツールバー

読みやすさのために、以下ではラベルツールバーの説明に ラベル を使用していますが、名前に言及している場合については、ダイアグラムについてもほぼ同じようにツールが動作することに注意してください:

  • showPinnedLabels ラベル・ダイアグラムの強調 ラベルのベクタレイヤが編集状態の場合には緑色で強調表示し、そうでない場合には青色で強調表示します。

  • showUnplacedLabel 位置未定ラベルの表示切り替え 重要なラベルが(例えば重なりやその他の制約のために)マップから欠落しているかどうかを確かめることができます。欠落したラベルの表示色はカスタマイズが可能です( 自動配置エンジンの設定 参照)。

  • pinLabels ラベル・図表の固定 / 解放 ラベルをクリックまたは領域をドラッグすると、ラベルを固定します。 Shift を押したままラベルをクリックまたは領域をドラッグすると、ラベルの固定が解放されます。 Ctrl を押したままラベルをクリックまたは領域をドラッグすると、ラベルの固定・解放状態を切り替えることができます。

  • showHideLabels ラベル・ダイアグラムの表示 / 非表示 ラベル場をクリックするか、 Shift キーを押したままクリックして領域をドラッグすると、ラベルが非表示になります。ラベルが非表示のときは、その地物をクリックするとラベルの表示を元に戻すことができます。領域をドラッグすると、その領域内のすべてのラベルの表示が復元されます。

  • moveLabel ラベル、ダイアグラムを移動 ラベルを好きな場所にドラッグして移動できます。

  • rotateLabel ラベルを回転 ラベルをクリックしてカーソルを周りに移動させると、テキストを回転させられます。

  • changeLabelProperties ラベル属性の変更 クリックしたラベルのプロパティを変更するためのダイアログを開きます。このプロパティがあるフィールドにマッピングされていれば、ラベルテキストや座標、回転、フォント、大きさ、複数行の配置などのプロパティを変更することができます。ここでは、 checkbox 全パートにラベル のオプションも設定できます。

警告

ラベルツールによる現在のフィールド値の上書き

ラベルツールバー を使ってラベルをカスタマイズすると、マップされたフィールドにプロパティの新しい値が実際に書き込まれます。したがって、後で必要になるかもしれないデータを誤って置き換えないように注意してください!

注釈

元となるデータソースを変更せずにラベルをカスタマイズ(位置など)するには、 補助テーブルプロパティ の機能を使うのがよいでしょう。

マップキャンバスからラベルをカスタマイズする

ラベルツールバー と組み合わせると、データ定義による上書き設定によってマップキャンバス内のラベルを操作(移動、編集、回転)することができます。ここでは、 moveLabelラベルを移動 機能にデータ定義の上書きを使用した例について説明します( 図 14.33 参照)。

  1. QGISサンプルデータセットから lakes.shp をインポートします。

  2. レイヤをダブルクリックしてレイヤプロパティを開きます。 ラベル をクリックし、 配置 をクリックしてください。 radioButtonOn 重心からのオフセット を選択します。

  3. データによる定義 エントリを探します。 dataDefined アイコンをクリックして 座標 ためのフィールドの型を定義します。Xには xlabel 、Yには ylabel を選択してください。するとアイコンが黄色で強調表示されます。

    ../../../_images/label_coordinate_data_defined.png

    図 14.33 データ定義の上書きを使用したベクタポリゴンレイヤのラベル付け

  4. 湖にズームします。

  5. toggleEditing 編集モード切替 ボタンを使用して、レイヤを編集可能状態にします。

  6. ラベルツールバーの moveLabel アイコンをクリックします。これでラベルを別の位置に手動で異動させることができます( 図 14.34 参照)。ラベルの新しい位置は、属性テーブルの xlabelylabel 列に保存されます。

  7. 以下の方法で、各湖と移動したラベルとを繋ぐ線を追加することもできます。

注釈

編集可能なデータソースなしでデータ定義のプロパティを使用するには、 補助テーブルプロパティ 機能を使用するのが良いでしょう。

14.1.5. ダイアグラムプロパティ

ダイアグラム ダイアグラム タブでは、ベクタレイヤにグラフィックオーバーレイを追加することができます( 図 14.35 参照)。

ダイアグラムのコア実装は現在のところ、以下の機能をサポートしています:

  • diagramNone ダイアグラムなし :デフォルト値で、地物上には何のダイアグラムも表示しません。

  • piechart 円グラフ(Pie Chart) 円形の統計的な図形で、スライスに分割されており、数値の比率を表します。各スライスの円弧の長さは、それが表す量に比例します。

  • text テキストダイアグラム 水平に分割された円で、内部に統計値を表示します。

  • histogram ヒストグラム 各属性で色の異なるバーがお互いに横に並んだものです。

  • stackedBar 積み上げ棒グラフ 各属性で色の異なるバーが縦または横に積み重なったものです。

ダイアグラム タブの右上隅には autoPlacement 自動配置設定(すべてのレイヤに適用) ボタンがあり、マップキャンバス上でのダイアグラムの ラベル配置 を制御するための手段を提供します。

ちなみに

ダイアグラムの種類をすばやく切り替える

さまざまなダイアグラムで設定がほぼ共通していることから、ダイアグラムを設計する際には設定を失うことなくダイアグラムの種類を気軽に変更でき、どれがよりデータに適しているかを確認することができます。

ダイアグラムの種類ごとに、プロパティはいくつかのタブに分けられます。

14.1.5.1. 属性

属性 では、どの変数をダイアグラムに表示するかを定義します。 signPlus 選択した属性を追加 ボタンを使用して表示したいフィールドを選択し、「利用する属性」に並べます。 を使って生成された属性も使用できます。

任意の行をクリックしドラッグすることで上下に移動させることができ、属性の表示方法を並べ替えられます。また、アイテムをダブルクリックすることで「凡例」列のラベルや属性の色を変更できます。

このラベルは、印刷レイアウトやレイヤツリーの凡例に表示されるデフォルトのテキストです。

../../../_images/diagram_tab.png

図 14.35 ダイアグラムのプロパティ - 属性タブ

14.1.5.2. レンダリング

レンダリング は、ダイアグラムの見た目を定義します。ここでは、統計値に干渉されない、以下のような一般的な設定項目があります:

  • グラフィックの不透明度、輪郭線の幅、色

  • ダイアグラムのタイプによって、以下の設定があります:

    • ヒストグラムと積み上げ棒グラフには、棒グラフの幅とバーの間隔の設定があります。積み上げ棒グラフはバーの間隔を 0 に設定するのが良いでしょう。さらに、 軸の線シンボル をマップキャンバス上に表示させることができ、 ラインシンボルのプロパティ を使用してカスタマイズができます。

    • テキストダイアグラムには、円の背景色とテキストに使用される フォント の設定があります。

    • 円グラフには、最初の パイの開始角 と、その 方向 (時計回りか反時計回りか)の設定があります。

  • グラフィックに対する 描画エフェクト の使用

このタブでは、さまざまなオプションを使用してダイアグラムの見た目を管理したり微調整することができます。

  • ダイアグラムの z-index :これは、ダイアグラムをお互いに重ねたり、ラベルに重ねたりする方法を制御します。数値の大きいダイアグラムは、他のダイアグラムやラベルの上に描画されます。

  • checkbox すべて表示 :たとえお互いに重なっているとしても、全てのダイアグラムを表示します。

  • 表示 :特定のダイアグラムのみをレンダリングするようにします。

  • 常に表示するか否かを示す式 :たとえ他のダイアグラムや地図ラベルと重なっているとしても常にレンダリングする特定のダイアグラムを選択します。

  • 縮尺に応じた表示設定 の設定

../../../_images/diagram_tab_appearance.png

図 14.36 ダイアグラムのプロパティ - レンダリングタブ

14.1.5.3. 大きさ

大きさ は、選択した統計情報の表示方法を設定するメインタブです。ダイアグラムのサイズの 単位 は、「ミリメートル」、「ポイント」、「ピクセル」、「地図単位」、「インチ」のいずれかです。サイズの設定には以下のものを使用できます:

  • 固定サイズ :すべての地物のグラフィックを表現するためにただ一つだけのサイズを使用します(ヒストグラムでは使用できません)。

  • 可変サイズ :レイヤの属性を使用した式に基づいたサイズを使用します。

    1. 属性 で、フィールドを選択するか式を構築します。

    2. 検索 ボタンを押して属性値の 最大値 を求めるか、このウィジェットにカスタム値を入力します。

    3. ヒストグラムと積み上げ棒グラフでは、属性の 最大値 に対応する バーの長さ の値を入力します。各地物について、バーの長さはこの対応関係を維持するために線形にスケーリングされます。

    4. 円グラフとテキストダイアグラムでは、属性の 最大値 に対応する 大きさ の値を入力します。各地物について、円の面積や直径はこの対応関係を維持するために( 0 から)線形にスケーリングされます。ただし、小さなダイアグラムには 最小サイズ を設定することができます。

../../../_images/diagram_tab_size.png

図 14.37 ダイアグラムのプロパティ - 大きさタブ

14.1.5.4. 配置

配置 は、ダイアグラムの位置を定義します。レイヤのジオメトリタイプに応じて、配置のための様々なオプションがあります(詳細は 配置 を参照):

  • ポイントジオメトリに対しては、 点の周り または 点に重ねる オプションがあります。前者には、守るべき距離の設定が必要です。

  • ラインジオメトリに対しては、 線の周り または 線に重ねる オプションがあります。ポイント地物同様、一つ目のオプションには守るべき距離の設定が必要であり、地物に対するダイアグラムの配置を指定することができます(「線の上」、「線上」または「線の下」)。同時に複数のオプションを選択することが可能です。その場合、QGISはダイアグラムの最適な位置を探します。ダイアグラムの位置のために線の方向を利用することもできることを覚えておいてください。

  • ポリゴン地物には、(設定した 距離 離れた) 重心の周り重心に重ねる周辺を利用ポリゴンの内側 のオプションがあります。

座標 グループでは、属性値や式を使用して XY 座標を設定することで、地物ごとの基準でダイアグラムの配置を直接制御することができます。この情報は ラベル、ダイアグラムを移動 ツールを使用しても入力されます。

優先度 セクションでは、各ダイアグラムの配置優先度を定義することができます。すなわち、同じ場所に異なるダイアグラムやラベルの候補がある場合、優先度の高い項目が表示され、他の項目は省略されます。

ダイアログやラベルを地物と重ならないようにするか否かを示す式 は、地物を 障害物 として使用するかを定義します。すなわち、 QGIS は障害物として使用する地物上にラベルやダイアグラムが重ならないように配置しようとします。優先度はこの時に、より重みの大きな地物のためにダイアグラムが非表示となるかどうかを評価するために使用されます。

../../../_images/diagram_tab_placement.png

図 14.38 ベクタプロパティダイアログのダイアグラムプロパティの配置タブ

14.1.5.5. オプション

ヒストグラムと積み上げ棒グラフには オプション タブに設定があります。水平あるいは垂直方向のダイアグラムについて、 棒グラフの向き から選択することができます。

14.1.5.6. 凡例

凡例 タブでは、 レイヤパネル印刷レイアウトの凡例 内に、レイヤのシンボロジに続けてダイアグラムのアイテムを表示するかを選択することができます。

  • ダイアグラムの凡例を表示 にチェックを入れると、上の 属性 タブで設定した 凡例 プロパティを凡例内に表示します。

  • そして、ダイアグラムに 可変サイズ を使用している場合には、 可変サイズダイアグラムの凡例... ボタンを押すと、凡例内でのダイアグラムのシンボルの比率を設定できます。ボタンを押すと データによるサイズ定義 ダイアログが開き、 データ定義による凡例サイズ で説明したオプションがあります。

設定が済んだら、レイヤシンボロジに続けてダイアグラムの凡例アイテム(属性名と色、ダイアグラムサイズ)も印刷レイアウトの凡例に表示されるようになります。

14.1.6. マスクプロパティ

ラベルマスク マスク タブでは、任意の他のシンボルレイヤやラベルと重なっている現在のレイヤのシンボルの設定ができます。これは、色が似ていて重なった場合に判読の難しいシンボルとラベルの読みやすさを向上させるためのものです。現在のレイヤのシンボルレイヤの一部を「隠す」ために、アイテムの周りにカスタムの透明なマスクを追加します。

アクティブレイヤにマスクを適用するには、まず初めにプロジェクトで マスクシンボルレイヤ または マスクラベル を有効にする必要があります。それから、 マスク タブにおいて以下の項目にチェックを入れます:

  • マスクするシンボルレイヤ :現在のレイヤの全てのシンボルレイヤがツリー構造でリストされています。ここでは、選択したマスクソースと重なった場合に透過的に「切り抜き」たいシンボルレイヤのアイテムを選択することができます。

  • マスクソース :プロジェクト内で定義されている全てのマスクラベルとマスクシンボルがリストされています。選択したマスクするシンボルレイヤに対してマスクを生成したいアイテムを選択します。

../../../_images/masks_properties.png

図 14.39 レイヤプロパティ - マスクタブ

14.1.7. 3Dビュープロパティ

3d 3Dビュー タブでは、 3Dマップビュー ツールで描画されるベクタレイヤに対する設定ができます。

パフォーマンス向上のため、ベクタレイヤからのデータはマルチスレッドを使ってバックグラウンドで読み込まれ、タイルでレンダリングされます。タイルのサイズはタブの レイヤレンダリング セクションで制御できます:

  • ズームレベルカウント :四分木の深さを決定します。例えば、ズームレベル1は、レイヤ全体に対してただ一つのタイルがあることを意味します。ズームレベル3は、リーフレベルに16枚のタイルがあることを意味します(ズームレベルが増えるごとに4倍になります)。デフォルト値は 3 で、最大値は 8 です。

  • checkbox タイルのバウンディングボックスを表示 :表示されるべきタイルが表示されない問題がある場合に特に有用なオプションです。

レイヤを3Dで表示するには、タブの上部にあるコンボボックスから以下のどちらかを選択します:

  • 単一定義 :地物は共通の3Dシンボルを使用してレンダリングされます。プロパティは データ定義 とすることもできます。レイヤの各ジオメトリタイプに対する詳細については、 3Dシンボルの設定 を参照してください。

  • ルールによる定義 :複数のシンボル設定を定義し、式フィルタや縮尺範囲に応じて選択的に適用することができます。使い方の詳細については、 ルールベースのレンダリング を参照してください。

../../../_images/3d_view_properties.png

図 14.40 ポイントレイヤの3Dプロパティ

14.1.8. 属性プロパティ

sourceFields 属性 タブでは、レイヤに関連したフィールドの情報が表示され、それらを編集することもできます。

レイヤは toggleEditing 編集モード切替 ボタンを使用して 編集可能 にすることができます。編集モードでは、 newAttribute 新規フィールドdeleteAttribute フィールド削除 ボタンを使用して、フィールド構造を変更することができます。

また、フィールド名をダブルクリックすることで名前の変更もできます。これは PostgreSQL、Oracleやメモリレイヤおよび一部のOGRレイヤでのみサポートされており、OGRデータフォーマットやバージョンに依存します。

データソースや 属性フォームプロパティ の設定では、フィールドの別名も表示されます。別名とは、地物のフォームや属性テーブルに使用することができる、人間が読みやすいフィールド名のことです。別名はプロジェクト内に保存されます。

データプロバイダによっては、例えばフィールド作成時にコメントをフィールドに関連付けることができます。この情報は読み込まれて コメント 列に表示され、地物フォームでフィールドのラベルにカーソルを乗せた際に表示されます。

フィールド タブにはデータセットに含まれているフィールドや仮想フィールド、 補助テーブル の他に、 結合したレイヤ のフィールドもリストされます。フィールドの出典に応じて、フィールドには異なる背景色が適用されます。

リストされた各フィールドについて、ダイアログでは タイプ名長さ精度 といった読み取り専用属性も表示します。レイヤを WMSWFS として配信する場合に、どのフィールドを取得可能とするかをチェックすることもできます。

../../../_images/fields_properties.png

図 14.41 属性プロパティタブ

14.1.9. 属性フォームプロパティ

formView 属性フォーム タブでは、新しい地物を作成したときや既存の地物に対するクエリを行ったときに表示されるフォームの設定ができます。以下のものが定義できます:

  • 地物フォームや属性テーブルの各フィールドの見た目や動作(ラベル、ウィジェット、制約条件など)

  • フォームの構成(カスタムもしくは自動生成)

  • フォームやフィールドウィジェットとのインタラクションを処理するためのPythonによる追加ロジック

ダイアログの右上では、新しい地物を作成する際にフォームがデフォルトで開くかどうかの設定ができます。この設定はレイヤ毎に設定することもできますし、 設定 ► オプション ► デジタイズ メニューの 地物作成後に属性フォームをポップアップさせない オプションでグローバルに設定することもできます。

14.1.9.1. データに合わせてフォームをカスタマイズする

デフォルトでは、 identify 地物情報表示 ツールで地物をクリックするか属性テーブルを フォーム表示 モードに切り替えると、QGISは定義済みのウィジェット(通常はスピンボックスやテキストボックスで、各フィールドは専用の行として表現され、ウィジェットの横にはラベルがついています)を持った基本的なフォームを表示します。レイヤに テーブル結合 が設定されている場合には、参照しているレイヤのフィールドは同じ基本構造に従って、フォームの下部にある埋め込みフレームに表示されます。

この表現は レイヤプロパティ ► 属性フォーム タブの 属性レイアウトエディタ の設定値をデフォルトの 自動生成 とした場合の結果です。このプロパティは3つの値をとります:

  • 自動生成 :フォームは「1行に1フィールド」の基本構造を取りますが、対応する各ウィジェットはカスタマイズも可能です。

  • ドラッグ&ドロップデザイナー :ウィジェットのカスタマイズのほかに、グループやタブにウィジェットを埋め込むなどによって、フォーム構造をより複雑にすることができます。

  • uiファイルを提供する :地物フォームとしてQt designerファイルを使用することで、より複雑で完全な機能を持ったテンプレートになります。

自動生成フォーム

自動生成 オプションがオンになっている時は、 利用可能なウィジェット パネルには、フォームに表示されるフィールド(レイヤのものと結合レイヤのもの)がリスト表示されています。フィールドを選択して、右側パネルでウィジェットの見た目や振る舞いを設定できます:

ドラッグ&ドロップデザイナー

ドラッグ&ドロップデザイナーは、例として 図 14.42 に示すように、属性フィールドを表現するための様々なコンテナ(タブやグループ)を持ったフォームを作成することができます。

../../../_images/resulting_feature_form.png

図 14.42 タブと名前付きグループを備えた組み込みフォームの作成結果

  1. 属性レイアウトエディタの選択 コンボボックスから ドラッグ&ドロップデザイナー を選択します。これにより 利用可能なウィジェット パネルの隣の フォームのレイアウト パネルが利用となります。パネルには既存のフィールドが表示されています。フィールドを選択すると、3つ目のパネルに プロパティ が表示されます。

  2. フォームのレイアウト パネルで使用したくないフィールドは、選択して signMinus ボタンを押すことで削除できます。他のパネルからドラッグ&ドロップして再度追加できます。同じフィールドを複数回追加することもできます。

  3. フォームのレイアウト パネル内でフィールドをドラッグ&ドロップすることで位置の並べ替えができます。

  4. コンテナ(タブもしくはグループの枠)を追加して同じカテゴリに属するフィールドを関連付け、フォームの構造を改良します。

    1. 最初のステップは、 signPlus アイコンのボタンを押して、フィールドやグループが表示されるタブを作成することです。

    2. 次に、以下のコンテナのプロパティを設定します:

      • 名前

      • タイプ、つまりは タブ または コンテナ内グループ (タブや他グループ内のグループ)

      • 埋め込みフィールドを並べる 列の数

      ../../../_images/attribute_editor_layout.png

      図 14.43 属性レイアウトエディタ のコンテナ作成ダイアログ

      以下に挙げるものやその他のプロパティは、アイテムを選択して3つ目のパネルで後からでも更新が可能です:

      • コンテナのラベルの表示・非表示

      • コンテナをグループボックスとして表示する(タブのみ利用可)

      • コンテナの名前の変更

      • カラムの数の設定

      • コンテナの表示を制御する式の入力。この式はフォームが変更されるたびに毎回再評価され、これに応じてタブやグループボックスが表示 / 非表示になります。

      • 背景色の追加

    3. コンテナは必要なだけ作成することができます。もう一度 signPlus アイコンのボタンを押すと、別のタブを作成したり、既存のタブの下にグループフレームを作成することができます。

  5. 次のステップは、各コンテナに関連するフィールドの割り当てです。ドラッグ&ドロップで簡単に割り当てることができます。グループやタブも同様の方法で移動できます。

  6. 使用するフィールドの ウィジェットをカスタマイズ する

  7. レイヤが 1対多または多対多関係 にある場合、 利用可能なウィジェット パネルから フォームのレイアウト パネルにリレーション名をドラッグ&ドロップしてください。関連するレイヤの属性フォームが現在のレイヤのフォームの選択された場所に埋め込まれます。他の項目と同様、プロパティの設定を行うには、リレーションのラベルを選択します:

    • リレーションのラベルの表示・非表示

    • リンクボタンの表示

    • リンク解除ボタンの表示

  8. レイヤのプロパティダイアログの適用ボタンを押します。

  9. 地物属性フォームを開く(例えば identify 地物情報表示 ツール)と、新しいフォームが表示されます。

カスタム uiファイルを使用する

uiファイルを提供する オプションを使うと、 Qt デザイナーで作られた複雑なダイアログを使用できます。uiファイルを使用することで、ダイアログボックスの作成がかなり自由に行えます。なお、グラフィカルオブジェクト(テキストボックス、コンボボックス等)をレイヤのフィールドにリンクさせるためには、同じ名前を与える必要があるということに注意してください。

UIの編集 を使って、使用するファイルへのパスを定義します。

uiファイルはリモートサーバーでホストすることも可能です。この場合には、 UIの編集 にはファイルパスではなく、フォームのURLを指定します。

QGISトレーニングマニュアル 内の 新しいフォームの作成 レッスンにいくつかの例があります。更なる詳細情報については、 https://woostuff.wordpress.com/2011/09/05/qgis-tips-custom-feature-forms-with-python-logic/ を参照してください。

カスタム関数でフォームの機能を強化する

QGISのフォームには、ダイアログを開いたときに呼び出されるPythonの関数を持たせることができます。ダイアログに追加のロジックを加えるには、この関数を使用します。フォームのコードは3つの異なる方法で指定できます:

  • 環境変数から読み込む :例えば startup.py 内の関数やインストールされたプラグインの関数を使用します

  • 外部ファイルから読み込む :ファイルブラウザを使用してファイルシステムから Python ファイルを選択するか、リモートファイルのURLを入力します。

  • このダイアログでコードを入力 :Pythonエディタが表示され、使用する関数を直接入力できます。

すべての場合において、呼び出される関数の名前を入力する必要があります(下の例では open )。

例(MyForms.pyモジュール):

def open(dialog,layer,feature):
    geom = feature.geometry()
    control = dialog.findChild(QWidget,"My line edit")

Pythonのinit関数での参照は open のようになります。

14.1.9.2. フィールドの動作を設定する

属性フォーム タブのメイン部分では、地物テーブルや地物フォームにおいてフィールドの値の入力や表示に使用されるウィジェットのタイプを設定することができます。ユーザーが各フィールドをどのように操作するかを定義したり、各フィールドに入力できる値や範囲を定義することができます。

../../../_images/edit_widgets_dialog.png

図 14.44 属性カラムの編集ウィジェットを選択するためのダイアログ

共通設定

フィールドに適用するウィジェットの種類に関係なく、フィールドの編集の可否や編集方法を制御するために設定できる共通のプロパティがあります。

ウィジェットの表示

表示 :フィールド名をフォームに表示するかどうかを指定します( ドラッグ&ドロップデザイナー モードのみ)。

一般情報
  • 別名(alias) :フィールドに使用する、人間が読みやすい名前です。この別名は、地物フォームや属性テーブル、 地物情報 パネルに表示されます。また、これは 式文字列ビルダ 内でのフィールド名の代わりとしても使用することができ、式の理解やレビューを用意にします。別名はプロジェクトファイル内に保存されます。

  • コメントフィールド タブに表示されているフィールドのコメントを読み取り専用で表示します。この情報は地物フォームでフィールドのラベルにマウスカーソルを乗せた際のツールチップとして表示されます。

  • checkbox 編集可能 :このオプションのチェックを外すと、レイヤが編集モードであっても、このフィールドを読み取り専用(手動で変更不可)に設定します。この設定にチェックを入れても、プロバイダ側の編集制限は上書きできないことに注意してください。

  • checkbox ラベルを上に置く :地物フォームでフィールド名をウィジェットの上に置くか、横に置くかを設定します。

デフォルト値
  • デフォルト値 :新しい地物に対して、デフォルトでフィールドを定義済みの値または 式ベースの値 で自動的に入力します。例を挙げると、以下のような値を定義できます。

    • $x$length$area を使用して、地物の作成時に地物のX座標や長さ、面積やその他の幾何学的情報を自動的にフィールドに入力します。

    • maximum("field")+1 を使用して、新しい地物を作成するたびにフィールドに 1 を加算します。

    • now() を使用して、地物の作成日時を保存します。

    • 式の中で 変数 を使用すると、作業者の名前( @user_full_name )やプロジェクトのファイルパス( @project_path )などを簡単に挿入できるようになります。

    結果のデフォルト値のプレビューがウィジェットの下部に表示されます。

    注釈

    デフォルト値 オプションは、作成される地物の他のフィールドの値を取得できないので、それらを組み合わせた式を使うことはできません。つまり、 concat(field1, field2) のような式は使えないということです。

  • checkbox 更新時にデフォルト値を適用する :地物の属性やジオメトリに変更があった場合に、デフォルト値が再計算されます。このオプションは、データを変更した最後のユーザーや、最後に変更された時間などの値を保存するのに便利です。

制約

フィールドに入力する値を制限することができます。この制約には、以下の設定ができます:

  • checkbox 非null: ユーザーが値を入力することを必須とします。

  • checkbox ユニーク :入力された値がフィールド全体で一意であることを保証します。

  • カスタム に基づく制約:例えば、 not regexp_match(col0,'[^A-Za-z]') は、 col0 フィールドの値にアルファベット文字しかないことを保証します。制約を覚えやすくするための短い説明文を追加することができます。

フィールドに値が追加されたり編集されるたびに、既存の制約条件が検証され、

  • すべての要件を満たしている場合は、フォームのフィールドの横に緑色のチェック印が表示されます。

  • 要件をすべて満たすことができていない場合には、フィールドは黄色またはオレンジ色で表示され、同じ色のバツ印がウィジェットの横に表示されます。バツ印にマウスカーソルを乗せると、どの制約条件が適用されいているのかを確認できるので、以下に従って値を修正します:

    • 黄色のバツ印は、満たされていない制約は強制されていないものであり、「間違った」値で変更を保存することもできる場合に表示されます。

    • オレンジ色のバツ印は、制約が無視できないものであり、制約を満足しなければ修正を保存できません。これは checkbox 式制約を強制 オプションにチェックを入れた場合に表示されます。

編集ウィジェット

フィールドの型に基づき、QGISはデフォルトのウィジェットタイプを自動的に決定しフィールドに割り当てます。このウィジェットは、フィールドの型に適合する任意のウィジェットにユーザーが後から置き換えることが可能です。利用可能なウィジェットは以下のとおりです:

  • チェックボックス :チェックボックスを表示します。チェック状態で入力される値が決まります。

  • 分類 :レイヤに カテゴリ値シンボロジ が適用されている場合にのみ利用でき、クラス値のコンボボックスを表示します。

  • カラーウィジェット を表示し、色の選択ができます。色の値はhtml表記で属性テーブルに保存されます。

  • 日付/時刻 :日付、時刻、またはその両方を入力するためのカレンダーウィジェットを開くことができる行フィールドを表示します。カラムの型はテキストでなければなりません。カスタム表示形式やカレンダーのポップアップなどの設定を選択することができます。

  • 列挙 :データベースから取得された既定の値のコンボボックスを開きます。これは現在のところ、PostgreSQLプロバイダで enum 型のフィールドでのみサポートしています。

  • アタッチメント : "ファイルを開く" ダイアログを使用し、相対パスまたは絶対パスモードでファイルパスを保存します。(ドキュメントパスへの)ハイパーリンクや画像、ウェブページを表示するためにも使えます。

  • 非表示 :非表示の属性列は表示されません。ユーザーはフィールドの内容を見ることができません。

  • キー/値 一つのフィールドにキー/値のペアのセットを保存するための2カラムのテーブルを表示します。これは現在のところ、PostgreSQLプロバイダで hstore 型のフィールドでのみサポートしています。

  • リスト :一つのフィールドに様々な値を追加できる1カラムのテーブルを表示します。これは現在のところ、PostgreSQLプロバイダで array 型のフィールドでのみサポートしています。

  • 範囲 :特定の範囲から数値を設定できます。編集ウィジェットにはスライダーやスピンボックスもあります。

  • リレーションの参照 :これは、 リレーション が設定されている場合に参照フィールド(つまりは子レイヤの外部キー)に指定されたフィールドのデフォルトのウィジェットです。 これにより親地物のフォームへ直接アクセスすることができ、その逆に親地物には子地物のリストとフォームが埋め込まれます。

  • テキスト編集 (デフォルト):これは単純なテキストまたはマルチラインを使用できるテキスト編集フィールドを開きます。マルチラインを選択した場合は、HTMLコンテンツを選択できます。

  • ユニーク値:既に属性テーブルで使用されている値のいずれかを選択できます。「編集可能」が有効になっている場合、自動補完をサポートするラインエディットが表示されます。そうでない場合はコンボボックスが使用されます。

  • Uuidジェネレータ :値が空の場合には読み取り専用のUUID(Universally Unique Identifiers)フィールドを生成します。

  • バリューマップ :事前に定義されたアイテムを持ったコンボボックスです。値は属性に格納され、コンボボックスに説明が表示されます。値は手動で定義するか、またはレイヤーCSVファイルから読み込むことができます。

  • 値のリレーション :関係テーブルの値をコンボボックスに表示します。レイヤ、キーカラム、値カラムを選択できます。標準的な動作を変更するために、NULL値の許可、値による並べ替え、複数選択の許可、オートコンプリートの使用といったオプションが利用可能です。オートコンプリートチェックボックスを有効にすると、フォームにはドロップダウンリストまたはラインエディットフィールドが表示されます。

ちなみに

アタッチメントウィジェットの相対パス

ファイルブラウザで選択されたパスが .qgs プロジェクトファイルと同じディレクトリかまたは下の階層に位置している場合、パスは相対パスに変換されます。これにより、 .qgs プロジェクトにマルチメディア情報がアタッチメントされている場合の可搬性が向上します。

14.1.10. テーブル結合プロパティ

結合 テーブル結合 タブでは、現在のレイヤ( ターゲットレイヤ と呼びます)の地物と他の読み込んだベクタレイヤの地物(またはテーブル)を関連付けることができます。結合は、レイヤ間で共有されている属性値に基づいて行われます。レイヤはジオメトリなし(テーブル)でも、ジオメトリありでも良いですが、 結合する属性は同じ型である必要があります。

テーブル結合を作成するには:

  1. signPlus 新しい結合を追加 ボタンをクリックします。 ベクタ結合を追加 ダイアログが現れます。

  2. ターゲットベクタレイヤと結合させたい 結合するレイヤ を選択します。

  3. 結合レイヤとターゲットレイヤで共通の、 結合基準の属性ターゲット属性 を指定します。

  4. OK ボタンを押すと、選択したパラメータの概要が テーブル結合 パネルに表示されます。

../../../_images/join_attributes.png

図 14.45 既存のベクタレイヤに属性テーブルを結合する

上で述べたステップでテーブル結合が作成されますが、結合レイヤの最初にマッチした地物の 全ての 属性値がターゲットレイヤの地物に追加されます。QGISには、結合を微調整するためのオプションがさらにあります:

  • checkbox 結合レイヤをキャッシュ :ルックアップを高速化するために、結合レイヤの値を(ジオメトリなしで)メモリにキャッシュできるようになります。

  • unchecked 結合属性にインデックスを作成

  • unchecked 動的フォーム(結合レイヤと連動)ターゲットフィールド の変更に応じて結合フィールドをオンザフライで同期できるようになります。これにより、結合フィールドの制約条件も適切に更新されます。多数の地物があったり無数の結合がある場合には非常に時間がかかることがあるため、この機能はデフォルトでは無効化されていることに注意してください。

  • ターゲットレイヤが編集可能な場合には、フィールドの横の属性テーブルにはステータスを知らせるためのアイコンが表示されます:

    • joinNotEditable :結合レイヤが編集可能に設定されていません。ターゲットの属性テーブルから結合地物を編集できるようにしたい場合は、 checkbox 編集可能な結合レイヤ オプションにチェックを入れる必要があります。

    • joinedLayerNotEditable :結合レイヤは編集可能に設定されていますが、現在のステータスは読み取り専用です。

    • joinHasNotUpsertOnEdit :結合レイヤは編集可能ですが、同期メカニズムは有効ではありません。ターゲットレイヤに地物が作成されたときに、結合レイヤに地物を自動的に追加したい場合には、 checkbox 編集時Upsert オプションにチェックを入れる必要があります。これとは反対に、結合した地物を自動的に削除したい場合には、 checkbox カスケード削除 を有効にする必要があります。

  • unchecked 結合フィールド :結合するレイヤの全てのフィールドを追加するのではなく、その一部分を指定することができます。

  • unchecked カスタムフィールド名の接頭辞 :名前の衝突を回避するために付けられる結合フィールド名の接頭辞をカスタマイズできます。

QGISは現在のところ、OGRでサポートされている非空間テーブル(例えばCSV、DBF、Excelなど)や区切りテキスト、PostgreSQLプロバイダに対する結合をサポートしています。

14.1.11. 補助テーブルプロパティ

スタイルやラベルをカスタマイズするには、 データによって定義された上書きの設定 で説明しているように、データによって定義されたプロパティを使用するのが一般的です。しかし、元となるデータが読み取り専用の場合には、これができない場合があります。さらに、データ定義のプロパティの設定では非常に時間がかかり、望ましくない場合さえもあります。例えば、 ラベルツールバー にあるマップツールを完全に使用したい場合には、元のデータソースに20以上のフィールド(X・Y位置、回転角度、フォント、色など)を追加して設定する必要があります。

補助テーブルのメカニズムは、これらの制限や扱いにくい設定に対する解決策です。補助フィールドは、これらのデータ定義のプロパティ(ラベル、ダイアグラム、シンボロジなど)を自動的に管理し、編集可能なテーブル結合によってSQLite データベース内に保存するための間接的な方法です。 これにより、編集可能ではないレイヤのプロパティを保存することができます。

ベクタレイヤプロパティダイアログには、補助テーブルを管理するためのタブがあります。

../../../_images/auxiliary_storage_tab.png

図 14.46 補助テーブルタブ

14.1.11.1. ラベル

編集可能でなくともデータソースはデータ定義のプロパティによってカスタマイズできることを考慮すると、 ラベルツールバー で説明しているラベリングマップツールは、ラベリングが有効になると同時に常に利用可能になります。

実際のところ、補助テーブルシステムはこれらのプロパティをSQLiteデータベース( 補助テーブルのデータベース 参照)に保存するための補助レイヤが必要です。ラベリングマップツールがアクティブになっている状態で初めてマップをクリックしたときに、補助レイヤの作成プロセスが実行されます。このときウィンドウが表示され、結合に使用する主キーを選択します(地物が一意に識別されることを保証するため)。

../../../_images/auxiliary_storage_key.png

図 14.47 補助レイヤの作成ダイアログ

現在のデータソースに補助レイヤが設定されると、補助テーブルタブでその情報を検索することができます:

../../../_images/auxiliary_storage_tabkey.png

図 14.48 補助レイヤのキー

補助レイヤには次のような特徴があります:

  • 主キーは ID

  • 補助属性を使用した 0 個の地物がある

  • 0 個の補助属性がある

補助レイヤが作成されたので、レイヤのラベルを編集することができます。 changeLabelProperties ラベル属性の変更 マップツールが有効な状態でラベルをクリックすると、サイズや色などのスタイリングプロパティを更新することができます。これに対応したデータ定義のプロパティが作成され、この情報は検索することができます。

../../../_images/auxiliary_storage_fields.png

図 14.49 補助属性

上図でわかるように、 21 個の属性が自動的に作成され、ラベリング用に設定されています。例えば、 FontStyle 補助属性の型は String であり、元のSQLite データベース内では labeling_fontstyle という名前が付けられています。これらの補助属性を使用している地物が 1 つあることもわかります。

ラベル プロパティタブ内で dataDefineOn アイコンが表示されていることに注目してください。これは、データ定義の上書きオプションが正しく設定されていることを示しています。

../../../_images/auxiliary_storage_dd.png

図 14.50 データ定義のプロパティの自動生成

この方法の他に、 dataDefined データによって定義された上書き ボタンを使用して特定のプロパティのための補助属性を作成する方法もあります。 データをプロジェクトに格納する をクリックすると、例えば 不透明度 フィールド用の補助属性が自動的に作成されます。補助レイヤがまだ作成されていない状態でこのボタンをクリックすると、まずは結合に使用する主キーを選択するためのウィンドウ( 図 14.47 )が表示されます。

14.1.11.2. シンボロジ

上で述べたラベルのカスタマイズ方法と同じように、補助属性を使ってシンボルやダイアグラムのスタイル設定ができます。これを行うには、 dataDefined データによって定義された上書き をクリックして、特定のプロパティに対して データをプロジェクトに格納する を選択します。例えば、 塗りつぶし色 属性の場合には以下の図のようになります。

../../../_images/auxiliary_storage_symbol.png

図 14.51 シンボルに対するデータ定義のプロパティのメニュー

各シンボルにはさまざま属性(塗りつぶしスタイル、塗りつぶし色、ストローク色など)があるため、属性を表現する各補助属性には名前の衝突を避けるためにユニークな名前が必要です。 データをプロジェクトに格納する を選択すると、ウィンドウが開き属性の が表示され、補助属性のユニークな名前を入力するよう求められます。例えば 塗りつぶし色 の補助属性を作成すると、次のようなウィンドウが開きます。

../../../_images/auxiliary_storage_symbol_name.png

図 14.52 シンボルの補助属性の名前

作成できたら、この補助属性は補助テーブルタブから検索することが可能になります。

../../../_images/auxiliary_storage_symbol_field.png

図 14.53 シンボルの補助属性

14.1.11.3. 属性テーブルとウィジェット

補助属性は 属性テーブル を使用して編集することができます。ただし、全ての補助属性が最初から属性テーブルに表示されているわけではありません。

補助属性のうち、レイヤのシンボロジやラベリング、表示方法やダイアグラムなどの属性を表現するものは、自動的に属性テーブルに表示されます。例外は ラベルツールバー を使用して修正可能な属性で、これはデフォルトでは非表示となっています。 を表す補助属性には ウィジェットがデフォルトで設定され、これ以外の補助属性のデフォルトは テキスト編集 ウィジェットです。

ラベルツールバー を使用して修正可能な補助属性は、属性テーブルではデフォルトで 非表示 になっています。属性を表示するためには 属性フォームプロパティタブ を開き、補助属性の ウィジェットタイプ の値を 非表示 から他の関連する値に変更します。例えば、 auxiliary_storage_labeling_sizeテキスト編集 ウィジェットへと変更したり、 auxiliary_storage_labeling_color ウィジェットに変更したりする等です。そうすると、これらの属性は属性テーブルに表示されるようになります。

属性テーブル内での補助属性は以下の画像のように表示されます。

../../../_images/auxiliary_storage_widgets.png

図 14.54 補助属性のフォーム

14.1.11.4. 管理

補助テーブル メニューでは、補助属性の管理ができます。

../../../_images/auxiliary_storage_actions.png

図 14.55 補助テーブルの管理

最初のアイテム 作成する は、補助テーブルがすでに作成されているため、この画像では無効化されています。新たな作業の場合は、このアクションを使って補助テーブルを作成することができます。 ラベル で説明しているように、この時には主キーが必要です。

クリア アクションは、全ての補助属性を残しますが、その値を削除します。これにより、これらの属性を使用している地物の数は 0 になります。

削除 アクションは補助テーブルを完全に削除します。言い換えると、対応するテーブルは元のSQLiteデータベースから削除され、プロパティのカスタム設定が失われます。

最後の エクスポート アクションでは、補助テーブルを 新しいベクタレイヤ として保存できます。ジオメトリは補助テーブルには保存されていないことに注意してください。ただし、この時にジオメトリをもとのデータソースから一緒にエクスポートすることはできます。

14.1.11.5. 補助テーブルのデータベース

プロジェクトを .qgs 形式で保存する場合には、補助テーブルに使用しているSQLite データベースはプロジェクトと同じ場所に拡張子 .qgd で保存されます。

この代わりに .qgz 形式によるアーカイブを使用するのが利便性のためには良いでしょう。この場合には .qgd ファイルと .qgs ファイルは両方ともアーカイブ内に埋め込まれます。

14.1.12. アクションプロパティ

アクション QGISには地物の属性に基づいてアクションを実行する機能があります。これは任意の数のアクションを実行するために使用できます。例えば、地物の属性から構築された引数でプログラムを実行した、Webレポーティングツールにパラメーター渡す、などです。

../../../_images/action_dialog.png

図 14.56 いくつかのサンプルアクションを含むアクションダイアログの概要

アクションが便利なのは、頻繁に外部のアプリケーションを実行したり、ベクタレイヤの1つ以上の値に基づいてWebページを表示したりする場合です。それらは6つのタイプに分けられ、以下のように使用します。

  • 「一般」、「Mac」、「Windows」、「Unix」 アクションは、外部プロセスを開始します。

  • 「Python」 アクションは Python コードを実行します。

  • 「一般」と「Python」アクションは、どのプラットフォームでも表示されます。

  • 「Mac」、「Windows」、「Unix」アクションは、それぞれのプラットフォーム上だけに表示されます(つまり、エディタを開くための「編集」アクションは3つ定義することができ、ユーザーはプラットフォームに応じたただ1つの「編集」アクションのみが表示され、そのアクションを実行してエディタを開きます) 。

ダイアログにはいくつかの例が含まれています。 デフォルトアクションを作成 ボタンをクリックするとそれらを読み込むことができます。例のどれかを編集するには、行をダブルクリックします。例の一つに属性値に基づいた検索の実行があります。これは以下の議論で使用します。

checkbox 属性テーブルに表示 にチェックを入れると、地物スコープにチェックの入ったアクションを コンボボックス または 別々のボタン として属性テーブルダイアログ内に表示させることができます( 列の設定 を参照)。

14.1.12.1. アクションの定義

属性のアクションを定義するには、ベクタ レイヤプロパティ ダイアログを開いて アクション タブをクリックしてください。 アクション タブ内で signPlus アクションを追加 をクリックすると、 アクションの編集 ダイアログが開きます。

アクションの を選択し、アクションのわかりやすい名前を指定します。アクション自体には、アクションが呼び出されたときに実行されるアプリケーションの名前が含まれている必要があります。アプリケーションへの引数として、1つ以上の属性フィールドの値を追加できます。アクションが呼び出されると、 % で始まるフィールド名の文字列は、そのフィールドの値に置き換えられます。特別な文字列 %% は、地物情報表示結果や属性テーブルから選択されたフィールドの値に置き換えられます(以下の using_actions を参照)。二重引用符は、テキストをプログラムやスクリプト、コマンドの単一引数にまとめるために使用することができます。二重引用符の前にバックスラッシュを付けた場合、二重引用符は無視されます。

アクションの スコープ では、「どこで」アクションが有効となるかを定義することができます。4つの選択肢があります:

  1. 地物 :アクションは属性テーブル内のセルで右クリックした場合に利用可能です。

  2. フィールド :アクションは属性テーブル内のセルで右クリックした場合や地物フォーム内、あるいはメインツールバーのデフォルトアクションボタンで利用可能です。

  3. レイヤ :アクションは属性テーブルのツールバー内のアクションボタンで利用可能です。この型のアクションは、単一の地物ではなくレイヤ全体を対象としていることに注意してください。

  4. キャンバス :アクションはツールバーのメインアクションボタンで利用可能です。

フィールド名が他のフィールド名の部分文字列である場合(例えば col1col10 )、フィールド名(と % 文字)を角括弧で囲むことで示す必要があります(例えば [%col10] )。 こうすることで %col10 フィールド名が、末尾に 0 がある %col1 フィールド名と間違えることを防げます。角括弧はQGISがフィールドの値を代入する際に除去されます。置換されたフィールドを角括弧で囲みたい場合は、次のように2つ目の組を使用します: [[%col10]]

地物情報表示 ツールを使用すると、 地物情報 ダイアログを開くことができます。これには、レイヤのタイプに関連した情報が含まれる (派生した属性) アイテムを含みます。このアイテムの値は派生したフィールド名の頭に (Derived). を付けることで、他のフィールドと同じ方法でアクセスできます。例えばポイントレイヤには XY というフィールドがあり、これらのフィールドの値はアクション内で、 %(Derived).X%(Derived).Y で使用できます。派生した属性は 地物情報 ダイアログボックスからのみ利用可能で、 属性テーブル ダイアログボックスからは利用できません。

以下に2つのアクション例を示します:

  • konqueror https://www.google.com/search?q=%nam

  • konqueror https://www.google.com/search?q=%%

最初の例では、ウェブブラウザ konqueror を起動して開くべきURLを渡しています。このURLは、ベクタレイヤの nam フィールドの値のGoogle検索を実行します。アクションによって呼び出されるアプリケーションやスクリプトはパスが通っているか、もしくはフルパスで指定する必要があることに注意してください。念のため、最初の例を次のように書き換えてみましょう: /opt/kde3/bin/konqueror https://www.google.com/search?q=%nam 。これにより、アクションが呼ばれたときには konqueror アプリケーションが確実に実行されるようになります。

2つ目の例では %% 表記を使用しています。この値は特定のフィールドに依存しません。アクションが呼び出されると、 %% は地物情報や属性テーブルの選択したフィールドの値に置き換えられます。

14.1.12.2. アクションを使用する

QGISには、レイヤに対して有効にしたアクションを実行するための多数の方法があります。設定に応じて、次のような方法が利用できます:

  • 属性ツールバー属性テーブル ダイアログの actionRun 地物アクションの実行 ボタンのドロップダウンメニュー

  • identify 地物情報表示 ツールで地物を右クリック(更なる情報は 地物を識別する 参照)

  • 地物情報 パネルの アクション セクション

  • 属性テーブル ダイアログ内の アクション 列のアイテム

%% 表記を使用するアクションを起動する場合には、 地物情報 ダイアログや 属性テーブル ダイアログ内で、アプリケーションやスクリプトに渡したいフィールド値を右クリックしてください。

ここでは、bash と echo コマンドを使って、ベクタレイヤからデータを取り出してファイルに挿入する別の例を紹介します(従って nix またはおそらく osx でしか動作しません)。本件のレイヤには、種名 taxon_name 、緯度 lat 、経度 long のフィールドがあります。ここでは、地域を空間的に選択すると、(QGISマップエリアで黄色に表示されている)選択されたレコードのフィールド値をテキストファイルにエクスポートできるようにしたいと思います。これを達成するためのアクションは次のとおりです。

bash -c "echo \"%taxon_name %lat %long\" >> /tmp/species_localities.txt"

いくつかの地域を選択してそれぞれでアクションを実行し、出力ファイルを開くと、以下のようなものが表示されます。

Acacia mearnsii -34.0800000000 150.0800000000
Acacia mearnsii -34.9000000000 150.1200000000
Acacia mearnsii -35.2200000000 149.9300000000
Acacia mearnsii -32.2700000000 150.4100000000

練習問題として、 lakes レイヤでGoogle検索を実行するアクションを作成してみましょう。まずは、あるキーワードで検索を実行するために必要なURLを見つけ出す必要があります。これは、Googleにアクセスして簡単な検索を行い、ブラウザのアドレスバーからURLを取得するだけで簡単にできます。少しの手間で、 QGIS が検索語のときにはURLの形式は https://www.google.com/search?q=QGIS であることがわかりました。この情報をもとに次へと進みましょう。

  1. lakes レイヤが読み込まれていることを確認してください。

  2. 凡例内のレイヤをダブルクリックして レイヤプロパティ ダイアログを開くか、またはレイヤを右クリックしてポップアップメニューから プロパティ を選択します。

  3. アクション タブをクリックします。

  4. signPlus アクションを追加 ボタンをクリックします。

  5. 開く のアクション型を選択します。

  6. アクションの名前を入力します。例えば Google 検索 など。

  7. さらに 短い名前アイコン も追加することができます。

  8. アクションの スコープ を選択します。詳細については アクションの定義 を参照してください。この例ではデフォルトの設定のままとします。

  9. アクションには、実行する外部プログラムの名前を指定する必要があります。ここでは Firefox を使うことにします。プログラムがシステムのパスに含まれていない場合には、フルパスを指定する必要があります。

  10. 外部アプリケーション名に続けて、Google検索に使用するURLを検索語を含まないところまで追加します: https://www.google.com/search?q=

  11. ここまでで アクション フィールドのテキストは次のようになっています: https://www.google.com/search?q=

  12. lakes レイヤのフィールド名を含むドロップダウンボックスをクリックします。これは 挿入 ボタンのすぐ左にあります。

  13. ドロップダウンボックスから、 'NAMES' を選択して 挿入 をクリックします。

  14. するとアクションテキストは次のようになります:

    https://www.google.com/search?q=[%NAMES%]

  15. アクション作成を終了して追加するために、 OK ボタンをクリックします。

../../../_images/add_action_edit.png

図 14.57 この例で設定されたアクションの編集ダイアログ

アクションは完成して利用可能になりました。最終的なテキストは以下のようになっています:

https://www.google.com/search?q=[%NAMES%]

これでアクションを利用することができます。 レイヤプロパティ ダイアログを閉じ、地図を見たい領域にズームして下さい。 lakes レイヤーがアクティブであることを確認して、地物情報表示ツールで湖をクリックして下さい。地物情報ボックスの中にアクションが表示されているはずです:

../../../_images/action_identifyaction.png

図 14.58 地物を選択し、アクションを選択する状態

アクションをクリックすると、Firefoxが立ち上がり、 URL https://www.google.com/search?q=Tustumena に移動します。アクションにさらに属性フィールドを追加することも可能です。これにはアクションテキストの末尾に + を追加し、別のフィールドを選択して 挿入 をクリックします。この例では、検索する意味があるような他のフィールドは持っていません。

レイヤには複数のアクションを定義することができ、 地物情報 ダイアログにはそれぞれが表示されます。

また、属性テーブルからアクションを呼び出すには、属性テーブルの行を選択して右クリックし、ポップアップメニューからアクションを選択します。

アクションにはさまざまな使い方があります。例えば、画像や写真の位置とファイル名を含むポイントレイヤがあれば、画像を表示するビューアを起動するアクションを作成することができます。また、アクションを使って、Google検索の例と同じように属性フィールドやフィールドの組み合わせを指定して、webベースのレポートを起動することもできるでしょう。

また、より複雑な例を、例えば Python アクションを使用して作成できます。

通常、外部アプリケーションでファイルを開くためのアクションを作成する際には絶対パスまたは相対パスを使用することができます。後者のケースでは、パスは外部プログラムの実行ファイル位置に対して相対的になります。しかし、選択したレイヤ(シェープファイルやSpatiaLite のようなファイルベースのもの)に対する相対パスを使用する必要がある場合にはどうでしょうか?次のようなコードで対応することができます。

command = "firefox"
imagerelpath = "images_test/test_image.jpg"
layer = qgis.utils.iface.activeLayer()
import os.path
layerpath = layer.source() if layer.providerType() == 'ogr'
  else (qgis.core.QgsDataSourceURI(layer.source()).database()
    if layer.providerType() == 'spatialite' else None)
path = os.path.dirname(str(layerpath))
image = os.path.join(path,imagerelpath)
import subprocess
subprocess.Popen( [command, image ] )

このアクションは Python 型であり、 commandimagerelpath 変数は必要に応じて変更する必要があることは覚えておく必要があります。

では、相対パスが(保存された)プロジェクトファイルに相対的である必要がある場合はどうでしょうか?Pythonアクションのコードは以下のようになります。

command = "firefox"
imagerelpath = "images_test/test_image.jpg"
projectpath = qgis.core.QgsProject.instance().fileName()
import os.path
path = os.path.dirname(str(projectpath)) if projectpath != '' else None
image = os.path.join(path, imagerelpath)
import subprocess
subprocess.Popen( [command, image ] )

もう一つのPythonアクションの例は、プロジェクトに新しいレイヤを追加することができるものです。例えば、以下の例では、ベクタレイヤとラスタレイヤそれぞれをプロジェクトに追加します。プロジェクトに追加されるファイルの名前やレイヤに付けられる名前はデータ駆動型です( filenamelayername は、アクションが作成されたベクタレイヤの属性テーブルの列名です)。

qgis.utils.iface.addVectorLayer('/yourpath/[% "filename" %].shp',
  '[% "layername" %]', 'ogr')

ラスタ(この例ではTIF画像)を追加するには、次のようになります:

qgis.utils.iface.addRasterLayer('/yourpath/[% "filename" %].tif',
  '[% "layername" %]')

14.1.13. 表示名プロパティ

ディスプレイ 表示名 タブでは、地物の識別に使用するフィールドの設定ができます。

  • 表示名 :フィールドまたは に基づきます。これは以下のように利用されます:

    • 地物情報表示ツール の結果の地物情報の先頭に表示されるラベル

    • ロケータバー で全てのレイヤから地物を検索する際に使用されるフィールド

    • 属性テーブルの フォームビュー での地物の識別子

    • マップやレイアウトをGeoPDF 等のレイヤ出力形式にエクスポートする際の地物識別子

    • 地図のTips情報、すなわち、 mapTips 地図のTipsを表示 アイコンを押した状態でアクティブレイヤの地物上にマウスカーソルを重ねた際に、マップキャンバスに表示されるメッセージ。 地図のTipsのHTML定義 が何も設定されていない場合に適用されます。

  • 地図のTipsのHTML定義 は、地図のTipsのために特別に作成するものです。これはフィールドや式、HTMLタグ(マルチライン、フォント、画像、ハイパーリンク等)が混在した、より複雑で完全なHTMLテキストです。

../../../_images/display_html.png

図 14.59 地図のTipsのHTMLコード

地図のTipsを有効にするためには、 ビュー ► 地図のTipsを表示 メニューオプションを選択するか、 属性ツールバーmapTips 地図のTipsを表示 アイコンをクリックします。地図のTipsはセッション横断的な機能で、一度有効にすると無効にするまでは有効な状態が継続し、どのプロジェクトのどのレイヤにも、次のQGISセッションでさえも適用されます。

../../../_images/map_tip.png

図 14.60 HTMLコードで作られた地図のTips

14.1.14. レンダリングプロパティ

14.1.14.1. 縮尺に応じた表示設定

最大(含む)最小(含まない) 縮尺を設定して、地物が表示される縮尺の範囲を定義できます。この範囲の外では地物は非表示になります。 mapIdentification 現在のキャンバスの縮尺に設定 ボタンを使用すると、可視性の範囲の境界として現在のマップキャンバスの縮尺を使用できます。詳細については 縮尺依存レンダリング 参照してください。

14.1.14.2. ジオメトリの簡素化

QGISはオンザフライでの地物の簡素化をサポートしています。これにより、小縮尺で多数の複雑な地物を描画する際のレンダリング時間を短縮することができます。この機能は、レイヤの設定の checkbox ジオメトリの簡素化 オプションで有効または無効にすることができます。また、新しく追加されたレイヤに対して、デフォルトで簡素化を有効にするグローバル設定もあります(詳細は グローバルな地物の簡素化 を参照してください)。

../../../_images/simplify_rendering.png

図 14.61 レイヤのジオメトリ簡素化ダイアログ

注釈

地物の簡素化により、場合によってはレンダリングされた出力に不整合が発生することがあります。これには、ポリゴン間の細長い隙間の発生や、オフセットに基づくシンボルレイヤの不正確なレンダリングなどがあります。

非常に詳細なレイヤ(膨大な数のノードを持つポリゴンレイヤなど)をレンダリングすると、すべてのノードをエクスポートファイルに含めるため、PDF/SVG形式でのレイアウトエクスポートが巨大になることがあります。これによって、この結果ファイルを他のプログラムで作業したり開いたりする際に非常に遅くなることもあります。

checkbox レイヤをラスタとして描画する にチェックを入れると、これらのレイヤがラスタ化されるので、このようなレイヤに含まれるノード全てをエクスポートするファイルに含める必要がなくなり、レンダリングが高速化されます。

レイアウトを強制的にラスタとして書き出すことでも対応できますが、これは全てのレイヤにラスタ化が適用される、オール・オア・ナッシングの解決策です。

再描画間隔(秒) :タイマーを設定して、マッチした間隔で個々のレイヤを自動的に更新します。複数のレイヤに自動更新間隔が設定されている場合、複数回の更新を避けるためにキャンバスの更新は延期されます。

データプロバイダによっては、QGISの外でデータソースに変更が適用されたときに、QGISへ通知を送信することができます(例:PostgreSQL)。 checkbox 通知時にレイヤを更新する オプションを使用すると、通知によって更新を実行できます。また、 checkbox メッセージがある場合のみ のテキストボックスで設定した特定のメッセージの場合にのみレイヤを更新するよう制限することもできます。

14.1.15. 変数プロパティ

式 変数 タブでは、レイヤのレベルで利用可能なすべての変数(すべてのグローバルおよびプロジェクトの変数も含む)を示しています。

また、ここではユーザーはレイヤレベルの変数の管理もできます。 signPlus ボタンをクリックして、新しいレイヤレベルのカスタム変数を追加します。同様に、リストからレイヤレベルのカスタム変数を選択して signMinus ボタンを押すと、変数が削除されます。

一般ツールの 値を変数に格納する セクションには、変数の使用に関する詳細があります。

14.1.16. メタデータプロパティ

editMetadata メタデータ タブには、レイヤに関するメタデータレポートの作成・編集オプションがあります。以下のような関連事項を入力します:

  • データの 識別 :データセットの基本属性情報(親識別子、識別子、タイトル、要約、言語など)

  • データの属する カテゴリISO カテゴリに加えて、独自のものを追加できます。

  • データや関連する概念を検索するための標準語彙集に基づく キーワード

  • データセットへの アクセス (ライセンス、権利、料金、制約)

  • データセットの 領域 :空間的な領域(CRS、マップ領域、標高)と、時間的な領域があります。

  • データセットの所有者の 連絡先

  • 付随的なリソースと関連する情報への リンク

  • データセットについての 履歴

入力された情報の要約が 検証 タブに表示され、フォームに関連した潜在的な問題を特定するのに役立ちます。この問題点は修正してもよいですし、無視することもできます。

メタデータは現在のところ、プロジェクトファイル内に保存されています。併せて、ファイルベースのレイヤの場合は .qmd ファイルに、リモートレイヤ(例:PostGIS)の場合はローカルの .sqlite データベースに保存することもできます。

14.1.17. 依存関係プロパティ

依存関係 依存関係 タブでは、レイヤ間のデータの依存関係を宣言することができます。データの依存性は、あるレイヤのデータ修正が、ユーザーの直接操作が無くとも他のレイヤのデータを修正してしまう場合に発生します。これには例えば、あるレイヤのジオメトリが、他のレイヤのジオメトリを修正した後に、データベーストリガーやカスタムPyQGISスクリプトによって更新される場合などがあります。

依存関係 タブでは、現在のレイヤのデータを外部から変更する可能性のあるレイヤを任意で選択できます。依存するレイヤを正しく指定すれば、依存するレイヤが変更されたときに、QGISはこのレイヤのキャッシュを無効化することができます。

14.1.18. 凡例プロパティ

凡例 凡例 プロパティタブでは、 レイヤパネル印刷レイアウトの凡例 に関する高度な設定ができます。これらのオプションには以下のものがあります:

  • checkbox シンボル上のテキスト :場合によっては、凡例内のシンボルに追加の情報を加えると便利なことがあります。このフレームでは、レイヤのシンボロジで使用されているシンボルのどれにでもテキストつけることができます。このテキストは、 レイヤ パネルとプリントレイアウトの凡例の両方でシンボル上に表示されます。テーブルウィジェットでシンボルの横に各テキストを入力するか、 式でラベルを設定 ボタンを使ってテーブルに入力することで、凡例とテキストの対応付けがなされます。 テキストの外観は テキスト形式 ボタンのフォント・色セレクタウィジェットで設定します。

../../../_images/text_legend_symbols.png

図 14.62 シンボル上のテキスト設定(左)と レイヤ パネルでのレンダリング結果(右)

  • レイヤパネル内のレイヤツリーに埋め込み可能なウィジェットのリスト。このアイディアは、レイヤで頻繁に使用するいくつかのアクション(不透明度の設定、フィルタ、選択、スタイルなど)に簡単にアクセスするための方法を提供することです。

    デフォルトではQGISは不透明度ウィジェットを提供していますが、これは独自ウィジェットを登録するプラグインによって拡張することが可能で、管理するレイヤにカスタムアクションを割り当てられます。

14.1.19. QGISサーバープロパティ

オーバーレイ QGISサーバー タブは 説明帰属メタデータURL凡例URL のセクションからなります。

説明 セクションでは、リクエスト内でのレイヤ参照に使用される 短い名前 (短い名前の詳細については レイヤー、グループ、およびプロジェクトの短い名前 を参照)を変更できます。また、レイヤの タイトル要約 を追加・編集したり、ここで キーワードリスト を定義することもできます。このキーワードリストは、メタデータカタログで使用することができます。タイトルをXMLメタデータファイルから使用したい場合には、 データURL フィールドにリンク先を入力する必要があります。

帰属 を使用してXMLメタデータ・カタログから属性データを取得します。

メタデータURL ではXMLメタデータカタログへの一般的なパスを定義できます。この情報はQGISプロジェクトファイル内に保存され、その後のセッションやQGISサーバーに使用されます。

凡例URL セクションでは、URLフィールドに凡例画像のURLを指定します。「形式」ドロップダウンオプションを使用して、適切な画像形式を適用します。現在、PNG、JPG、JPEG画像形式をサポートしています。

../../../_images/vector_server_properties.png

図 14.63 ベクタレイヤプロパティダイアログのQGISサーバータブ

QGISサーバーについて更に学ぶには、 QGIS Server Guide/Manual を読んでください。

14.1.20. デジタイズプロパティ

digitizing デジタイズ タブにはデジタイズしたジオメトリの品質を確保するために役立つオプションへのアクセスがあります。

../../../_images/vector_digitizing_properties.png

図 14.64 QGISのベクタレイヤプロパティダイアログのデジタイズタブ

14.1.20.1. 自動修正

自動修正 セクションのオプションは、追加または修正されたジオメトリの頂点に直接影響を与えます。 checkbox 重複ノードを削除 オプションがチェックされている場合、全く同じ座標の連続する2頂点は削除されます。 ジオメトリの精度 が設定されている場合、すべての頂点座標は設定されたジオメトリ精度の最も近い倍数に丸められます。丸めはレイヤの座標参照系で行われます。Z値とM値は丸められません。多くのマップツールでは、デジタイズ中にはキャンバスにグリッドが表示されます。

14.1.20.2. ジオメトリチェック

ジオメトリチェック セクションでは、ジオメトリ単位での追加検証を有効にすることができます。ジオメトリを変更したらすぐさま、チェックの失敗がジオメトリ検証パネルでユーザーに報告されます。チェックに失敗している間はレイヤを保存することはできません。 checkbox 有効(valid)か にチェックを入れると、ジオメトリの自己交差のような、基本的な有効性チェックを実行します。

14.1.20.3. トポロジチェック

トポロジチェック セクションでは、追加のトポロジ検証チェックを有効にすることができます。トポロジチェックはユーザーがレイヤを保存した際に実行されます。チェックエラーはジオメトリ検証パネルに報告されます。有効性エラーが出ている間はレイヤを保存することはできません。トポロジチェックは変更した地物のバウンディングボックス領域内で実行されます。同じ領域内に他の地物がある場合もあるため、他の地物に関連したトポロジエラーも現在の編集セッションで発生したエラーと同じように報告されます。

トポロジチェックのオプション

説明図

checkbox 隙間がないか は、隣接するポリゴンとの間に隙間がないかをチェックします。

../../../_images/gapcheck.png

checkbox 重なり(Overlap) は、隣接するポリゴンとの重なりがないかをチェックします。

../../../_images/overlapcheck.png

checkbox 頂点欠損(点で分割されるべき直線) のチェックは、隣接するポリゴンの共有された境界について、頂点が一方の境界には無く、他方の境界にはあるようなものをチェックします。

../../../_images/missingvertexcheck.png

隙間チェックの例外

他の部分はポリゴンで完全に覆われているものの、ポリゴンレイヤのある領域内には隙間を作っておくのが望ましい場合もあります。例えば、土地利用レイヤでは湖のために穴があり得るかもしれません。隙間チェックでは、無視される領域を定義することができます。このような領域内の隙間は許容されるものであるから、ここでは 許容される隙間(Allowed Gaps) 領域と呼ぶことにします。

許容される隙間 の隙間チェックに関するオプションでは、 レイヤ を設定できます。

隙間チェックが実行される際に、 許容される隙間のレイヤ の1つ以上のポリゴンでカバーされている隙間はトポロジエラーとしては報告されません。

また、 バッファ を追加設定することもできます。このバッファは 許容される隙間のレイヤ の各ポリゴンに適用されます。これにより、隙間の境目にあるアウトラインのわずかな変化に影響されにくいテストが可能となります。

許容される隙間 を有効にすると、検出された隙間エラーのための追加ボタン( 許容される隙間を追加 )が、デジタイズ中に隙間が報告されるジオメトリ検証ドックで利用できます。 許容される隙間を追加 ボタンを押すと、検出された隙間のジオメトリを持つ新しいポリゴンが 許容される隙間レイヤ に挿入されます。これにより、許容されている隙間に素早くフラグを立てることができます。