4.2. သင်ခန်းစာ- တသမတ်တည်းမဟုတ်ပဲပြောင်းလဲနိုင်သော ပုံထုတ်အပြင်အဆင်တစ်ခုဖန်တီးခြင်း (Lesson: Creating a Dynamic Print Layout)

ယခုဆိုလျှင် အခြေခံမြေပုံတစ်ခု ဖန်တီးသည့်နည်းလမ်းကိုသင်ကြားပြီးဖြစ်ပါသည်၊ နောက်တစ်ဆင့်အနေဖြင့် မြေပုံ နယ်ပယ်အကျယ်အဝန်း (extent) နှင့် စာမျက်နှာ property များပေါ်မူတည်ပြီး ပြောင်းလဲနိုင်သော မြေပုံ layout တစ်ခုကို ဖန်တီးမည်ဖြစ်သည်၊ ဥပမာ- စာမျက်နှာ၏အရွယ်အစားကို ပြောင်းလဲလိုက်သောအခါ။ ထို့အပြင် ဖန်တီးသည့်ရက်စွဲသည်လည်း အလိုအလျှောက် ပြောင်းလဲသွားမည်ဖြစ်သည်။

4.2.1. ★★☆ လိုက်လုပ်ကြည့်ပါ- တသမတ်တည်းမဟုတ်ပဲပြောင်းလဲနိုင်သော မြေပုံမြင်ကွင်းများ ဖန်တီးခြင်း (Follow Along: Creating the dynamic map canvas)

  1. ESRI Shapefile format ဖြင့် dataset များဖြစ်သော protected_areas.shpplaces.shprivers.shp နှင့် water.shp တို့ကို မြေပုံမြင်ကွင်း ထဲသို့ထည့်သွင်းပြီး ၎င်းတို့၏ဂုဏ်သတ္တိများကို ကြိုက်နှစ်သက်သလိုပြင်ဆင်ပါ။

  2. After everything is rendered and symbolized to your liking, click the newLayout New Print Layout icon in the Project toolbar or choose Project ► newLayout New Print Layout. You will be prompted to choose a title for the new print layout.

  3. အားလုံးကို စိတ်ကြိုက် သင်္ကေတဆိုင်ရာများထည့်သွင်းကာ ပုံဖော်ပြသပြီးပါက Project toolbar ထဲရှိ newLayout New Print Layout icon ကိုနှိပ်ပါ၊ သို့မဟုတ် Project ► newLayout New Print Layout ကိုရွေးချယ်ပါ။ Print layout အသစ်တစ်ခု ခေါင်းစဉ်တစ်ခု ရွေးချယ်ခိုင်းပါလိမ့်မည်။

  4. Swellendam ၊ South Africa အနီးနားရှိ ဒေသ၏ မြေပုံတစ်ခုနှင့် ခေါင်းစဉ်တစ်ခုပါဝင်သော မြေပုံ layout တစ်ခုကိုဖန်တီးလိုခြင်းဖြစ်ပါသည်။ Layout သည် ဘေးအနားသပ် (margin) 7.5 မီလီမီတာရှိပြီး ခေါင်းစဉ်သည် 36 မီလီမီတာ အမြင့် ရှိသင့်ပါသည်။

  5. Canvas ပေါ်တွင် main map ဟုခေါ်သော မြေပုံ item တစ်ခုကို ဖန်တီးပြီး Layout panel သို့သွားပါ။ Variables section သို့ရောက်အောင်သွားပြီး Layout အပိုင်းကို ရှာပါ။ တသမတ်တည်းမဟုတ်ပဲပြောင်းလဲနိုင်သော (dynamic) print layout တွင် အသုံးပြုနိုင်သော variable များအချို့ကို တွေ့ရပါမည်။ Layout panel သို့သွားပြီး Variables section သို့ သွားပါ။ ပထမဆုံး variable သည် margin ကိုသတ်မှတ်ပါလိမ့်မည်။ symbologyAdd ခလုတ်ကိုနှိပ်ပြီး name တွင် sw_layout_margin ဟုရိုက်ထည့်ပါ။ Value တွင် 7.5 ဟုသတ်မှတ်ပါ။ symbologyAdd ခလုတ်ကို ထပ်နှိပ်ပြီး name တွင် sw_layout_height_header ဟုရိုက်ထည့်ပါ။ Value တွင် 36 ဟုသတ်မှတ်ပါ။

  6. ယခုဆိုလျှင် Variable များကိုအသုံးပြုပြီး မြေပုံ canvas ၏ တည်နေရာနှင့်အရွယ်အစားကို အလိုအလျှောက်ဖန်တီးရန်အသင့်ဖြစ်နေပါသည်။ မြေပုံ item ကို select လုပ်ထားပြီး Item Properties panel သို့သွားပြီး Position and Size section ကိုဖွင့်ပါ။ X အတွက် dataDefineExpressionOn Data defined override ကိုနှိပ်ပြီး Variables entry မှ @sw_layout_margin ကိုရွေးချယ်ပါ။

  7. Y အတွက် dataDefineExpressionOn Data defined override ကိုနှိပ်ပြီး Edit… ကိုရွေးချယ်ပြီး formula ထဲတွင် အောက်ပါကို ရိုက်ထည့်ပါ-:

    to_real(@sw_layout_margin) + to_real(@sw_layout_height_header)
    
  8. Width နှင့် Height အတွက် variable များကိုအသုံးပြုပြီး မြေပုံ item ၏အရွယ်အစားကို ဖန်တီးနိုင်ပါသည်။ Width အတွက် dataDefineExpressionOn Data defined override ကိုနှိပ်ပြီး Edit … ကိုထပ်မံရွေးချယ်ပါ။ Formula ထဲတွင် အောက်ပါကို ဖြည့်ပါ-:

    @layout_pagewidth - @sw_layout_margin * 2
    

    Height အတွက် dataDefineExpressionOn Data defined override ကိုနှိပ်ပြီး Edit … ကိုရွေးချယ်ပါ။ Formulat ထဲတွင် အောက်ပါကို ဖြည့်ပါ-:

    @layout_pageheight -  @sw_layout_height_header -  @sw_layout_margin * 2
    
  9. အဓိက မြေပုံ canvas extent ၏ ကိုဩဒိနိတ်များပါဝင်သော grid (မြေပုံတွင်အကွက်ချထားသော လေးထောင့်ကွက်) တစ်ခုကိုလည်း ဖန်တီးပါမည်။ Item Properties သို့ထပ်မံသွားပြီး Grids section ကိုရွေးချယ်ပါ။ symbologyAdd ခလုတ်ကို နှိပ်ပြီး grid တစ်ခုကို ထည့်သွင်းပါ။ Modify grid … ပေါ်တွင် နှိပ်ပြီး XY နှင့် Offset အတွက် Interval ကို QGIS အဓိက canvas ထဲတွင် ရွေးထားသော မြေပုံစကေးအရ သတ်မှတ်ပါ။ Grid type ဖြစ်သော Cross သည် ယခုလုပ်မည့် သင်ခန်းစာအတွက် အလွန်သင့်တော်ပါသည်။

