4.2. Lesson: ダイナミック印刷レイアウトを作成する

基本的な地図レイアウトの作成方法を学んだので、さらに一歩進んで、地図の範囲やページのプロパティ(例えば、ページのサイズを変更したとき)に動的に適応する地図レイアウトを作成しましょう。また、作成日付も動的に適応します。

4.2.1. moderate Follow Along: 動的地図キャンバスの作成

  1. ESRI Shapefile形式のデータセット protected_areas.shpplaces.shprivers.shp および water.shp を地図キャンバスにロードし、そのプロパティを自分の良いように修正します。

  2. すべてのレンダリングとシンボル化が完了したら、ツールバーの newLayout 新規印刷レイアウト アイコンをクリックするか、 ファイル►新規印刷レイアウト を選択します。新しいプリントレイアウトのタイトルを選択するプロンプトが表示されます。

  3. ヘッダと南アフリカのスウェレンダム近くの地域の地図で構成される地図レイアウトを作成します。レイアウトのマージンは7.5 mmで、ヘッダの高さは36mmでなければなりません。

  4. キャンバス上に main map という地図アイテムを作成し、 レイアウト パネルに移動します。 変数 セクションまでスクロールして、 レイアウト の部分を探します。ここでは、動的印刷レイアウト全体で使用することができるいくつかの変数を設定します。 レイアウト パネルに移動して、 変数 セクションにスクロールダウンしてください。最初の変数がマージンを定義します。 symbologyAdd ボタンを押し、 sw_layout_margin という名前を入力します。値を 7.5 に設定します。もう一度 symbologyAdd ボタンを押して、 sw_layout_height_header という名前を入力します。値を 36 に設定します。

  5. これで、地図キャンバスの位置とサイズを変数によって自動的に作成する準備が整いました。地図アイテムが選択されていることを確認して、 アイテムプロパティ パネルに移動し、スクロールダウンして 位置とサイズ セクションを開いてください。 XdataDefineExpressionOn データによって定義された上書き をクリックし、 変数 の項目から @sw_layout_margin を選択します。

  6. YdataDefineExpressionOn データによって定義された上書き をクリックし、 編集... を選択して数式を入力します:

    to_real(@sw_layout_margin) + to_real(@sw_layout_height_header)
    
  7. 地図アイテムのサイズは、 高さ の変数を使用して作成することができます。 dataDefineExpressionOn データによって定義された上書き をクリックし、 編集... を再度選択します。数式を記入します:

    @layout_pagewidth - @sw_layout_margin * 2
    

    高さdataDefineExpressionOn データによって定義された上書き をクリックし、 編集... を選択します。ここで数式を入力します:

    @layout_pageheight -  @sw_layout_height_header -  @sw_layout_margin * 2
    
  8. また、メインキャンバスの地図範囲の座標を含むグリッドを作成します。再び アイテムプロパティ に移動して、 グリッド セクションを選択します。 symbologyAdd ボタンをクリックして、グリッドを挿入します。 グリッドの修正... をクリックして、QGISメインキャンバスで選択した地図の縮尺に従って、 X, Yオフセット間隔 を設定します。 グリッドタイプ クロス は、私たちの目的にとてもよく合っています。

4.2.2. moderate Follow Along: 動的ヘッダを作成する

  1. addBasicShape 図形追加 ボタンでヘッダを含む長方形を挿入します。 アイテム パネルに header という名前を入力します。

  2. 再び アイテムプロパティ に移動し、 位置とサイズ セクションを開きます。dataDefineExpressionOn データ定義によって定義された上書き を使用して、 XYsw_layout_margin 変数を選択します。 は式で定義されるものとします:

    @layout_pagewidth - @sw_layout_margin * 2
    

    そして 高さsw_layout_height_header 変数で指定します。

  3. ここでは、addNodesShape ノートアイテムを追加 を使って、ヘッダーを分割するための1本の横線と2本の縦線を挿入します。1本の横線と2本の縦線を作成し、それぞれを Horizontal line, Vertical line 1, Vertical line 2 という名前にします。

    1. 横線:

      1. 変数 sw_layout_marginX にします

      2. Y の式に次を設定します:

        @sw_layout_margin + 8
        
      3. の式に次を設定します:

        @layout_pagewidth -  @sw_layout_margin * 3 - 53.5
        
    2. 最初の縦線:

      1. X の式に次を設定します:

        @layout_pagewidth - @sw_layout_margin * 2 - 53.5
        
      2. Y に変数 sw_layout_margin を設定します

      3. 高さは作ったヘッダと同じでなければならないので、 高さ には変数 sw_layout_height_header を設定します。

    3. 2本目の縦線は、1本目の縦線の左側に配置されます。

      1. X の式に次を設定します:

        @layout_pagewidth - @sw_layout_margin * 2 - 83.5
        
      2. Y に変数 sw_layout_margin を設定します

      3. 高さはもう一本の縦線と同じでなければならないので、変数 sw_layout_height_header高さ に設定します。

    以下の図は、動的レイアウトの構造を示しています。線によって作成された領域をいくつかの要素で埋めます。

