21.3. 出力の作成
図 21.62 に、これまでのセクションで説明したあらゆる種類のレイアウトアイテムを含む印刷レイアウトの例を示します。
メニューやツールバーから、印刷レイアウトをさまざまなファイル形式に出力することができ、解像度(印刷の品質)や用紙サイズの変更も可能です。
印刷 アイコンは、インストールされているプリンタドライバに応じて、印刷レイアウトを接続されたプリンタで印刷したり、PostScriptファイルに出力できます。
画像としてエクスポート アイコンは、印刷レイアウトを
PNG
、BMP
、TIF
、JPG
やその他の画像形式で出力します。SVGとしてエクスポート アイコンは、
SVG
(Scalable Vector Graphic) として印刷レイアウトを保存します。PDFとしてエクスポート アイコンは、作成した印刷レイアウトを直接
PDF
(Portable Document Format) ファイルとして保存します。
21.3.1. エクスポート設定
印刷レイアウトをエクスポートする際には、最適な出力を行うためにQGIS がチェックするエクスポート設定があります。これらの設定は、以下の場所で行います:
レイアウト パネルの エクスポート設定 における、 エクスポート解像度 、 ラスタとして印刷する 、 常にベクタとしてエクスポートする 、 ワールドファイルを保存する
ページアイテムプロパティ パネルにおける、 ページをエクスポートから除外する
アイテムプロパティ パネルにおける、 アイテムをエクスポートから除外する
さらに、多くの定義済みチェックが自動的にレイアウトに適用されます。現在のところ、これらのチェックには、スケールバーがマップアイテムに正しくリンクされているか、マップの概要アイテムもマップに正しくリンクされているかのテストが含まれます。チェックに失敗した場合は、問題を知らせる警告が表示されます。
21.3.2. 画像としてエクスポート
印刷レイアウトを画像としてエクスポートするには:
使用する画像形式と保存先フォルダ、ファイル名(例
myill.png
)を選択します。レイアウトに複数ページが含まれる場合には、指定されたファイル名にページ番号が追加された名前(例myill_2.png
)のファイルに各ページがエクスポートされます。次に開くダイアログ( 画像エクスポートオプション )では、以下の設定ができます:
印刷レイアウトの エクスポート解像度 とエクスポートするページの寸法( レイアウト パネルで設定された値)を上書きできます。
アンチエイリアスを有効にする オプションを有効にすることで、画像のレンダリングを改善できます。
レイアウトを ジオリファレンスされた画像 としてエクスポートしたい場合(例:その他のプロジェクトと画像を共有したい場合)には、 ワールドファイルを生成する オプションにチェックを入れると、エクスポートする画像と同名で異なる拡張子(TIFFは
.tfw
、PNGは.pnw
、JPEGはjgw
など)の ESRI ワールドファイル がエクスポート時に生成されます。このオプションは、 レイアウトパネル の設定でデフォルトでチェック済みにすることもできます。注釈
複数ページの出力では、( ワールドファイルを生成する オプションにチェックが入っている場合、) 参照マップ が含まれるページにのみワールドファイルが作成されます。
内容に合わせて切り取る オプションにチェックを入れると、レイアウトの各ページで、レイアウトによる出力画像は全てのレイアウトアイテム(地図、凡例、スケールバー、図形、ラベル、画像など)を含んだ最小領域となります。
印刷レイアウトが単一ページの場合には、出力結果は印刷レイアウト上のアイテム全てを含むようにリサイズされます。その後、全てのアイテムの位置(ページ内またはページの上下左右)に応じて、ページは縮小または拡大されます。
複数ページの印刷レイアウトの場合には、領域内にアイテムが収まるように各ページがリサイズされます(全ページの左右と、最初のページの上部、最後のページの下部)。リサイズされた各ページは、それぞれ別のファイルにエクスポートされます。
内容に合わせて切り取る ダイアログでは、切り取られた境界の周囲にマージンを追加できます。
Tip
レイアウトアイテムが用紙の範囲をはみ出す場合には、透過をサポートする画像形式を使用してください
レイアウトアイテムは用紙の範囲の外にも配置できます。 内容に合わせて切り取る オプションを使用してエクスポートする場合、これによって結果の画像は用紙の範囲をはみ出すことがあります。用紙の範囲の外側の背景は透明であるため、透過をサポートしていない画像形式(例: BMP
や JPG
)では、透明な背景は真っ黒でレンダリングされ、画像が「壊れた」ようになってしまいます。このようなケースでは、透過に対応した画像形式(例: TIFF
や PNG
)を使用してください。
注釈
画像形式(例 PNG
)が対応しており、ベースのQtライブラリで出力をサポートしている場合、エクスポートされた画像に プロジェクトのメタデータ (著者、タイトル、作成日、要約など)を含めることができます。
21.3.3. SVGとしてエクスポート
印刷レイアウトをSVGとしてエクスポートするには:
パスとファイル名(画像エクスポートと同様、複数ページのレイアウトの場合にはベース名として使用されるファイル名)を入力します
次に開く SVGエクスポートオプション ダイアログで、レイアウトのデフォルトの エクスポート設定 を上書きしたり、新たに設定を行うことができます:
SVGグループとして地図レイヤをエクスポートする :エクスポートされるアイテムがQGISのレイヤ名と同名のレイヤでグループ化されることで、ドキュメントのコンテンツが理解しやすくなります。
常にベクタとしてエクスポートする :一部のレンダリングオプションでは、きれいなレンダリングのためにアイテムをラスタ化する必要があります。このオプションにチェックを入れると、出力ファイルの見た目は印刷レイアウトのプレビューと一致しないリスクはありますが、オブジェクトをベクタとして保持します(詳細については エクスポート設定 を参照)。
RDF メタデータのエクスポート(title, authorなど): タイトル、著者、日付、説明などをエクスポートします。
ジオメトリを簡略化してファイルを縮小する :このオプションは、ジオメトリ頂点を全てはエクスポートしないようにします。ジオメトリ頂点を全てエクスポートしてしまうと、とてつもなく複雑で巨大なエクスポートファイルサイズになってしまい、他のアプリケーションでは開くことができなくなることがあります。ジオメトリはレイアウトをエクスポートする際に簡略化され、エクスポート解像度では見た目に区別できないような冗長な頂点が削除されます(例えば、エクスポート解像度が
300 dpi
の場合には、1/600 インチ
未満の間隔の頂点が削除されます)。テキスト出力 の設定:これは、テキストラベルを適切なテキストオブジェクトとして出力( テキストを常にテキストオブジェクトとして出力 )するか、パスのみとして出力( テキストを常にパスとして出力 )するかを制御します。テキストオブジェクトとして出力する場合、外部アプリケーション(Inkscapeなど)で通常のテキストとして編集が可能です。ただし、副作用としてレンダリング品質が低下し、さらにテキストにバッファ等の特定の設定がなされていると、レンダリングに問題が発生します。このため、テキストをパスとして出力することを推奨します。
内容に合わせて切り取る オプション の適用
ラスタタイルのエクスポートを無効化 :ファイルをエクスポートする際、QGISは使用メモリの削減のためにラスタレイヤに組み込みのタイルレンダリングを使用します。場合によっては、これが生成されたファイルのラスタに目に見える「継ぎ目」を生じさせる場合があります。このオプションにチェックを入れると、エクスポート中に多量のメモリを消費しますが、この問題を修正できます。
注釈
現在のところ、SVG出力は非常に基本的な機能しかありません。これはQGISの問題ではなく、Qtライブラリに起因しています。この問題は、将来のバージョンで解決されることを期待しています。
21.3.4. PDFとしてエクスポート
印刷レイアウトをPDFとしてエクスポートするには:
パスとファイル名を入力します。画像やSVGとしてエクスポートする場合とは異なり、レイアウトの全ページが単一のPDFファイルにエクスポートされます。
次に開く PDF出力のオプション ダイアログで、レイアウトのデフォルトの エクスポート設定 を上書きしたり、新たに設定を行うことができます:
常にベクタとしてエクスポートする :一部のレンダリングオプションでは、きれいなレンダリングのためにアイテムをラスタ化する必要があります。このオプションにチェックを入れると、出力ファイルの見た目は印刷レイアウトのプレビューと一致しないリスクはありますが、オブジェクトをベクタとして保持します(詳細については エクスポート設定 を参照)。
地理参照情報を追加 :情報を取得する 参照マップ が最初のページにある場合にのみ、利用可能です。
RDF メタデータのエクスポート(title, authorなど): タイトル、著者、日付、説明などをエクスポートします。
テキスト出力 の設定:これは、テキストラベルを適切なテキストオブジェクトとして出力( テキストを常にテキストオブジェクトとして出力 )するか、パスのみとして出力( テキストを常にパスとして出力 )するかを制御します。テキストオブジェクトとして出力する場合、外部アプリケーション(Inkscapeなど)で通常のテキストとして編集が可能です。ただし、副作用としてレンダリング品質が低下し、さらにテキストにバッファ等の特定の設定がなされていると、レンダリングに問題が発生します。このため、テキストをパスとして出力することを推奨します。
以下の設定を使用してPDFの 画像圧縮 について制御できます:
Lossy (JPEG) これはデフォルトの圧縮モードです
Lossless, 多くの場合はより大きなファイルを生成しますが、出力を印刷したり、外部アプリケーションで後処理を行う場合には適したオプションです(Qt 5.13 以降が必要)。
ラスタタイルのエクスポートを無効化 :ファイルをエクスポートする際、QGISは使用メモリの削減のためにタイルベースのレンダリングを使用します。場合によっては、これが生成されたファイルのラスタに目に見える「継ぎ目」を生じさせる場合があります。このオプションにチェックを入れると、エクスポート中に多量のメモリを消費しますが、この問題を修正できます。
ジオメトリを簡略化してファイルを縮小する: レイアウトのエクスポート中に、エクスポート先の解像度では区別することができない頂点を削除することでジオメトリが簡略化されます(たとえば、エクスポート先の解像度が
300 dpi
ならば、1/600 インチ
よりも近い頂点は削除されます)。これにより、出力ファイルのサイズと複雑さを減少させることができます(非常に大きなファイルは他のアプリケーションでの読み込みに失敗する可能性があります)。
注釈
GeoPDFのエクスポートがサポートされており、いくつかのGeoPDF 特有のオプションが利用可能です:
形式 (GeoPDFの形式-GeoPDFにはいくつかのバリエーションがあります)
複数の地図テーマを含める (含める地図テーマを指定します)
ベクタ地物情報を含める (レイヤを選択し、レイヤををPDFの論理グループにグループ化します)
注釈
印刷レイアウトを地理参照をサポートする形式(例: PDF
や TIFF
)へエクスポートする場合には、デフォルトで地理参照されたアウトプットを生成します。
21.3.5. 地図帳の作成
地図帳の機能を使うと、自動で地図帳を作成することができます。地図帳はテーブルやベクタレイヤ( カバレッジレイヤ )の地物を利用して、テーブル/レイヤの地物( 地図帳地物 )毎の出力を作成します。最も一般的な使い方は、現在の地図帳地物に地図アイテムをズームすることです。さらに、以下のような使い方もあります:
地図帳地物と別のレイヤについて、地図帳地物と同じ属性値を持つ地物や、地図帳地物のジオメトリ内部にある地物のみを表示した地図アイテムの作成
地図帳地物のイテレーションに応じてテキストが置き換えられるラベルや、HTMLアイテムの作成
現在の地図帳地物に関連した 親または子 地物の属性を表示したテーブルアイテムの作成
各地図帳地物について、エクスポート設定に応じてすべてのページとアイテムの出力が実行されます。
Tip
変数を使用したより柔軟な対応
QGISには、地図帳に関連したものも含め多数の関数や 変数 が用意されています。これにより、地図帳の状態に応じて、レイアウトアイテムだけでなくレイヤのシンボロジも操作することができます。これらの機能を組み合わせることにより、より柔軟な対応が可能となり、高度な地図を簡単に作成することができます。
地図帳の作成を有効にし、地図帳パラメータにアクセスするには、 地図帳 パネルを開いてください。このパネルには以下の設定があります( 図 21.66 参照):
設定
オプションの カバレッジレイヤを隠す にチェックを入れると、地図帳の作成中はカバレッジレイヤを表示しません(その他のレイヤは表示されます)。
オプションの ページ名称 コンボボックスは、レイヤ地物ページの名前を指定します。カバレッジレイヤのフィールドを選択するか、 式 を設定できます。このオプションが空欄の場合には、QGISはレイヤに適用されたフィルタやソートに応じた内部IDを使用します。
オプションの フィルタ テキストエリアでは、カバレッジレイヤから地物をフィルタリングするための式を指定することができます。式が空欄の場合には、評価値が
True
となる地物のみが使用されます。オプションの 並べ方 は、カバレッジレイヤのフィールドまたは式を使用して、カバレッジレイヤの地物(と出力結果)を並べ替えます。ソートの順序(昇順または降順)は、上向きまたは下向き矢印が表示された切り替え式の 並べ順 ボタンによって設定できます。
出力 - ここでは、地図帳の出力に関する設定ができます:
21.3.5.1. 地図帳による制御
地図帳の最も一般的な使い方は、カバレッジレイヤのイテレーションに従って、現在の地図帳地物に地図アイテムをズームすることです。この動作は、地図アイテムの 地図帳による制御 グループのプロパティで設定を行います。地図アイテムに適用可能なさまざまな設定については、 地図帳による制御 を参照してください。
21.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
21.3.5.4. 地図帳のプレビューと作成
地図帳の設定が完了し、レイアウトアイテム(地図、テーブル、画像など)と地図帳のリンクができたら、 地図帳のプレビュー アイコンをクリックすることで、全てのページのプレビューを作成することができます。その後、矢印ボタンを使って全ての地物を順番に確認することができます。
を選択するか、または特定の地物を選択してプレビューするためにコンボボックスを使用することもできます。コンボボックスは、地図帳の ページ名称 オプションで設定された式に基づいた地図帳地物の名前を表示します。
シンプルな印刷レイアウトと同様、地図帳の出力も様々な方法で生成できます(詳細については 出力の作成 を参照してください。ただし、ツールは メニューのものを使う代わりに メニューまたはツールバーのものを使います)。
これにより、 可能であれば一つのファイルに出力 にチェックを入れている場合には、ファイル名を指定するように尋ねられます。
を使用すれば、直接に地図帳を印刷できます。また、 を使用すれば、PDFを作成することもできます。これを使うと、生成されるPDFファイル全てを保存するディレクトリを尋ねられます。ただし、地図帳 パネルで設定した画像ファイル形式またはSVG形式でエクスポートされます。
や ツールの場合にも、フォルダを選択するよう尋ねられます。それぞれの地図帳地物の印刷レイアウトの全ページが、注釈
複数ページの出力の場合には、印刷レイアウトの場合と同様に、地図帳は 一般設定 で説明される参照マップを含むページのみがワールドファイルを(各地図帳地物の出力に対して)得られます。
Tip
特定の地図帳地物を印刷
地図帳地物の1つだけに対するレイアウトを印刷またはエクスポートしたい場合には、プレビューを開始し、ドロップダウンリストからエクスポートしたい地物を選択して、
(またはサポートしているファイル形式への )をクリックするだけです。21.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>
地図帳の作成時には、親地物を含むカバレッジレイヤのイテレーションが行われます。各ページでは、親地物の識別子に応じて、関連する子地物の箇条書きリストが表示されます。