19.3. 出力の作成

図 19.61 に、これまでのセクションで説明したあらゆる種類のレイアウトアイテムを含む印刷レイアウトの例を示します。

../../../_images/print_composer_complete.png

図 19.61 地図ビュー、凡例、画像、スケールバー、地図グリッド、ラベルテキスト、HTMLフレームを追加した印刷レイアウト

レイアウト メニューやツールバーから、印刷レイアウトをさまざまなファイル形式に出力することができ、解像度(印刷の品質)や用紙サイズの変更も可能です。

  • filePrint 印刷 アイコンは、インストールされているプリンタドライバに応じて、印刷レイアウトを接続されたプリンタで印刷したり、PostScriptファイルに出力できます。

  • saveMapAsImage 画像としてエクスポート アイコンは、印刷レイアウトを PNGBMPTIFJPG やその他の画像形式で出力します。

  • saveAsSVG SVGとしてエクスポート アイコンは、 SVG (Scalable Vector Graphic) として印刷レイアウトを保存します。

  • saveAsPDF PDFとしてエクスポート アイコンは、作成した印刷レイアウトを直接 PDF (Portable Document Format) ファイルとして保存します。

19.3.1. エクスポート設定

印刷レイアウトをエクスポートする際には、最適な出力を行うためにQGIS がチェックするエクスポート設定があります。これらの設定は、以下の場所で行います:

  • レイアウト パネルの エクスポート設定 における、 エクスポート解像度ラスタとして印刷する常にベクタとしてエクスポートするワールドファイルを保存する

  • ページアイテムプロパティ パネルにおける、 ページをエクスポートから除外する

  • アイテムプロパティ パネルにおける、 アイテムをエクスポートから除外する

19.3.2. 画像としてエクスポート

印刷レイアウトを画像としてエクスポートするには:

  1. saveMapAsImage 画像としてエクスポート アイコンをクリックします

  2. 使用する画像形式と保存先フォルダ、ファイル名(例 myill.png )を選択します。レイアウトに複数ページが含まれる場合には、指定されたファイル名にページ番号が追加された名前(例 myill_2.png )のファイルに各ページがエクスポートされます。

  3. 次に開くダイアログ( 画像エクスポートオプション )では、以下の設定ができます:

    • 印刷レイアウトの エクスポート解像度 とエクスポートするページの寸法( レイアウト パネルで設定された値)を上書きできます。

    • アンチエイリアスを有効にする オプションを有効にすることで、画像のレンダリングを改善できます。

    • レイアウトを ジオリファレンスされた画像 としてエクスポートしたい場合(例:その他のプロジェクトと画像を共有したい場合)には、 unchecked ワールドファイルを生成する オプションにチェックを入れると、エクスポートする画像と同名で異なる拡張子(TIFFは .tfw 、PNGは .pnw 、JPEGは jgw など)の ESRI ワールドファイル がエクスポート時に生成されます。このオプションは、 レイアウトパネル の設定でデフォルトでチェック済みにすることもできます。

      注釈

      複数ページの出力では、( ワールドファイルを生成する オプションにチェックが入っている場合、) 参照マップ が含まれるページにのみワールドファイルが作成されます。

    • checkbox 内容に合わせて切り取る オプションにチェックを入れると、レイアウトの各ページで、レイアウトによる出力画像は全てのレイアウトアイテム(地図、凡例、スケールバー、図形、ラベル、画像など)を含んだ最小領域となります。

      • 印刷レイアウトが単一ページの場合には、出力結果は印刷レイアウト上のアイテム全てを含むようにリサイズされます。その後、全てのアイテムの位置(ページ内またはページの上下左右)に応じて、ページは縮小または拡大されます。

      • 複数ページの印刷レイアウトの場合には、領域内にアイテムが収まるように各ページがリサイズされます(全ページの左右と、最初のページの上部、最後のページの下部)。リサイズされた各ページは、それぞれ別のファイルにエクスポートされます。

      内容に合わせて切り取る ダイアログでは、切り取られた境界の周囲にマージンを追加できます。

../../../_images/image_export_options.png

図 19.62 画像エクスポートオプションで出力結果をアイテムの範囲にリサイズする

ちなみに

