7.3. الدرس: تحليل التضاريس

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

هدف هذا الدرس: استخدام أدوات تحليل التضاريس لاستخلاص مزيد من المعلومات عن التضاريس.

7.3.1. ★☆☆ تابع معنا: حساب تظليل التضاريس

سنستخدم طبقة نموذج الارتفاع الرقمي نفسها التي استخدمناها في الدرس السابق. إذا كنت تبدأ هذا الفصل من البداية، فاستخدم لوحة Browser وحمّل الملف raster/SRTM/srtm_41_19.tif.

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

سنستخدم الخوارزميات الموجودة في القائمة Raster ► Raster terrain analysis.

  1. انقر على القائمة Hillshade

  2. تتيح لك الخوارزمية تحديد موضع مصدر الضوء: يأخذ Azimuth (السمت) قيمًا من 0 (الشمال) مرورًا بـ 90 (الشرق) و180 (الجنوب) و270 (الغرب)، بينما يحدد Vertical angle (الزاوية الرأسية) مدى ارتفاع مصدر الضوء (من 0 إلى 90 درجة).

  3. سنستخدم القيم التالية:

    • Z factor بقيمة 1.0

    • Azimuth (horizontal angle) بقيمة 300.0°

    • Vertical angle بقيمة 40.0°

    ../../../_images/hillshade_explanation.png
  4. احفظ الملف في مجلد جديد exercise_data/raster_analysis/ باسم hillshade.tif

  5. أخيرًا انقر على Run

ستحصل الآن على طبقة جديدة باسم hillshade تبدو هكذا:

../../../_images/hillshade_raster.png

يبدو ذلك جميلًا وثلاثي الأبعاد، لكن هل يمكننا تحسينه؟ يبدو تظليل التضاريس بمفرده كقالب من الجبس. ألا يمكننا استخدامه بطريقة ما مع طبقاتنا الشبكية الأخرى الأكثر ألوانًا؟ بالطبع يمكننا ذلك، باستخدام تظليل التضاريس كطبقة تراكب.

7.3.2. ★☆☆ تابع معنا: استخدام تظليل التضاريس كطبقة تراكب

يمكن أن يقدم تظليل التضاريس معلومات مفيدة جدًا عن ضوء الشمس في وقت معين من اليوم. لكن يمكن استخدامه أيضًا لأغراض جمالية، لجعل الخريطة تبدو أفضل. والمفتاح في ذلك هو جعل طبقة تظليل التضاريس شفافة في معظمها.

  1. غيّر ترميز الطبقة الأصلية srtm_41_19 لاستخدام نظام الألوان Pseudocolor كما في التمرين السابق

  2. أخفِ جميع الطبقات باستثناء الطبقتين srtm_41_19 و hillshade

  3. انقر على الطبقة srtm_41_19 واسحبها لتصبح أسفل الطبقة hillshade في لوحة Layers

  4. اجعل الطبقة hillshade شفافة بالنقر على التبويب Transparency في خصائص الطبقة

  5. اضبط Global opacity على 50%.

    ستحصل على نتيجة كهذه:

    ../../../_images/hillshade_pseudocolor.png
  6. أوقف عرض الطبقة hillshade ثم أعد تشغيله في لوحة Layers لترى الفرق الذي تحدثه.

باستخدام تظليل التضاريس بهذه الطريقة، يمكن إبراز طبوغرافية المشهد. وإذا بدا لك أن التأثير ليس قويًا بما يكفي، يمكنك تغيير شفافية الطبقة hillshade؛ لكن بالطبع، كلما ازداد سطوع تظليل التضاريس، خفتت الألوان التي خلفه. ستحتاج إلى إيجاد توازن يناسبك.

تذكّر أن تحفظ المشروع عند الانتهاء.

7.3.3. تابع معنا: إيجاد أفضل المناطق

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

  • مواجهة للشمال

  • ذات انحدار أقل من 5 درجات

  • لكن إذا كان الانحدار أقل من درجتين، فلا يهم اتجاه الانحدار.

