4.2. الدرس: إنشاء تخطيط طباعة ديناميكي

الآن بعد أن تعلّمت إنشاء تخطيط خريطة أساسي، سنتقدم خطوة إضافية وننشئ تخطيط خريطة يتكيّف ديناميكيًا مع امتداد خريطتنا ومع خصائص الصفحة، مثلًا عند تغيير حجم الصفحة. كما سيتكيّف تاريخ الإنشاء ديناميكيًا.

4.2.1. ★★☆ تابع معنا: إنشاء لوحة الخريطة الديناميكية

  1. حمّل مجموعات البيانات بصيغة ESRI Shapefile وهي protected_areas.shp و places.shp و rivers.shp و water.shp في لوحة الخريطة، وعدّل خصائصها بما يناسبك.

  2. بعد عرض كل شيء وترميزه كما تحب، انقر على الأيقونة newLayout New Print Layout في شريط الأدوات Project أو اختر Project ► newLayout New Print Layout. سيُطلب منك اختيار عنوان لتخطيط الطباعة الجديد.

  3. نريد إنشاء تخطيط خريطة يتكون من ترويسة وخريطة للمنطقة القريبة من Swellendam في جنوب أفريقيا. يجب أن يكون للتخطيط هامش بمقدار 7.5 mm وأن يكون ارتفاع الترويسة 36mm.

  4. أنشئ عنصر خريطة باسم main map على اللوحة وانتقل إلى اللوحة Layout. مرّر إلى أسفل حتى القسم Variables وابحث عن الجزء Layout. هنا نعيّن بعض المتغيرات التي يمكنك استخدامها في كل أنحاء تخطيط الطباعة الديناميكي. انتقل إلى اللوحة Layout ومرّر إلى أسفل حتى القسم Variables. سيحدد المتغير الأول الهامش. اضغط على الزر symbologyAdd واكتب الاسم sw_layout_margin. اضبط القيمة على 7.5. اضغط على الزر symbologyAdd مرة أخرى واكتب الاسم sw_layout_height_header. اضبط القيمة على 36.

  5. أنت الآن جاهز لإنشاء موضع لوحة الخريطة وحجمها تلقائيًا بواسطة المتغيرات. تأكد من أن عنصر الخريطة محدد، وانتقل إلى اللوحة Item Properties، ومرّر إلى أسفل وافتح القسم Position and Size. انقر على dataDefineExpressionOn Data defined override الخاص بـ X واختر @sw_layout_margin من المدخل Variables.

  6. انقر على dataDefineExpressionOn Data defined override الخاص بـ Y، واختر Edit... واكتب الصيغة:

    to_real(@sw_layout_margin) + to_real(@sw_layout_height_header)
    
  7. يمكنك إنشاء حجم عنصر الخريطة باستخدام المتغيرات لكل من Width و Height. انقر على dataDefineExpressionOn Data defined override الخاص بـ Width واختر Edit ... مرة أخرى. أدخل الصيغة:

    @layout_pagewidth - @sw_layout_margin * 2
    

    انقر على dataDefineExpressionOn Data defined override الخاص بـ Height واختر Edit .... وهنا أدخل الصيغة:

    @layout_pageheight -  @sw_layout_height_header -  @sw_layout_margin * 2
    
  8. سننشئ أيضًا شبكة تحتوي على إحداثيات امتداد لوحة الخريطة الرئيسية. انتقل إلى Item Properties مرة أخرى واختر القسم Grids. أدرج شبكة بالنقر على الزر symbologyAdd. انقر على Modify grid ... واضبط Interval لكل من X و Y و Offset وفقًا لمقياس الرسم الذي اخترته في لوحة الخريطة الرئيسية في QGIS. ويُعد Grid type من النوع Cross مناسبًا جدًا لأغراضنا.

4.2.2. ★★☆ تابع معنا: إنشاء الترويسة الديناميكية

  1. أدرج مستطيلًا سيحتوي على الترويسة باستخدام الزر addBasicShape Add Shape. في اللوحة Items أدخل الاسم header.

  2. انتقل مرة أخرى إلى Item Properties وافتح القسم Position and Size. باستخدام dataDefineExpressionOn Data defined override، اختر المتغير sw_layout_margin لكل من X و Y. ويُحدَّد Width بالتعبير:

    @layout_pagewidth - @sw_layout_margin * 2
    

    ويُحدَّد Height بالمتغير sw_layout_height_header.

  3. سندرج خطًا أفقيًا وخطين رأسيين لتقسيم الترويسة إلى أقسام مختلفة باستخدام addNodesShape Add Node Item. أنشئ خطًا أفقيًا وخطين رأسيين وسمّها Horizontal line و Vertical line 1 Vertical line 2.

    1. بالنسبة للخط الأفقي:

      1. اضبط X على المتغير sw_layout_margin

      2. اضبط التعبير الخاص بـ Y على:

        @sw_layout_margin + 8
        
      3. اضبط التعبير الخاص بـ Width على:

        @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. يجب أن يكون الارتفاع مساويًا لارتفاع الترويسة التي أنشأناها، لذا اضبط Height على المتغير sw_layout_height_header.

    3. يوضع الخط الرأسي الثاني على يسار الخط الأول.

      1. اضبط التعبير الخاص بـ X على:

        @layout_pagewidth - @sw_layout_margin * 2 - 83.5
        
      2. اضبط Y على المتغير sw_layout_margin

      3. يجب أن يكون الارتفاع مساويًا لارتفاع الخط الرأسي الآخر، لذا اضبط Height على المتغير sw_layout_height_header.

    يوضح الشكل أدناه بنية تخطيطنا الديناميكي. سنملأ المناطق التي أنشأتها الخطوط ببعض العناصر.

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