レイアウトアイテムが用紙の範囲をはみ出す場合には、透過をサポートする画像形式を使用してください

レイアウトアイテムは用紙の範囲の外にも配置できます。 内容に合わせて切り取る オプションを使用してエクスポートする場合、これによって結果の画像は用紙の範囲をはみ出すことがあります。用紙の範囲の外側の背景は透明であるため、透過をサポートしていない画像形式(例: BMPJPG )では、透明な背景は真っ黒でレンダリングされ、画像が「壊れた」ようになってしまいます。このようなケースでは、透過に対応した画像形式(例: TIFFPNG )を使用してください。

注釈

画像形式(例 PNG )が対応しており、ベースのQtライブラリで出力をサポートしている場合、エクスポートされた画像に プロジェクトのメタデータ (著者、タイトル、作成日、要約など)を含めることができます。

19.3.3. SVGとしてエクスポート

印刷レイアウトをSVGとしてエクスポートするには:

  1. saveAsSVG SVGとしてエクスポート アイコンをクリックします

  2. パスとファイル名(画像エクスポートと同様、複数ページのレイアウトの場合にはベース名として使用されるファイル名)を入力します

  3. 次に開く SVGエクスポートオプション ダイアログで、レイアウトのデフォルトの エクスポート設定 を上書きしたり、新たに設定を行うことができます:

    • unchecked SVGグループとして地図レイヤをエクスポートする :エクスポートされるアイテムがQGISのレイヤ名と同名のレイヤでグループ化されることで、ドキュメントのコンテンツが理解しやすくなります。

    • unchecked 常にベクタとしてエクスポートする :一部のレンダリングオプションでは、きれいなレンダリングのためにアイテムをラスタ化する必要があります。このオプションにチェックを入れると、出力ファイルの見た目は印刷レイアウトのプレビューと一致しないリスクはありますが、オブジェクトをベクタとして保持します(詳細については エクスポート設定 を参照)。

    • checkbox RDF メタデータのエクスポート(title, authorなど): タイトル、著者、日付、説明などをエクスポートします。

    • checkbox ジオメトリを簡略化してファイルを縮小する :このオプションは、ジオメトリ頂点を全てはエクスポートしないようにします。ジオメトリ頂点を全てエクスポートしてしまうと、とてつもなく複雑で巨大なエクスポートファイルサイズになってしまい、他のアプリケーションでは開くことができなくなることがあります。ジオメトリはレイアウトをエクスポートする際に簡略化され、エクスポート解像度では見た目に区別できないような冗長な頂点が削除されます(例えば、エクスポート解像度が 300 dpi の場合には、 1/600 インチ 未満の間隔の頂点が削除されます)。

    • テキスト出力 の設定:これは、テキストラベルを適切なテキストオブジェクトとして出力( テキストを常にテキストオブジェクトとして出力 )するか、パスのみとして出力( テキストを常にパスとして出力 )するかを制御します。テキストオブジェクトとして出力する場合、外部アプリケーション(Inkscapeなど)で通常のテキストとして編集が可能です。ただし、副作用としてレンダリング品質が低下し、さらにテキストにバッファ等の特定の設定がなされていると、レンダリングに問題が発生します。このため、テキストをパスとして出力することを推奨します。

    • checkbox 内容に合わせて切り取る オプション の適用

    • unchecked ラスタタイルのエクスポートを無効化 :ファイルをエクスポートする際、QGISは使用メモリの削減のためにラスタレイヤに組み込みのタイルレンダリングを使用します。場合によっては、これが生成されたファイルのラスタに目に見える「継ぎ目」を生じさせる場合があります。このオプションにチェックを入れると、エクスポート中に多量のメモリを消費しますが、この問題を修正できます。

../../../_images/svg_export_options.png

図 19.63 SVGエクスポートオプション

注釈

現在のところ、SVG出力は非常に基本的な機能しかありません。これはQGISの問題ではなく、Qtライブラリに起因しています。この問題は、将来のバージョンで解決されることを期待しています。

19.3.4. PDFとしてエクスポート