4.2.2. ★★☆ လိုက်လုပ်ကြည့်ပါ- တသမတ်တည်းမဟုတ်ပဲပြောင်းလဲနိုင်သော ခေါင်းစီး ကိုဖန်တီးခြင်း (Follow Along: Creating the dynamic header)

  1. addBasicShape Add Shape ခလုတ်ကိုအသုံးပြုပြီး ခေါင်းစီး ပါဝင်မည့် ထောင့်မှန်စတုဂံတစ်ခုကို ထည့်သွင်းပါ။ Items panel ထဲတွင် header အမည်ကိုရိုက်ထည့်ပါ။

  2. Item Properties သို့သွားပြီး Position and Size section ကိုဖွင့်ပါ။ dataDefineExpressionOn Data defined override ကိုအသုံးပြုပြီး X အတွက်သာမက Y အတွက်ပါ sw_layout_margin variable ကိုရွေးချယ်ပါ။ Width ကို အောက်ပါ expression ဖြင့် သတ်မှတ်ပါလိမ့်မည်-:

    @layout_pagewidth - @sw_layout_margin * 2
    

    Height ကို sw_layout_height_header variable ဖြင့်သတ်မှတ်ပါလိမ့်မည်။

  3. ခေါင်းစီးကို မတူညီသော အပိုင်းများအဖြစ်သို့ ခွဲခြားရန် ရေပြင်ညီ မျဉ်းတစ်ခုနှင့် ဒေါင်လိုက်မျဉ်း နှစ်ခုကို addNodesShape Add Node Item ကိုအသုံးပြု၍ ထည့်သွင်းပါမည်။ ရေပြင်ညီမျဉ်းတစ်ခုနှင့် ဒေါင်လိုက်မျဉ်းနှစ်ခုကို ဖန်တီးပြီး ၎င်းတို့ကို Horizontal lineVertical line 1 Vertical line 2 ဟုအမည်ပေးပါ။

    1. ရေပြင်ညီမျဉ်းအတွက်-

      1. X ကို sw_layout_margin variable သတ်မှတ်ပါ

      2. Y အတွက် expression ကို အောက်ပါအတိုင်းသတ်မှတ်ပါ-:

        @sw_layout_margin + 8
        
      3. Width အတွက် expression ကို အောက်ပါအတိုင်းသတ်မှတ်ပါ-:

        @layout_pagewidth -  @sw_layout_margin * 3 - 53.5
        
    2. ပထမဒေါင်လိုက်မျဉ်းအတွက်-

      1. X အတွက် expression ကို အောက်ပါအတိုင်းသတ်မှတ်ပါ-:

        @layout_pagewidth - @sw_layout_margin * 2 - 53.5
        
      2. Y ကို sw_layout_margin variable သတ်မှတ်ပါ

      3. အမြင့် (Height) သည် ဖန်တီးထားသော ခေါင်းစီးနှင့်အတူတူဖြစ်ရပါမည်၊ ထို့ကြောင့် Height ကို sw_layout_height_header variable သတ်မှတ်ပါ။

    3. ဒုတိယ ဒေါင်လိုက်မျဉ်းကို ပထမဒေါင်လိုက်မျဉ်း၏ ဘယ်ဘက်တွင် နေရာချထားပါသည်။

      1. X အတွက် expression ကို အောက်ပါအတိုင်းသတ်မှတ်ပါ-:

        @layout_pagewidth - @sw_layout_margin * 2 - 83.5
        
      2. Y ကို sw_layout_margin variable သတ်မှတ်ပါ

      3. အမြင့် သည် အခြား ဒေါင်လိုက်မျဉ်း၏အမြင့်နှင့်အတူတူဖြစ်ရပါမည်၊ ထို့ကြောင့် Height ကို sw_layout_height_header variable သတ်မှတ်ပါ။

    အောက်ပါပုံသည် ကျွန်ုပ်တို့ဖန်တီးထားသော dynamic layout ၏ ဖွဲ့စည်းပုံကို ပြသပါသည်။ မျဉ်းများဖြင့် ဖန်တီးထားသော ဧရိယာထဲတွင် element အချို့ ဖြည့်သွင်းပါမည်။

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