../../../_images/dynamic_layout_structure.png

4.2.3. moderate Follow Along: 動的ヘッダのラベルを作成する

  1. あなたのQGISプロジェクトのタイトルを自動的に含めることができます。タイトルは プロジェクトプロパティ で設定します。 label ラベルを追加 ボタンでラベルを挿入し、 project title (variable) という名前を入力します。 アイテムプロパティ パネルの メインプロパティ に式 を入力します:

    [%@project_title%]
    

    ラベルの位置を設定します。

    1. X には次の式を使います:

      @sw_layout_margin + 3
      
    2. Y には次の式を使います:

      @sw_layout_margin + 0.25
      
    3. には次の式を使います:

      @layout_pagewidth - @sw_layout_margin *2 - 90
      
    4. 高さ には 11.25 を入力します

    外観 にあるフォントサイズに16 ptを設定します。

  2. 二つ目のラベルには、作成した地図の説明を入れます。ここでもラベルを挿入し、名前を map description とします。 メインプロパティmap description というテキストを入力します。また、 メインプロパティ には、次のように入力します:

    printed on: [%format_date(now(),'dd.MM.yyyy')%]
    

    ここでは、2つの 日付と時刻 関数 (nowformat_date) を使用しました。

    ラベルの位置を設定します。

    1. X には次の式を使います:

      @sw_layout_margin + 3
      
    2. Y には次の式を使います:

      @sw_layout_margin + 11.5
      
  3. 3つ目のラベルには、あなたの組織に関する情報を記載します。まず、 アイテムプロパティ変数 メニューで、いくつかの変数を作成します。guilabel:レイアウト メニューから symbologyAdd ボタンをクリックして、 o_department, o_name, o_adress, o_postcode という名前を入力してください。2列目には、あなたの組織に関する情報を入力してください。これらの変数は メインプロパティ セクションで使用します。

    メインプロパティ で次を入力します:

    [% @o_name %]
    [% @o_department %]
    [% @o_adress %]
    [% @o_postcode %]
    

    ラベルの位置を設定します。

    1. X には次の式を使います:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. Y には次の式を使います:

      @sw_layout_margin + 15.5
      
    3. 49.00 にします

    4. 高さ には次の式を使います:

      @sw_layout_height_header - 15.5
      
../../../_images/dynamic_layout_organisation.png

4.2.4. moderate Follow Along: 動的ヘッダに画像を追加する

  1. addImage 画像を追加 ボタンを使って、ラベル organisation information の上に画像を配置することができます。 organisation logo という名前を入力した後、ロゴの位置とサイズを決定します:

    1. X には次の式を使います:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. Y には次の式を使います:

      @sw_layout_margin + 3.5
      
    3. 39.292 にします

    4. 高さ9.583 にします

    あなたの組織のロゴを入れるには、ロゴをホームディレクトリに保存し、 メインプロパティ► Image Source にパスを入力する必要があります。

  2. 私たちのレイアウトにはまだ方位記号が必要です。これも northArrow 方位記号を追加 を使って挿入します。ここでは既定の方位記号を使用します。位置を定義します:

    1. X には次の式を使います:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Y には次の式を使います:

      @sw_layout_margin + 9
      
    3. 21.027 にします

    4. 高さ21.157 にします

4.2.5. moderate Follow Along: 動的ヘッダのスケールバーを作成する

  1. ヘッダーにスケールバーを挿入するには、 scaleBar スケールバーを追加 をクリックして、方位記号の上の矩形に配置します。 メインプロパティ地図Main Map(Map 1) を選択します。これは、QGISのメインキャンバスで選択した範囲に応じて縮尺が自動的に変更されることを意味します。 スタイル数値 を選択します。これは、スケールバーのないシンプルなスケールを挿入することを意味します。このスケールにはまだ位置とサイズが必要です。

    1. X には次の式を使います:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Y には次の式を使います:

      @sw_layout_margin + 1
      
    3. 25 にします

    4. 高さ8 にします

    5. 基準点 を中央に置きます。

おめでとうございます。あなたは最初の動的な地図レイアウトを作成しました。レイアウトを見て、すべてが思い通りに見えるかどうかチェックしてみてください。動的な地図レイアウトは、 ページプロパティ を変更すると自動的に反応します。例えば、ページサイズをDIN A4からDIN A3に変更した場合、 refresh ビューを更新 ボタンをクリックすると、ページデザインが適応されます。

../../../_images/dynamic_layout.png

4.2.6. What's Next?

次のページでは、完成すべき課題が与えられます。これによって、これまでに学んだテクニックを実践できます。