23.6. واجهة المعالجة الدفعية

23.6.1. المقدمة

يمكن تنفيذ جميع الخوارزميات (بما فيها النماذج) كعملية دفعية. أي يمكن تنفيذها باستخدام عدة مجموعات من المدخلات بدلًا من مجموعة واحدة فقط، فتُنفَّذ الخوارزمية عدد المرات اللازم. هذا مفيد عند معالجة كميات كبيرة من البيانات، إذ لا داعي لتشغيل الخوارزمية مرات عديدة من صندوق الأدوات.

لتنفيذ خوارزمية كعملية دفعية، انقر بزر الفأرة الأيمن على اسمها في صندوق الأدوات واختر الخيار Execute as batch process من القائمة المنبثقة التي ستظهر.

../../../_images/batch_processing_right_click.png

شكل 23.31 المعالجة الدفعية من قائمة النقر بالزر الأيمن

إذا كانت نافذة حوار تنفيذ الخوارزمية مفتوحة، يمكنك أيضًا تشغيل واجهة المعالجة الدفعية منها، بالنقر على الزر Run as batch process....

../../../_images/parameters_dialog.png

شكل 23.32 المعالجة الدفعية من نافذة حوار الخوارزمية

23.6.2. جدول المعاملات

تنفيذ عملية دفعية مشابه لتنفيذ الخوارزمية مرة واحدة. يجب تحديد قيم المعاملات، لكننا في هذه الحالة لا نحتاج إلى قيمة واحدة لكل معامل، بل إلى مجموعة من القيم، واحدة لكل مرة تُنفَّذ فيها الخوارزمية. تُدخَل القيم باستخدام جدول كالمعروض أدناه، حيث يمثل كل صف تكرارًا وتمثل الأعمدة معاملات الخوارزمية.

../../../_images/batch_processing.png

شكل 23.33 المعالجة الدفعية

من شريط الأدوات العلوي يمكنك:

  • processingAlgorithm Toggle advanced mode: متاح فقط عندما تكون للخوارزمية معاملات مُعلَّمة بأنها متقدمة، ويتيح هذا الزر إظهار هذه المعاملات أو إخفاءها في نافذة الحوار الدفعية.

  • symbologyAdd Add row: يضيف إدخال معالجة جديدًا لتهيئته

  • symbologyRemove Remove row(s): يزيل الصفوف المحددة من الجدول. يتم تحديد الصف بالنقر على الرقم في اليسار، ويمكن استخدام تركيبات لوحة المفاتيح للتحديد المتعدد.

  • fileOpen Open: يفتح ملف تهيئة للمعالجة الدفعية

  • fileSave Save: يحفظ تهيئة المعالجة الدفعية في ملف .JSON يمكن تشغيله لاحقًا

يحتوي الجدول افتراضيًا على صفين فقط:

  • يعرض الصف الأول في كل خلية قائمة منسدلة Autofill... ► تحتوي على خيارات لملء الخلايا أدناه بسرعة. تعتمد الخيارات المتاحة على نوع المعامل.

  • يمثل الصف الثاني (وكذلك كل صف يليه) تنفيذًا واحدًا للخوارزمية، وتحتوي كل خلية على قيمة أحد المعاملات. وهو مشابه لنافذة حوار المعاملات التي تراها عند تنفيذ خوارزمية من صندوق الأدوات، لكن بترتيب مختلف.

في أسفل الجدول يمكنك تحديد ما إذا كنت تريد checkbox Load layers on completion.

بعد ضبط حجم الجدول، يجب ملؤه بالقيم المطلوبة.

23.6.3. ملء جدول المعاملات

بالنسبة لمعظم المعاملات، يكون ضبط القيمة أمرًا بسيطًا. يُوفَّر عنصر الواجهة المناسب، كما في نافذة حوار المعالجة المفردة، ليتيح لك كتابة القيمة مباشرة أو اختيارها من قائمة القيم الممكنة، بحسب نوع المعامل. ويشمل ذلك أيضًا عنصر واجهة القيم المعرَّفة بالبيانات (data-defined) عندما يكون متوافقًا.

