13.2. تحليل البيانات الشبكية

13.2.1. حاسبة البيانات الشبكية

تتيح لك Raster Calculator في القائمة Raster إجراء حسابات على أساس قيم بكسلات الطبقات الشبكية الموجودة (انظر شكل 13.33). وتُكتب النتائج في طبقة شبكية جديدة بصيغة يدعمها GDAL.

../../../_images/raster_calculator.png

شكل 13.33 حاسبة البيانات الشبكية

تحتوي القائمة Raster bands على جميع الطبقات الشبكية المحمّلة التي يمكن استخدامها. لإضافة طبقة شبكية إلى حقل تعبير حاسبة البيانات الشبكية، انقر نقرًا مزدوجًا على اسمها في قائمة الحقول. ويمكنك بعد ذلك استخدام العوامل لبناء تعابير الحساب، أو كتابتها مباشرة في المربع.

في القسم Result layer ستحتاج إلى تعريف طبقة مخرجات. ويمكنك:

  • checkbox Create on-the-fly raster instead of writing layer to disk:

    • إذا لم يُفعَّل، تُخزَّن المخرجات على القرص كملف عادي جديد، ويلزم تحديد مسار Output layer و Output format.

    • إذا فُعّل، تُنشأ طبقة شبكية افتراضية، أي طبقة شبكية معرّفة بمعرّف URI الخاص بها وتُحسب بكسلاتها أثناء التشغيل. وهي ليست ملفًا جديدًا على القرص؛ إذ تبقى الطبقة الافتراضية متصلة بالطبقات الشبكية المستخدمة في الحساب، مما يعني أن حذف هذه الطبقات أو نقلها سيعطلها. ويمكن تحديد Layer name، وإلا فيُستخدم تعبير الحساب كما هو. وتؤدي إزالة الطبقة الافتراضية من المشروع إلى حذفها، ويمكن جعلها دائمة في ملف باستخدام القائمة السياقية للطبقة Export ► Save as....

  • حدد Spatial extent للحساب باستخدام عنصر الواجهة أداة اختيار الامتداد.

  • اضبط Resolution للطبقة باستخدام عدد الأعمدة والصفوف. وإذا كانت لطبقة المدخلات دقة مكانية مختلفة، فستُعاد معاينة القيم بخوارزمية الجار الأقرب.

  • فعّل checkbox Create Options لتعريف خيارات إضافية لإنشاء الطبقة الشبكية. تتيح لك هذه الخيارات التحكم في بنية ملف المخرجات وضغطه، بما في ذلك الصيغة وطريقة الضغط وإعدادات أخرى خاصة بالمشغّل (driver). اطلع على المزيد في خيارات مشغّل البيانات الشبكية.

  • مع مربع الاختيار checkbox Add result to project ستُضاف طبقة النتيجة تلقائيًا إلى منطقة مفتاح الخريطة ويمكن عرضها. ويكون مفعّلًا افتراضيًا للطبقات الشبكية الافتراضية.

يحتوي القسم Operators على جميع العوامل المتاحة. لإضافة عامل إلى مربع تعبير حاسبة البيانات الشبكية، انقر الزر المناسب. تتوفر العمليات الحسابية (+ و - و * و ... ) والدوال المثلثية (sin و cos و tan و ... ). وتُرجع التعابير الشرطية (= و != و < و >= و ... ) إما 0 للخطأ أو 1 للصواب، ولذلك يمكن استخدامها مع عوامل ودوال أخرى.

13.2.1.1. تعبير حاسبة البيانات الشبكية

نافذة الحوار

توفر نافذة Raster calculator expression وسائل لكتابة تعابير لحسابات البكسلات بين مجموعة من الطبقات الشبكية.

../../../_images/raster_calculator_expression.png

شكل 13.34 حاسبة تعابير البيانات الشبكية

  • Layers: يعرض قائمة جميع الطبقات الشبكية المحمّلة في مفتاح الخريطة. ويمكن استخدامها لملء مربع التعبير (انقر نقرًا مزدوجًا للإضافة). ويُشار إلى الطبقات الشبكية باسمها ورقم النطاق: layer_name@band_number. فمثلًا يُشار إلى النطاق الأول من طبقة اسمها DEM بـ DEM@1.

  • Operators: يحتوي على عدد من عوامل الحساب لمعالجة البكسلات:

    • حسابية: + و - و * و sqrt و abs و ln و ...

    • مثلثية: sin و cos و tan و ...

    • مقارنة: = و != و < و >= و ...

    • منطقية: IF و AND و OR و ( و )

    • إحصائية: min و max

    لإضافة عامل إلى مربع تعبير حاسبة البيانات الشبكية، انقر الزر المناسب.

  • Raster calculator expression هي المنطقة التي يُكتب فيها التعبير

أمثلة

تحويل قيم الارتفاع من الأمتار إلى الأقدام

لإنشاء طبقة شبكية للارتفاع بالأقدام من طبقة شبكية بالأمتار، تحتاج إلى استخدام معامل التحويل من الأمتار إلى الأقدام: 3.28. والتعبير هو:

"elevation@1" * 3.28

استخدام قناع

إذا أردت حجب أجزاء من طبقة شبكية -- مثلًا لأنك مهتم فقط بالارتفاعات التي تزيد على 0 متر -- فيمكنك استخدام التعبير التالي لإنشاء قناع وتطبيق النتيجة على طبقة شبكية في خطوة واحدة.

("elevation@1" >= 0) * "elevation@1"

بعبارة أخرى، لكل خلية أكبر من 0 أو تساويه يُقيَّم التعبير الشرطي إلى 1، مما يُبقي القيمة الأصلية بضربها في 1. وإلا فيُقيَّم التعبير الشرطي إلى 0، مما يضبط قيمة الخلية على 0. وبهذا يُنشأ القناع أثناء التشغيل.

تصنيف طبقة شبكية

إذا أردت تصنيف طبقة شبكية -- مثلًا إلى فئتي ارتفاع -- فيمكنك استخدام التعبير التالي لإنشاء طبقة شبكية بقيمتين 1 و 2 في خطوة واحدة.

("elevation@1" < 50) * 1 + ("elevation@1" >= 50) * 2

بعبارة أخرى، اضبط قيمة كل خلية أصغر من 50 على 1، وقيمة كل خلية أكبر من 50 أو تساويه على 2.

أو يمكنك استخدام العامل IF.

if ( elevation@1 < 50 , 1 , 2 )