لنبحث عن أفضل المناطق لهم.

7.3.4. ★★☆ تابع معنا: حساب الانحدار

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

لحساب الانحدار، تحتاج إلى استخدام الخوارزمية Slope من Processing ► Raster terrain analysis.

  1. افتح الخوارزمية

  2. اختر srtm_41_19 في Elevation layer

  3. أبقِ Z factor على 1.0

  4. احفظ المخرجات كملف باسم slope.tif في المجلد نفسه الذي يحتوي على hillshade.tif

  5. انقر على Run

سترى الآن انحدار التضاريس، حيث يحمل كل بكسل قيمة الانحدار المقابلة له. تُظهر البكسلات السوداء التضاريس المستوية، والبكسلات البيضاء التضاريس شديدة الانحدار:

../../../_images/slope_raster.png

7.3.5. ★★☆ جرّب بنفسك: حساب اتجاه الانحدار

اتجاه الانحدار هو اتجاه البوصلة الذي يواجهه منحدر التضاريس. تعني القيمة 0 أن المنحدر يواجه الشمال، و90 أنه يواجه الشرق، و180 أنه يواجه الجنوب، و270 أنه يواجه الغرب.

بما أن هذه الدراسة تجري في نصف الكرة الجنوبي، فمن الأفضل أن تُبنى العقارات على منحدر مواجه للشمال لكي تبقى معرضة لضوء الشمس.

استخدم الخوارزمية Aspect من Processing ► Raster terrain analysis للحصول على الطبقة aspect.tif محفوظة إلى جانب slope.tif.

7.3.6. ★★☆ تابع معنا: إيجاد المنحدرات المواجهة للشمال

لديك الآن طبقات شبكية تعرض الانحدار واتجاه الانحدار، لكن لا سبيل لديك لمعرفة الأماكن التي تتحقق فيها الشروط المثالية معًا. كيف يمكن إجراء هذا التحليل؟

تكمن الإجابة في Raster calculator (حاسبة البيانات الشبكية).

يتوفر في QGIS عدة حاسبات للبيانات الشبكية:

  • Raster ► Raster Calculator

  • في المعالجة:

    • Raster Analysis ► Raster calculator

    • GDAL ► Raster miscellaneous ► Raster calculator

    • SAGA ► Raster calculus ► Raster calculator

تؤدي كل أداة إلى النتائج نفسها، لكن قد تختلف الصياغة قليلًا وقد يتفاوت توفر العوامل.

سنستخدم Raster Analysis ► Raster calculator في صندوق أدوات المعالجة

  1. افتح الأداة بالنقر المزدوج عليها.

    • يسرد الجزء العلوي الأيسر من نافذة الحوار جميع الطبقات الشبكية المحمّلة بالصيغة name@N، حيث name هو اسم الطبقة و N هو النطاق.

    • سترى في الجزء العلوي الأيمن الكثير من العوامل المختلفة. توقف لحظة لتفكر في أن الطبقة الشبكية هي صورة، وينبغي أن تنظر إليها كمصفوفة ثنائية الأبعاد مملوءة بالأرقام.

  2. يقع الشمال عند 0 (صفر) درجة، لذا لكي تكون التضاريس مواجهة للشمال، يجب أن يكون اتجاه انحدارها أكبر من 270 درجة أو أقل من 90 درجة. وبالتالي تكون الصيغة:

    aspect@1 <= 90 OR aspect@1 >= 270
    
  3. عليك الآن ضبط تفاصيل الطبقة الشبكية، مثل حجم الخلية والامتداد ونظام الإحداثيات المرجعي (CRS). يمكن فعل ذلك يدويًا أو ضبطه تلقائيًا باختيار Reference layer. اختر الخيار الأخير بالنقر على الزر ... بجوار المعامل Reference layer(s).

  4. اختر في نافذة الحوار الطبقة aspect، لأننا نريد الحصول على طبقة بالدقة المكانية نفسها.

  5. احفظ الطبقة باسم aspect_north.tif.

    يجب أن تبدو نافذة الحوار هكذا:

    ../../../_images/raster_calculator1.png
  6. أخيرًا انقر على Run.