4.2.3. ★★☆ လိုက်လုပ်ကြည့်ပါ- Dynamic header အတွက် label များဖန်တီးခြင်း (Follow Along: Creating labels for the dynamic header)

  1. QGIS project ၏ ခေါင်းစဉ်ကို အလိုအလျှောက်ထည့်သွင်းနိုင်ပါသည်။ ခေါင်းစဉ်ကို Project Properties ထဲတွင် သတ်မှတ်ထားပါသည်။ label Add Label ခလုတ်ဖြင့် label တစ်ခုထည့်သွင်းပြီး project title (variable) အမည်ကို ထည့်ပါ။ Items Properties Panel ၏ Main Properties ထဲတွင် အောက်ပါ expression ကို ရိုက်ထည့်ပါ-:

    [%@project_title%]
    

    Label ၏တည်နေရာကို သတ်မှတ်ပါ။

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 3
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 0.25
      
    3. Width အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @layout_pagewidth - @sw_layout_margin *2 - 90
      
    4. Height အတွက် 11.25 ကိုရိုက်ထည့်ပါ။

    Appearance အောက်တွင် စာလုံးဖောင့် အရွယ်အစား (Font size) ကို 16 pt သတ်မှတ်ပါ။

  2. ဒုတိယ label တွင် မြေပုံအတွက် ဖော်ပြချက် (description) တစ်ခုပါဝင်ပါလိမ့်မည်။ Label တစ်ခုထပ်မံထည့်သွင်းပြီး map description ဟုအမည်ပေးပါ။ Main Properties ထဲတွင် map description ဟူသော စာလုံးကို ရိုက်ထည့်ပါ။ Main Properties ထဲတွင် အောက်ပါကိုလည်း ထည့်သွင်းပါမည်-:

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

    ဤတွင် Date and Time function နှစ်ခုကို အသုံးပြုထားပါသည် (now နှင့် format_date)

    Label ၏တည်နေရာကို သတ်မှတ်ပါ။

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 3
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 11.5
      
  3. တတိယ label တွင် သင့်အဖွဲ့အစည်းအကြောင်း အချက်အလက်များ ပါဝင်ပါလိမ့်မည်။ ဦးစွာ Item PropertiesVariables menu ထဲတွင် variable အချို့ကို ဖန်တီးပါမည်။ Layout menu သို့သွားပြီး symbologyAdd ခလုတ်ကို တစ်ကြိမ်စီနှိပ်ပြီး o_departmento_nameo_adress နှင့် o_postcode ဟူသော အမည်များကို ရိုက်ထည့်ပါ။ ဒုတိယ row ထဲတွင် သင့်အဖွဲ့အစည်းအကြောင်း အချက်အလက်ကို ထည့်သွင်းပါ။ ထို variable များကို Main Properties section ထဲတွင် အသုံးပြုပါမည်။

    Main Properties ထဲတွင် အောက်ပါတို့ကို ရိုက်ထည့်ပါ-:

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

    Label ၏ တည်နေရာကို သတ်မှတ်ပါ။

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 15.5
      
    3. Width အတွက် 49.00 ကိုအသုံးပြုပါ

    4. Height အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

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