印刷レイアウトをPDFとしてエクスポートするには:

  1. saveAsPDF PDFとしてエクスポート アイコンをクリックします

  2. パスとファイル名を入力します。画像やSVGとしてエクスポートする場合とは異なり、レイアウトの全ページが単一のPDFファイルにエクスポートされます。

  3. 次に開く PDF出力のオプション ダイアログで、レイアウトのデフォルトの エクスポート設定 を上書きしたり、新たに設定を行うことができます:

    • unchecked 常にベクタとしてエクスポートする :一部のレンダリングオプションでは、きれいなレンダリングのためにアイテムをラスタ化する必要があります。このオプションにチェックを入れると、出力ファイルの見た目は印刷レイアウトのプレビューと一致しないリスクはありますが、オブジェクトをベクタとして保持します(詳細については エクスポート設定 を参照)。

    • checkbox 地理参照情報を追加 :情報を取得する 参照マップ が最初のページにある場合にのみ、利用可能です。

    • checkbox RDF メタデータのエクスポート(title, authorなど): タイトル、著者、日付、説明などをエクスポートします。

    • テキスト出力 の設定:これは、テキストラベルを適切なテキストオブジェクトとして出力( テキストを常にテキストオブジェクトとして出力 )するか、パスのみとして出力( テキストを常にパスとして出力 )するかを制御します。テキストオブジェクトとして出力する場合、外部アプリケーション(Inkscapeなど)で通常のテキストとして編集が可能です。ただし、副作用としてレンダリング品質が低下し、さらにテキストにバッファ等の特定の設定がなされていると、レンダリングに問題が発生します。このため、テキストをパスとして出力することを推奨します。

    • 以下の設定を使用してPDFの 画像圧縮 について制御できます:

      • Lossy (JPEG) これはデフォルトの圧縮モードです

      • Lossless, 多くの場合はより大きなファイルを生成しますが、出力を印刷したり、外部アプリケーションで後処理を行う場合には適したオプションです(Qt 5.13 以降が必要)。

    • unchecked ジオPDF(GeoPDF)を作成 :ジオリファレンスされたPDFファイルを作成します(GDALバージョン3以降が必要)。

    • unchecked ラスタタイルのエクスポートを無効化 :ファイルをエクスポートする際、QGISは使用メモリの削減のためにタイルベースのレンダリングを使用します。場合によっては、これが生成されたファイルのラスタに目に見える「継ぎ目」を生じさせる場合があります。このオプションにチェックを入れると、エクスポート中に多量のメモリを消費しますが、この問題を修正できます。

    • checkbox ジオメトリを簡略化してファイルを縮小する: レイアウトのエクスポート中に、エクスポート先の解像度では区別することができない頂点を削除することでジオメトリが簡略化されます(たとえば、エクスポート先の解像度が 300 dpi ならば、 1/600 インチ よりも近い頂点は削除されます)。これにより、出力ファイルのサイズと複雑さを減少させることができます(非常に大きなファイルは他のアプリケーションでの読み込みに失敗する可能性があります)。

../../../_images/pdf_export_options.png

図 19.64 PDF出力のオプション

注釈

QGIS 3.10以降でGDAL 3を使用している場合には、GeoPDFのエクスポートがサポートされ、いくつかのGeoPDF 特有のオプションが利用可能です:

  • 形式 (GeoPDFの形式-GeoPDFにはいくつかのバリエーションがあります)

  • 複数の地図テーマを含める (含める地図テーマを指定します)

  • ベクタ地物情報を含める (レイヤを選択し、レイヤををPDFの論理グループにグループ化します)

注釈

印刷レイアウトを地理参照をサポートする形式(例: PDFTIFF )へエクスポートする場合には、デフォルトで地理参照されたアウトプットを生成します。

19.3.5. 地図帳の作成

地図帳の機能を使うと、自動で地図帳を作成することができます。地図帳はテーブルやベクタレイヤ( カバレッジレイヤ )の地物を利用して、テーブル/レイヤの地物( 地図帳地物 )毎の出力を作成します。最も一般的な使い方は、現在の地図帳地物に地図アイテムをズームすることです。さらに、以下のような使い方もあります:

  • 地図帳地物と別のレイヤについて、地図帳地物と同じ属性値を持つ地物や、地図帳地物のジオメトリ内部にある地物のみを表示した地図アイテムの作成

  • 地図帳地物のイテレーションに応じてテキストが置き換えられるラベルや、HTMLアイテムの作成

  • 現在の地図帳地物に関連した 親または子 地物の属性を表示したテーブルアイテムの作成