ستكون النتيجة هكذا:

../../../_images/aspect_result.png

قيم المخرجات هي 0 أو 1. ماذا يعني ذلك؟ لكل بكسل في الطبقة الشبكية، تُرجع الصيغة التي كتبناها ما إذا كان يطابق الشروط أم لا. لذلك ستكون النتيجة النهائية False (0) و True (1).

7.3.7. ★★☆ جرّب بنفسك: معايير إضافية

بعد أن أنهيت اتجاه الانحدار، أنشئ طبقتين جديدتين من نموذج الارتفاع الرقمي.

  • تحدد الأولى المناطق التي يكون فيها الانحدار أقل من أو يساوي 2 درجة

  • والثانية مشابهة، لكن يجب أن يكون الانحدار أقل من أو يساوي 5 درجات.

  • احفظهما في exercise_data/raster_analysis باسم slope_lte2.tif و slope_lte5.tif.

7.3.8. ★★☆ تابع معنا: دمج نتائج تحليل البيانات الشبكية

أنشأت الآن ثلاث طبقات شبكية من نموذج الارتفاع الرقمي:

  • aspect_north: التضاريس المواجهة للشمال

  • slope_lte2: انحدار يساوي درجتين أو أقل

  • slope_lte5: انحدار يساوي 5 درجات أو أقل

حيثما يتحقق الشرط، تكون قيمة البكسل 1، وفي غير ذلك تكون 0. لذلك إذا ضربت هذه الطبقات الشبكية، فإن البكسلات التي قيمتها 1 فيها جميعًا ستحصل على القيمة 1 (وتحصل البقية على 0).

الشروط الواجب تحققها هي:

  • عند انحدار 5 درجات أو أقل، يجب أن تواجه التضاريس الشمال

  • عند انحدار درجتين أو أقل، لا يهم الاتجاه الذي تواجهه التضاريس.

لذلك تحتاج إلى إيجاد المناطق التي يكون فيها الانحدار خمس درجات أو أقل AND تكون التضاريس مواجهة للشمال، OR يكون الانحدار درجتين أو أقل. مثل هذه التضاريس ستكون مناسبة للتطوير.

لحساب المناطق التي تستوفي هذه المعايير:

  1. افتح Raster calculator مرة أخرى

  2. استخدم هذا التعبير في Expression:

    ( aspect_north@1 = 1 AND slope_lte5@1 = 1 ) OR slope_lte2@1 = 1
    
  3. اضبط المعامل Reference layer(s) على aspect_north (لا يهم إن اخترت طبقة أخرى، فجميعها حُسبت من srtm_41_19)

  4. احفظ المخرجات في exercise_data/raster_analysis/ باسم all_conditions.tif

  5. انقر على Run

النتيجة:

../../../_images/development_analysis_results.png

تلميح

كان من الممكن تبسيط الخطوات السابقة باستخدام الأمر التالي:

((aspect@1 <= 90 OR  aspect@1 >= 270) AND slope@1 <= 5) OR slope@1 <= 2