4.2.4. ★★☆ လိုက်လုပ်ကြည့်ပါ- Dynamic header ထဲသို့ ဓာတ်ပုံများ ထည့်သွင်းခြင်း (Follow Along: Adding pictures to the dynamic header)

  1. addImage Add Picture ခလုတ်ကိုအသုံးပြုပြီး organisation information ဆိုသည့် label ၏အပေါ်တွင် ဓာတ်ပုံတစ်ခု ထည့်သွင်းပါ။ organisation logo ဆိုသည့်အမည်ပေးပြီး logo ၏ တည်နေရာနှင့်အရွယ်အစားကို သတ်မှတ်ပါ-

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 3.5
      
    3. Width အတွက် 39.292 ကိုအသုံးပြုပါ

    4. Height အတွက် 9.583 ကိုအသုံးပြုပါ

    သင့်အဖွဲ့အစည်း၏ logo ကိုထည့်သွင်းရန် အဆိုပါ logo ကို home directory အောက်တွင် သိမ်းဆည်းထားရမည်ဖြစ်ပြီး ထိုဖိုင်လမ်းကြောင်းကို Main Properties ► Image Source အောက်တွင် ထည့်သွင်းရမည်ဖြစ်သည်။

  2. Layout တွင် မြောက်အရပ်ပြမြား (north arrow) လိုအပ်နေပါသေးသည်။ northArrow Add North Arrow ကိုအသုံးပြုပြီး ထည့်သွင်းပါမည်။ Default north arrow ကို အသုံးပြုပါမည်။ တည်နေရာသတ်မှတ်ပေးပါမည်-

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 9
      
    3. Width အတွက် 21.027 ကိုအသုံးပြုပါ

    4. Height အတွက် 21.157 ကိုအသုံးပြုပါ

