19.4. レポートの作成
このセクションでは、QGISでのレポートの設定について説明します。
19.4.1. レポートとは?
定義から言えば、GISレポートとはストーリー立てた情報を含む文書で、地図やテキスト、グラフィック、表などが含まれています。レポートはその場限りのものとして作成することもあれば、周期的、反復的、定期的に作成されたり、あるいは必要に応じて作成することもあります。レポートは、特定の期間やイベント、発生した出来事、対象、または場所などについて言及するものです。
QGISにおいては、 レポート は レイアウト を拡張したものです。
レポート機能によって、ユーザーはGISプロジェクトを簡単に、素早く、系統立った方法で出力することができます。
レポートは、
または のダイアログ内から作成できます。19.4.2. 作成してみよう
レイアウトマネージャ ダイアログ内で、 テンプレートから新規作成 から 空のレポート のドロップダウンオプションを選択し、 作成... ボタンを押すことで、レポートを作成することができます。
この例では、Natural Earth dataset (1:10M) から、行政界、人口集中地域、港、空港などを使用しています。
レポートオーガナイザ パネルがある点が異なっています。
コマンドを使用すれば、空のレポートを作成できます。最初の状態では、見るべきものはあまりありません。表示されたダイアログは印刷レイアウトデザイナーとよく似ていますが、左側に19.4.3. レポートワークスペースのレイアウト
QGISレポートは、複数の入れ子になったセクションで構成されます。先ほど作成した空のレポートには、初期状態でメインレポートセクションのみがあります。このレポートセクションのオプションは、 レポートヘッダを含む と レポートフッターを含む のみです。これらのオプションを有効にすると、レポートの最初のページ(レポートの個々のパーツは必要に応じて複数ページにできます)にヘッダが含まれ、最後のページにはフッターが含まれます。ヘッダーを有効にして( レポートヘッダを含む )、その横にある 編集 ボタンを押してください。
すると、いくつか変化が起こります。1つは、 レポートオーガナイザ 内の レポート の横に編集中の鉛筆マークが表示され、このレポートセクションがデザイナーで編集中であることを示します。また、小さい レポートヘッダ のタイトルが付いた新しいページがあります。このページはデフォルトで 横 向きですが、これはページ上を右クリックして を選択すれば、このページの向き(やその他のプロパティ)の変更ができます。この操作によりページの アイテムプロパティ タブに移動し、ページの 大きさ や 幅 、 高さ などの指定ができます。
QGISレポートでは、レポートの各コンポーネントは個々のレイアウトで構成されています。これらのコンポーネントは、標準的な印刷レイアウトと同じツールを使用して作成・変更ができます。従って、ラベルや画像、地図、テーブルなどを自由に組み合わせて使用できます。それでは、実際にレポートのヘッダにいくつかのアイテムを追加してみましょう。
レポートにはシンプルなフッターも作成しましょう。 レポートフッターを含む オプションにチェックを入れ、 編集 ボタンを押します。
先に進む前に、このレポートをエクスポートし、どんなものが得られるのか確認してみましょう。エクスポートは、
メニューから行います。ここでは を選択して、レポート全体をPDFファイルへレンダリングします。結果は、ヘッダとフッターから構成された2ページのPDFという、あまり印象的ではないものです。このレポートをもっと面白いものにしてみましょう。 レポートオーガナイザ セクションを追加 ボタンを押すと、レポートに追加する新しいセクションに関する選択肢が表示されます。
静的レイアウトセクション と フィールドグループセクション という2つの選択肢があります。
静的レイアウトセクション は、単一の静的なレイアウトボディを追加します。これは、レポートの途中で静的レイアウトを埋め込むために使用します。
フィールドグループセクション は、レイヤの地物それぞれに対してボディレイアウトを繰り返します。地物は、 選択したグループ地物で並べ替えられます(昇順 / 降順ソートのオプション付き)。フィールドグループセクションが子セクション(例えば、異なるフィールドに対する別のフィールドグループセクション)を持つ場合、グループ地物に対してユニークな値を持つ地物のみが順番に取り出されます。これにより、ネストされたレポートを作成することができます。
ここでは、レポートに フィールドグループセクション を追加します。最も基本的なレベルでは、 フィールドグループセクション は 地図帳 と同等のものと考えることができます。順番に処理するためのレイヤを選択すると、レポートは見つかった地物ごとにセクションを挿入します。新しい フィールドグループセクション を選択すると、いくつかの新しい関連する設定が表示されます。
ここでは、adm1name フィールドの値を使用して「Admin Level 1」 レイヤの全ての州をイテレーションするようにフィールドグループを設定します。ヘッダ・フッターを含めるための同様のオプションもありますが、このセクションに ボディ を含めるための新しいオプションがあります。このオプションを使用して、ボディを編集しましょう。
ボディは地図と州の名前を示すラベルで構成するものとしましょう。州の名前を入れるために、 メインプロパティ で 式の挿入・編集... を使ってデータ定義のテキストを追加します。
を選択し、結果として次のような式が得られます(「name」は「Admin Level 1」レイヤの属性名で、州の名前を保持しています)。
[% "name" %]
地図は現在のレポート地物に従うように設定します( レポートによる制御 にチェックを入れて有効化します。 地図帳による制御 にチェックが入っている場合に、地図帳の地図アイテムが現在の地図帳地物に従うのと同様です)。
ここまで設定できたところでレポートをエクスポートすると、以下のようなものが得られます。
地図帳と似たようなものではありますが、ヘッダページとフッターページがあります。
州グループにサブセクションを追加して、レポートをより面白いものにしてみましょう。まず、レポートオーガナイザで「Admin Level 1」フィールドグループを選択し、次に セクションを追加 ボタンを押して、新しい フィールドグループセクション を追加します。
フィールドグループセクション の地物を反復処理する際には、その地物は親グループの定義フィールド(ここでは adm1name
)にマッチするものでフィルタリングされます。この例では、追加したサブセクションが Populated Places レイヤを反復処理し、フィルタリング後に見つかった人口集中地区それぞれに対するボディセクションをレポートに組み込みます。ここでのマジックは、 Populated Places レイヤが親レイヤの定義フィールドと同じ名前の adm1name フィールドを持っており、各人口集中地区に対して、それが含まれている州名のタグとなっていることです(運が良ければ、データはすでにこのように構造化されていることでしょう。もし構造化されていない場合には、 属性の空間結合 プロセシングアルゴリズムを実行して、独自のフィールドを作成してください)。このレポートをエクスポートすると、QGISは最初に Admin Level 1 レイヤから州を取得し、次に adm1name がマッチする Populated Places 全てに対して反復処理を行います。結果は以下のようになります。
ここでは Populated Places グループのために、この場所の地図と場所の属性に関するテーブルを含んだ、基本的なボディを作成しました。これで、レポートはヘッダ、最初の州のページ、続いて最初の州内の全ての人口集中地区のページ、それから他の州と人口集中地区のページで、最後にレポートのフッターという構成となりました。Populated Places グループにヘッダーを追加した場合には、以下に示す図のように、各州の人口集中地区が並ぶ直前のページに入ります。
同様に、Populated Places グループに対するフッターは各州の最後の人口集中地区のページの後ろに挿入されます。
ネストされたサブセクションに加えて、レポート内のサブセクションは連続させることもできます。 Admin Level 1 グループに対する2番目のサブセクションとして Airports を追加すると、( Airports レイヤが親グループとリンクする adm1name 属性を持っているならば)レポートは最初に州の人口集中地区をリストし、続いてその州内の空港全てをリストして、それから次の州に移ります。
ここで重要なのは、 Airports グループは Admin Level 1 グループに対するサブセクションであり、 Populated Places グループのサブセクションではないという点です。
これで、レポートは次のような構成になります(州旗も含まれていることに注意してください。このように地物別の画像を追加する手順については後述します)。
19.4.3.1. レポートに画像を含める
画像はレポートにおいて非常に有用です。QGISでは、レポートの静的な部分と動的な部分のどちらにも画像を使用できます。画像は標準的な印刷レイアウトと同じ方法で追加でき、レポートの静的な部分(および動的なレポート部分内の静的な画像)については、操作はそれだけです。
ただし、レポート地物に合わせて画像を設定したい場合には、含める画像を指定するために使用する属性をレイヤが持っている必要があります。
レポート内の画像については、QGISでは絶対ファイル名で指定します。
動的な画像を設定するには、まずは通常通り、グループのボディ部分に画像を追加します。画像の アイテムプロパティ において、 データによって定義された上書き ボタンを使用して 画像のソース を設定し、画像の絶対パスを含む属性を選択するか、もしくは 編集... を選択(して、画像の絶対パスを生成する式を入力)します。
以下は、文字列の連結を使用して画像の絶対パスを指定する式の例です。プロジェクトファイルが置かれているディレクトリ( @project_path
)と、ファイル名を生成するための属性( adm1name
)を使用しています(このケースでは、 adm1name
属性の文字列を大文字に変換し、 '_flag.png' を追加することでファイル名を生成しています)。
concat(@project_folder, '/naturalearth/pictures/' ,
upper("adm1name"), '_flag.png')
これは、画像はプロジェクトファイルのあるディレクトリの naturalearth/pictures
サブディレクトリ内にあることを意味しています。
19.4.3.2. 地図内で現在のレポート地物を強調表示する
上で示したレポートでは、地図上でレポート地物をハイライト(州)と丸囲み(人口集中地区)を使って強調しています。地図上でレポート地物を(地図の中心に配置する以外の方法で)強調するためには、地図帳と同様に、地物の @id
と @atlas_featureid
の比較を用いてスタイルをデータで定義する必要があります。
例えば、レポート地物には他の地物よりも太いライン / 境界線を使用したい場合には、以下のように線の幅をデータ定義することができます。
if($id=@atlas_featureid, 2.0, 0.1)
レポート地物は 2 単位のポリゴン境界線で表示され、その他の地物の線幅は 0.1 単位となります。色をデータ定義とすることもできます(レポート地物には不透明なダークマゼンタ、その他の地物には半透明の薄いグレーを使用するなど)。
if($id=@atlas_featureid, '#FF880088', '#88CCCCCC')
19.4.3.3. 最上位グループを追加する
ネストしたセクションや連続したセクションとセクションヘッダやフッターを組み合わせることで、レポートを非常に柔軟に作成できます。例えば、以下のレポートでは、メインレポートの子として Ports レイヤに関するフィールドグループをもう一つ追加しています。これで、州や人口集中地区、空港をリストアップした後、この地域のすべての港の概要リストを得ることができます。
このレポートの最後のパートは以下のようにエクスポートされます。
19.4.4. エクスポート設定
レポートをエクスポートする(
)時には、ファイル名の入力を求められた後、最適な出力が得られるようにエクスポート設定を調整することができます。ここまででわかったように、QGISのレポート機能は非常に強力で柔軟性に富んでいます!
注釈
これらの情報は、North Road のブログ Exploring Reports in QGIS 3.0 - the Ultimate Guide! から引用しています。