7.3.9. ★★☆ تابع معنا: تبسيط الطبقة الشبكية

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

  1. افتح الأداة Sieve (من GDAL ► Raster Analysis في Processing Toolbox)

  2. اضبط Input file على all_conditions، واضبط Sieved على all_conditions_sieve.tif (داخل exercise_data/raster_analysis/).

  3. اضبط Threshold على 8 (ثمانية بكسلات متجاورة على الأقل)، وفعّل Use 8-connectedness.

    ../../../_images/raster_sieve_dialog.png

    بعد انتهاء المعالجة، ستُحمَّل الطبقة الجديدة.

    ../../../_images/sieve_result_incorrect.png

    ما الذي يحدث؟ تكمن الإجابة في البيانات الوصفية (Metadata) لملف الطبقة الشبكية الجديد.

  4. اعرض البيانات الوصفية (Metadata) ضمن التبويب Information في نافذة الحوار Layer Properties. انظر إلى القيمة STATISTICS_MINIMUM:

    ../../../_images/sieve_metadata.png

    يُفترض أن تحتوي هذه الطبقة الشبكية، مثل الطبقة المشتقة منها، على القيمتين 1 و 0 فقط، لكنها تحتوي أيضًا على عدد سالب كبير جدًا. يُظهر فحص البيانات أن هذا العدد يعمل كقيمة فارغة (null). وبما أننا نبحث فقط عن المناطق التي لم تُستبعد بالتصفية، فلنضبط هذه القيم الفارغة على صفر.

  5. افتح Raster Calculator، وأنشئ هذا التعبير:

    (all_conditions_sieve@1 <= 0) = 0
    

    سيحافظ ذلك على جميع القيم غير السالبة، ويضبط الأعداد السالبة على صفر، تاركًا جميع المناطق ذات القيمة 1 كما هي.

  6. احفظ المخرجات في exercise_data/raster_analysis/ باسم all_conditions_simple.tif.

تبدو المخرجات هكذا:

../../../_images/raster_sieve_correct.png

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

7.3.10. ★★☆ تابع معنا: إعادة تصنيف الطبقة الشبكية

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

لنعد إلى الطبقة aspect. نعلم الآن أنها تحتوي على قيم عددية تتراوح بين 0 و360. ما نريد فعله هو إعادة تصنيف هذه الطبقة إلى قيم منفصلة أخرى (من 1 إلى 4)، تبعًا لاتجاه الانحدار:

  • 1 = الشمال (من 0 إلى 45 ومن 315 إلى 360)؛

  • 2 = الشرق (من 45 إلى 135)

  • 3 = الجنوب (من 135 إلى 225)

  • 4 = الغرب (من 225 إلى 315)

يمكن إنجاز هذه العملية باستخدام حاسبة البيانات الشبكية، لكن الصيغة ستصبح طويلة جدًا جدًا.

الأداة البديلة هي Reclassify by table الموجودة في Raster analysis في Processing Toolbox.

  1. افتح الأداة

  2. اختر aspect في Raster layer

  3. انقر على ... الخاص بـ Reclassification table. ستظهر نافذة حوار على شكل جدول، يمكنك فيها اختيار القيمة الدنيا والقيمة القصوى والقيمة الجديدة لكل فئة.

  4. انقر على الزر Add row وأضف 5 صفوف. املأ كل صف كما في الصورة التالية وانقر على OK:

    ../../../_images/reclassify_table.png

    تُحدَّد الطريقة التي تستخدمها الخوارزمية لمعالجة القيم الحدية لكل فئة بواسطة Range boundaries.

  5. احفظ الطبقة باسم reclassified.tif في المجلد exercise_data/raster_analysis/

    ../../../_images/reclassify_setup.png
  6. انقر على Run

إذا قارنت الطبقة الأصلية aspect بالطبقة reclassified، فلن تجد فروقًا كبيرة. لكن بالنظر إلى مفتاح الخريطة، يمكنك أن ترى أن القيم تتراوح من 1 إلى 4.

لنمنح هذه الطبقة نمطًا أفضل.

  1. افتح لوحة Layer Styling

  2. اختر Paletted/Unique values بدلًا من Singleband gray

  3. انقر على الزر Classify لجلب القيم تلقائيًا وإسناد ألوان عشوائية إليها:

    ../../../_images/unique_style.png

يجب أن تبدو المخرجات هكذا (قد تكون الألوان لديك مختلفة نظرًا لأنها مولّدة عشوائيًا):