4.2.3. ★★☆ تابع معنا: إنشاء التسميات للترويسة الديناميكية

  1. يمكن تضمين عنوان مشروع QGIS تلقائيًا. يُعيَّن العنوان في Project Properties. أدرج تسمية باستخدام الزر label Add Label وأدخل الاسم project title (variable). وفي Main Properties ضمن اللوحة Items Properties أدخل التعبير:

    [%@project_title%]
    

    اضبط موضع التسمية.

    1. بالنسبة لـ X، استخدم التعبير:

      @sw_layout_margin + 3
      
    2. بالنسبة لـ Y، استخدم التعبير:

      @sw_layout_margin + 0.25
      
    3. بالنسبة لـ Width، استخدم التعبير:

      @layout_pagewidth - @sw_layout_margin *2 - 90
      
    4. أدخل 11.25 في Height

    ضمن Appearance اضبط حجم الخط على 16 pt.

  2. ستتضمن التسمية الثانية وصفًا للخريطة التي أنشأتها. أدرج تسمية مرة أخرى وسمّها map description. في Main Properties أدخل النص map description. وسنضمّن أيضًا في Main Properties ما يلي:

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

    استخدمنا هنا دالتين من دوال Date and Time (هما now و format_date).

    اضبط موضع التسمية.

    1. بالنسبة لـ X، استخدم التعبير:

      @sw_layout_margin + 3
      
    2. بالنسبة لـ Y، استخدم التعبير:

      @sw_layout_margin + 11.5
      
  3. ستتضمن التسمية الثالثة معلومات عن مؤسستك. سننشئ أولًا بعض المتغيرات في القائمة Variables ضمن Item Properties. انتقل إلى القائمة Layout، وانقر على الزر symbologyAdd في كل مرة وأدخل الأسماء o_department و o_name و o_adress و o_postcode. وفي الصف الثاني أدخل المعلومات الخاصة بمؤسستك. سنستخدم هذه المتغيرات في القسم Main Properties.

    في Main Properties أدخل:

    [% @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. بالنسبة لـ Width، استخدم 49.00

    4. بالنسبة لـ Height، استخدم التعبير:

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

4.2.4. ★★☆ تابع معنا: إضافة الصور إلى الترويسة الديناميكية

  1. استخدم الزر addImage Add Picture لوضع صورة فوق التسمية organisation information. بعد إدخال الاسم organisation logo حدّد موضع الشعار وحجمه:

    1. بالنسبة لـ X، استخدم التعبير:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. بالنسبة لـ Y، استخدم التعبير:

      @sw_layout_margin + 3.5
      
    3. بالنسبة لـ Width، استخدم 39.292

    4. بالنسبة لـ Height، استخدم 9.583

    لتضمين شعار مؤسستك، عليك حفظ الشعار في مجلدك الرئيسي (home) وإدخال المسار ضمن Main Properties ► Image Source.

  2. لا يزال تخطيطنا بحاجة إلى سهم الشمال. وسيُدرج هو أيضًا باستخدام northArrow Add North Arrow. سنستخدم سهم الشمال الافتراضي. حدّد الموضع:

    1. بالنسبة لـ X، استخدم التعبير:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. بالنسبة لـ Y، استخدم التعبير:

      @sw_layout_margin + 9
      
    3. بالنسبة لـ Width، استخدم 21.027

    4. بالنسبة لـ Height، استخدم 21.157

4.2.5. ★★☆ تابع معنا: إنشاء شريط مقياس الرسم للترويسة الديناميكية

  1. لإدراج شريط مقياس رسم في الترويسة، انقر على scaleBar Add Scale Bar وضعه في المستطيل الواقع فوق سهم الشمال. في Map ضمن Main Properties اختر main map(Map 1). وهذا يعني أن مقياس الرسم يتغير تلقائيًا وفقًا للامتداد الذي تختاره في لوحة الخريطة الرئيسية في QGIS. اختر Style من النوع Numeric. وهذا يعني أننا ندرج مقياس رسم بسيطًا دون شريط. ولا يزال مقياس الرسم بحاجة إلى موضع وحجم.

    1. بالنسبة لـ X، استخدم التعبير:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. بالنسبة لـ Y، استخدم التعبير:

      @sw_layout_margin + 1
      
    3. بالنسبة لـ Width، استخدم 25

    4. بالنسبة لـ Height، استخدم 8

    5. ضع Reference point في المنتصف.

تهانينا! لقد أنشأت أول تخطيط خريطة ديناميكي لك. ألقِ نظرة على التخطيط وتحقق مما إذا كان كل شيء يبدو كما تريد! يستجيب تخطيط الخريطة الديناميكي تلقائيًا عند تغيير Page Properties. فمثلًا، إذا غيّرت حجم الصفحة من DIN A4 إلى DIN A3، انقر على الزر refresh Refresh view وسيتكيّف تصميم الصفحة.

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

4.2.6. ما التالي؟

ستُكلَّف في الصفحة التالية بواجب لإكماله. وسيتيح لك ذلك التدرب على الأساليب التي تعلمتها حتى الآن.