各地図帳地物について、エクスポート設定に応じてすべてのページとアイテムの出力が実行されます。

ちなみに

変数を使用したより柔軟な対応

QGISには、地図帳に関連したものも含め多数の関数や 変数 が用意されています。これにより、地図帳の状態に応じて、レイアウトアイテムだけでなくレイヤのシンボロジも操作することができます。これらの機能を組み合わせることにより、より柔軟な対応が可能となり、高度な地図を簡単に作成することができます。

地図帳の作成を有効にし、地図帳パラメータにアクセスするには、 地図帳 パネルを開いてください。このパネルには以下の設定があります( 図 19.65 参照):

../../../_images/atlas_properties.png

図 19.65 地図帳パネル

  • checkbox 地図帳を作成する は、地図帳の作成を有効または無効にできます。

  • 設定

    • カバレッジ・レイヤ selectString コンボボックスでは、イテレーションする地物を含むテーブルまたはベクタレイヤを選択します。

    • オプションの checkbox カバレッジレイヤを隠す にチェックを入れると、地図帳の作成中はカバレッジレイヤを表示しません(その他のレイヤは表示されます)。

    • オプションの ページ名称 コンボボックスは、レイヤ地物ページの名前を指定します。カバレッジレイヤのフィールドを選択するか、 を設定できます。このオプションが空欄の場合には、QGISはレイヤに適用されたフィルタやソートに応じた内部IDを使用します。

    • オプションの checkbox フィルタ テキストエリアでは、カバレッジレイヤから地物をフィルタリングするための式を指定することができます。式が空欄の場合には、評価値が True となる地物のみが使用されます。

    • オプションの checkbox 並べ方 は、カバレッジレイヤのフィールドまたは式を使用して、カバレッジレイヤの地物(と出力結果)を並べ替えます。ソートの順序(昇順または降順)は、上向きまたは下向き矢印が表示された切り替え式の 並べ順 ボタンによって設定できます。

  • 出力 - ここでは、地図帳の出力に関する設定ができます:

    • 出力ファイル名の式 テキストボックスは、地図帳地物それぞれに対するファイル名を生成するために使用される式です。これは、式に基づいており、複数のファイルをレンダリングする場合のみ意味があります。

    • checkbox 可能であれば一つのファイルに出力 は、選択した出力形式で可能な場合(例えば PDF )には、単一のファイルを生成するように強制します。このフィールドにチェックが入っている場合には、 出力ファイル名の式 フィールドの値には意味がありません。

    • 画像のエクスポート形式 ドロップダウンリストでは、 saveMapAsImage 画像として地図帳をエクスポート... ボタンを使用した際の出力形式を選択します。

19.3.5.1. 地図帳による制御

地図帳の最も一般的な使い方は、カバレッジレイヤのイテレーションに従って、現在の地図帳地物に地図アイテムをズームすることです。この動作は、地図アイテムの 地図帳による制御 グループのプロパティで設定を行います。地図アイテムに適用可能なさまざまな設定については、 地図帳による制御 を参照してください。

19.3.5.2. 式を使ったラベルのカスタマイズ

地図帳がイテレーションする地物に合わせてラベルを変化させるために、ラベルに式を含めることができます。式の部分(関数、フィールド、変数を含む)は必ず [%%] の間に配置してください(詳細は ラベルアイテム を参照してください)。

例えば、 CITY_NAME フィールドと ZIPCODE フィールドを持つcity レイヤの場合、次のように入力できます:

The area of [% concat( upper(CITY_NAME), ',', ZIPCODE, ' is ',
format_number($area/1000000, 2) ) %] km2

または、別の組み合わせの方法として、次のようにもできます:

The area of [% upper(CITY_NAME)%],[%ZIPCODE%] is
[%format_number($area/1000000,2) %] km2

情報 [% concat( upper(CITY_NAME), ',', ZIPCODE, ' is ',  format_number($area/1000000, 2) ) %] は、ラベルの内部で使用される式です。どちらの式も、生成される地図帳に以下のような形式のラベルを作成します:

The area of PARIS,75001 is 1.94 km2

19.3.5.3. 地図帳でのデータによって定義された上書きの利用

印刷レイアウトには、 dataDefine データによって定義された上書き ボタンを使用して、選択した設定を上書きできる箇所がいくつかあります。これは、地図帳の作成において特に便利です。このウィジェットの詳細については、 データによって定義された上書きの設定 を参照してください。

以下の例では、QGISサンプルデータセットの Regions レイヤを使用し、これを地図帳作成のための カバレッジレイヤ として選択しています。レイアウトは単一ページで、地図アイテムとラベルアイテムを含んでいることを想定しています。

領域範囲の高さ(南北方向)が幅(東西方向)よりも大きい場合には、紙面を有効利用するために 向きではなく、 向きを使用したいとしましょう。 dataDefine データによって定義された上書き ボタンを使用すると、用紙の向きを動的に設定することができます。

ページ上を右クリックして、 ページのプロパティ を選択し、パネルを開きます。領域のジオメトリに応じた式を使って用紙の向きを動的に設定したいので、 方向 フィールドの dataDefine ボタンを押し、 編集... を選択して、 式文字列ビルダ ダイアログを開き、以下の式を入力します。

CASE WHEN bounds_width(@atlas_geometry) > bounds_height(@atlas_geometry)
THEN 'Landscape' ELSE 'Portrait' END

ここで 地図帳のプレビュー を行うと、用紙自体は自動的に向きが変わるものの、アイテムの配置位置は望んだものにはなっていないかもしれません。各領域について、レイアウトアイテムの位置も変更する必要があります。地図アイテムの場合は、 プロパティの dataDefine ボタンを使用して、以下のような式で幅を動的に設定することができます。

@layout_pagewidth - 20

同様にして 高さ プロパティの dataDefine ボタンを使用して以下の式を指定すれば、地図アイテムのサイズを制限することができます。

@layout_pageheight - 20

地図アイテムがページ内の中心にあるようにするには、 基準点 をラジオボタンの左上に設定して、 XY の位置として 10 を入力します。

ページの中央にある地図の上にタイトルを追加してみましょう。ラベルアイテムを選択し、水平方向配置を radioButtonOn 中央 に設定します。次にラベルを正しい位置に移動させ、 基準点 として中央のボタンを選択し、 X フィールドに以下の式を指定します。

@layout_pagewidth / 2

他のどんなレイアウトアイテムも同様の方法で位置を設定でき、これによって縦横どちらの向きでもレイアウトアイテムを正しく配置することができます。またさらに、タイトルを地物属性でカスタマイズしたり(使用例は 式を使ったラベルのカスタマイズ を参照)、画像を変更したり、ページの向きに応じて凡例の列数を変更するなどの調整ができます。

ここで紹介した情報は、データによって定義された上書きオプションに関する素晴らしいブログ(英語・ポルトガル語) Multiple_format_map_series_using_QGIS_2.6 を更新したものです。

データによって定義された上書きボタンのもう一つの例として、画像の動的な変更への利用があります。以下の例では、フィールド型がバイナリの logo という名前の BLOBフィールドを含むGeoPackageレイヤを使用します( 新しいGeoPackageレイヤを作成する 参照)。各地物に対して別々の画像が定義されており、 地図帳のプレビューと作成 で説明したように、地図帳でイテレーションできます。必要なことは、地図帳の設定を行った上で印刷レイアウトに画像アイテムを追加し、その アイテムプロパティ に移動することです。 メインプロパティ画像ソース セクション内に、データによって定義された上書きボタンがあります。

../../../_images/picture_image_source.png

次のウィンドウで 編集 を選択すると、 式文字列ビルダ が開きます。 フィールドと値 セクションから、GeoPackageレイヤ内で定義されたBLOBフィールドを見つけることができます。フィールド名の logo をダブルクリックし、 OK ボタンをクリックします。

../../../_images/expression_blob_picture_atlas.png

地図帳は、このGeoPackageレイヤを カバレッジレイヤ として選択すると、BLOBフィールドのエントリを順番に取り出します(詳細については 地図帳のプレビューと作成 を参照)。