4.2.5. ★★☆ လိုက်လုပ်ကြည့်ပါ- Dynamic header ၏ စကေးဘား ဖန်တီးခြင်း (Follow Along: Creating the scalebar of the dynamic header)

  1. scaleBar Add Scale Bar ကိုနှိပ်ပြီး Header ထဲတွင် စကေးဘား တစ်ခုထည့်သွင်းကာ ၎င်းကို north arrow ၏အထက် ထောင့်မှန်စတုဂံထဲတွင် နေရာချထားပါ။ Main Properties အောက်ရှိ Map ထဲတွင် main map(Map 1) ကိုရွေးချယ်ပါ။ ဆိုလိုသည်မှာ QGIS main canvas ထဲတွင် သင်ရွေးချယ်လိုက်သော extent အတိုင်း စကေးသည် အလိုအလျှောက် ပြောင်းလဲသွားမည်ဖြစ်သည်။ Style ကို Numeric ရွေးပါ။ ဆိုလိုသည်မှာ စကေးဘားတစ်ခု မပါပဲ ရိုးရိုးစကေး တစ်ခုကို ထည့်သွင်းမည်ဖြစ်သည်။ စကေး၏ တည်နေရာနှင့် အရွယ်အစားကို သတ်မှတ်ရန် လိုအပ်ပါသေးသည်။

    1. X အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Y အတွက် အောက်ပါ expression ကိုအသုံးပြုပါ-:

      @sw_layout_margin + 1
      
    3. Width အတွက် 25 ကိုအသုံးပြုပါ

    4. Height အတွက် 8 ကိုအသုံးပြုပါ

    5. Reference point ကို အလယ်ဗဟို (center) တွင် နေရာချထားပါ။

သင့်အနေဖြင့် ပထမဆုံး dynamic မြေပုံ layout ကို ဖန်တီးပြီးဖြစ်ပါသည်။ Layout ကို ကြည့်ကြည့်ပြီး လိုချင်သည့်ပုံစံအတိုင်း ဖြစ်/မဖြစ် စစ်ဆေးကြည့်ပါ။ page properties ကို ပြောင်းလဲလိုက်တိုင်း dynamic မြေပုံ layout သည် အလိုအလျှောက် လိုက်လံပြောင်းလဲမည်ဖြစ်သည်။ ဥပမာ- စာမျက်နှာအရွယ်အစားကို DIN A4 မှ DIN A3 သို့ပြောင်းလဲလျှင် refresh Refresh view ခလုတ်ကို နှိပ်လိုက်ပါက စာမျက်နှာဒီဇိုင်း ပြောင်းလဲသွားပါမည်ဖြစ်သည်။

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

4.2.6. နောက်ထပ် ဘာအကြောင်းအရာလဲ? (What’s Next?)

နောက်လာမည့် စာမျက်နှာတွင် သင့်အနေဖြင့် assignment (အိမ်စာ) တစ်ခုပြီးအောင် လုပ်ရပါမည်။ ထိုသို့လုပ်ခြင်းဖြင့် သင့်လေ့လာခဲ့ပြီးသမျှ နည်းလမ်းများကို လေ့ကျင့်နိုင်မည်ဖြစ်သည်။