لأتمتة تعريف العملية الدفعية وتجنب ملء الجدول خلية خلية، يمكنك الضغط على القائمة Autofill... الخاصة بأحد المعاملات واختيار أي من الخيارات التالية لاستبدال القيم في العمود:

  • يأخذ Fill Down مُدخل العملية الأولى ويُدخله في جميع العمليات الأخرى.

  • يتيح لك calculateField Calculate by Expression... إنشاء تعبير QGIS جديد لتحديث جميع القيم الموجودة في ذلك العمود. قيم المعاملات الموجودة (بما فيها قيم الأعمدة الأخرى) متاحة للاستخدام داخل التعبير عبر المتغيرات. مثلًا ضبط عدد المقاطع بناءً على مسافة النطاق العازل لكل طبقة:

    CASE WHEN @DISTANCE > 20 THEN 12 ELSE 8 END
    
  • يضيف Add Values by Expression... صفوفًا جديدة باستخدام القيم الناتجة عن تعبير يُرجع مصفوفة (بخلاف Calculate by Expression... الذي يعمل على الصفوف الموجودة فقط). الغرض منه هو إتاحة ملء نافذة الحوار الدفعية باستخدام متسلسلات رقمية معقدة. على سبيل المثال، إضافة صفوف لعملية نطاق عازل دفعية باستخدام التعبير generate_series(100, 1000, 50) لمعامل المسافة ينتج عنها صفوف جديدة بالقيم 100، 150، 200، .... 1000.

  • عند ضبط معامل ملف أو طبقة، تتوفر خيارات إضافية:

    • Add Files by Pattern...: يضيف صفوفًا جديدة إلى الجدول للملفات المطابقة لـ File pattern في المجلد المحدد في Look in. مثلًا *.shp سيضيف إلى القائمة جميع ملفات SHP في المجلد. فعّل checkbox Search recursively لاستعراض المجلدات الفرعية أيضًا.

    • Select Files...: لاختيار الملفات من القرص كلًّا على حدة

    • Add All Files from a Directory...

    • Select from Open Layers...: للاختيار من الطبقات المفتوحة في المشروع النشط

يوفّر معامل بيانات المخرجات الإمكانات نفسها المتاحة عند تنفيذ الخوارزمية كعملية مفردة. بحسب الخوارزمية، يمكن أن يكون المخرج:

  • متجاوَزًا، إذا تُركت الخلية فارغة

  • محفوظًا كطبقة مؤقتة: املأ الخلية باسم المخرج الذي اخترته، واختر checkbox Create Temporary Layer من القائمة المنسدلة ...، وتذكّر تفعيل مربع الاختيار checkbox Load layers on completion. بالنسبة للطبقات المؤقتة، تُستخدم القيمة التي تقدمها كاسم للطبقة. يمكنك استخدام خيارات Autofill لتكوين هذا الاسم.

  • محفوظًا كملف عادي (.SHP، .GPKG، .XML، .PDF، .JPG،...): اختر Select File/Folder... من القائمة المنسدلة .... بالنسبة للملفات العادية، يمكنك ضبط المسار باستخدام خيارات Autofill الموضحة سابقًا.

    مثلًا استخدم Calculate by Expression... لضبط أسماء ملفات المخرجات بتعبيرات معقدة مثل:

    '/home/me/stuff/buffer_' || left(@INPUT, 30) || '_' || @DISTANCE || '.shp'
    

    يمكنك أيضًا كتابة مسار الملف مباشرة أو استخدام نافذة حوار اختيار الملفات التي تظهر عند النقر على الزر المرافق Select File/Folder.... بعد اختيار الملف، تظهر نافذة حوار جديدة تتيح الإكمال التلقائي للخلايا الأخرى في العمود نفسه (المعامل نفسه).

    ../../../_images/batch_processing_save.png

    شكل 23.34 حفظ المعالجة الدفعية

    إذا اخترت القيمة الافتراضية (Do not autofill)، فسيُوضع اسم الملف المختار في الخلية المحددة من جدول المعاملات فقط. أما إذا اخترت أيًّا من الخيارات الأخرى، فستُملأ جميع الخلايا أسفل الخلية المحددة تلقائيًا بناءً على معيار محدد:

    • Fill with numbers: يُلحق رقمًا متزايدًا باسم الملف

    • Fill with parameter values: يمكنك اختيار معامل تُلحق قيمته في الصف نفسه باسم الملف. هذا مفيد بشكل خاص لتسمية كائنات بيانات المخرجات وفقًا لكائنات المدخلات.

  • محفوظًا كطبقة داخل حاوية قاعدة بيانات:

    # Indicate a layer within a GeoPackage file
    ogr:dbname='C:/Path/To/Geopackage.gpkg' table="New_Table" (geom)
    
    # Use the "Calculate By Expression" to output to different layers in a GeoPackage
    'ogr:dbname=\'' || @project_folder || '/Buffers.gpkg\' table="' || @INPUT || '_' || @DISTANCE || '" (geom)'
    

23.6.4. تنفيذ العملية الدفعية

لتنفيذ العملية الدفعية بعد إدخال جميع القيم اللازمة، انقر على Run. تُفعَّل اللوحة Log وتعرض تفاصيل عملية التنفيذ وخطواتها. يظهر تقدم المهمة الدفعية الإجمالية في شريط التقدم في الجزء السفلي من نافذة الحوار.