これらは、地図帳の高度な設定の使い方のほんの一例です。

19.3.5.4. 地図帳のプレビューと作成

../../../_images/atlas_preview.png

図 19.66 地図帳ツールバー

地図帳の設定が完了し、レイアウトアイテム(地図、テーブル、画像など)と地図帳のリンクができたら、 地図帳 ► 地図帳のプレビュー を選択するか、または atlas 地図帳のプレビュー アイコンをクリックすることで、全てのページのプレビューを作成することができます。その後、矢印ボタンを使って全ての地物を順番に確認することができます。

  • atlasFirst 最初の地物

  • atlasPrev 前の地物

  • atlasNext 次の地物

  • atlasLast 最後の地物

特定の地物を選択してプレビューするためにコンボボックスを使用することもできます。コンボボックスは、地図帳の ページ名称 オプションで設定された式に基づいた地図帳地物の名前を表示します。

シンプルな印刷レイアウトと同様、地図帳の出力も様々な方法で生成できます(詳細については 出力の作成 を参照してください。ただし、ツールは レイアウト メニューのものを使う代わりに 地図帳 メニューまたはツールバーのものを使います)。

これにより、 地図帳 ► 地図帳の印刷 を使用すれば、直接に地図帳を印刷できます。また、 地図帳 ► PDFとして地図帳をエクスポート... を使用すれば、PDFを作成することもできます。これを使うと、生成されるPDFファイル全てを保存するディレクトリを尋ねられます。ただし、 checkbox 可能であれば一つのファイルに出力 にチェックを入れている場合には、ファイル名を指定するように尋ねられます。

地図帳 ► 画像として地図帳をエクスポート...地図帳 ► SVGとして地図帳をエクスポート... ツールの場合にも、フォルダを選択するよう尋ねられます。それぞれの地図帳地物の印刷レイアウトの全ページが、 地図帳 パネルで設定した画像ファイル形式またはSVG形式でエクスポートされます。

注釈

複数ページの出力の場合には、印刷レイアウトの場合と同様に、地図帳は 一般設定 で説明される参照マップを含むページのみがワールドファイルを(各地図帳地物の出力に対して)得られます。

ちなみに

特定の地図帳地物を印刷

地図帳地物の1つだけに対するレイアウトを印刷またはエクスポートしたい場合には、プレビューを開始し、ドロップダウンリストからエクスポートしたい地物を選択して、 レイアウト ► 印刷 (またはサポートしているファイル形式への エクスポート... )をクリックするだけです。

19.3.5.5. 地図帳の作成にプロジェクトで定義されたリレーションを使用する

HTMLとJavascriptの知識があるユーザーは、GeoJSONオブジェクトを操作し、QGISプロジェクトで定義されたリレーションを使用することができます。この方法と、HTML に直接挿入された式を使用する方法との違いは、こちらの方が完全で非構造的なGeoJSONフィーチャーを扱える点です。つまり、既存のJavascriptライブラリや関数を使用してGeoJSONフィーチャー表現を操作できます。

以下のコードは、定義されたリレーションから関係するすべての子地物を含みます。JavaScriptの setFeature 関数を使用すると、リレーションを好きな形式(リスト、テーブルなど)で表現する柔軟なHTMLを作成することができます。このコードサンプルは、関係する子地物の動的な箇条書きリストを生成します。

// Declare the two HTML div elements we will use for the parent feature id
// and information about the children
<div id="parent"></div>
<div id="my_children"></div>

<script type="text/javascript">
   function setFeature(feature)
   {
     // Show the parent feature's identifier (using its "ID" field)
     document.getElementById('parent').innerHTML = feature.properties.ID;
     //clear the existing relation contents
     document.getElementById('my_children').innerHTML = '';
     feature.properties.my_relation.forEach(function(child_feature) {
     // for each related child feature, create a list element
     // with the feature's name (using its "NAME" field)
       var node = document.createElement("li");
       node.appendChild(document.createTextNode(child_feature.NAME));
       document.getElementById('my_children').appendChild(node);
     });
   }
</script>

地図帳の作成時には、親地物を含むカバレッジレイヤのイテレーションが行われます。各ページでは、親地物の識別子に応じて、関連する子地物の箇条書きリストが表示されます。