../../../_images/reclassify_result.png

بعد إعادة التصنيف هذه وتطبيق النمط ذي لوحة الألوان على الطبقة، يمكنك التمييز فورًا بين مناطق اتجاه الانحدار.

7.3.11. ★☆☆ تابع معنا: الاستعلام عن الطبقة الشبكية

على عكس الطبقات المتجهية، لا تحتوي الطبقات الشبكية على جدول بيانات وصفية. فكل بكسل يحتوي على قيمة عددية واحدة أو أكثر (طبقات شبكية أحادية النطاق أو متعددة النطاقات).

تتكون جميع الطبقات الشبكية التي استخدمناها في هذا التمرين من نطاق واحد فقط. وتبعًا للطبقة، قد تمثل قيم البكسلات قيم الارتفاع أو اتجاه الانحدار أو الانحدار.

كيف يمكننا الاستعلام عن الطبقة الشبكية للحصول على قيمة بكسل؟ يمكننا استخدام الزر identify Identify Features!

  1. اختر الأداة من شريط أدوات Attributes.

  2. انقر على موقع عشوائي في الطبقة srtm_41_19. ستظهر لوحة Identify Results مع قيمة النطاق في الموقع الذي نقرت عليه:

    ../../../_images/identify_raster.png
  3. يمكنك تغيير مخرجات لوحة Identify Results من وضع tree الحالي إلى وضع table باختيار Table في القائمة View أسفل اللوحة:

    ../../../_images/identify_raster_table.png

قد يصبح النقر على كل بكسل للحصول على قيمة الطبقة الشبكية مزعجًا بعد فترة. يمكننا استخدام الإضافة Value Tool لحل هذه المشكلة.

  1. انتقل إلى Plugins ► Manage/Install Plugins...

  2. في التبويب All، اكتب value t في مربع البحث

  3. اختر الإضافة Value Tool، واضغط على Install Plugin ثم أغلق نافذة الحوار عبر Close.

    ../../../_images/value_tool.png

    ستظهر اللوحة الجديدة Value Tool.

    نصيحة

    إذا أغلقت اللوحة، يمكنك إعادة فتحها بتفعيلها من View ► Panels ► Value Tool أو بالنقر على أيقونتها في شريط الأدوات.

  4. لاستخدام الإضافة، فعّل مربع الاختيار Enable وتأكد من أن الطبقة srtm_41_19 نشطة (محددة) في لوحة Layers.

  5. حرّك المؤشر فوق الخريطة لرؤية قيم البكسلات.

    ../../../_images/value_tool_query.png
  6. لكن هناك المزيد. تتيح لك الإضافة Value Tool الاستعلام عن جميع الطبقات الشبكية النشطة في لوحة Layers. اجعل الطبقتين aspect و slope نشطتين مرة أخرى ومرّر الفأرة فوق الخريطة:

    ../../../_images/value_tool_query_multi.png

7.3.12. الخلاصة

رأيت كيف تستخلص جميع أنواع منتجات التحليل من نموذج الارتفاع الرقمي، ومنها حساب تظليل التضاريس والانحدار واتجاه الانحدار. ورأيت أيضًا كيف تستخدم حاسبة البيانات الشبكية لمزيد من التحليل والدمج لهذه النتائج. وأخيرًا تعلمت كيف تعيد تصنيف طبقة وكيف تستعلم عن النتائج.

7.3.13. ما التالي؟

لديك الآن تحليلان: التحليل المتجهي الذي يُظهر لك قطع الأراضي التي يُحتمل أن تكون مناسبة، والتحليل الشبكي الذي يُظهر لك التضاريس التي يُحتمل أن تكون مناسبة. كيف يمكن دمجهما للوصول إلى نتيجة نهائية لهذه المشكلة؟ هذا هو موضوع الدرس التالي، الذي يبدأ في الوحدة التالية.