6.3. الدرس: تحليل الشبكات

حساب أقصر مسافة بين نقطتين مهمة شائعة في نظم المعلومات الجغرافية. يمكن العثور على أدوات ذلك في Processing Toolbox.

هدف هذا الدرس: تعلّم استخدام خوارزميات Network analysis.

6.3.1. ★☆☆ تابع معنا: الأدوات والبيانات

يمكنك العثور على جميع خوارزميات تحليل الشبكات في القائمة Processing ► Network Analysis. يمكنك أن ترى أن هناك العديد من الأدوات المتاحة:

../../../_images/select_network_algorithms.png

افتح المشروع exercise_data/network_analysis/network.qgz. يحتوي على طبقتين:

  • network_points

  • network_lines

الطبقة network_lines لها نمط مُعدّ مسبقًا يساعد على فهم شبكة الطرق.

../../../_images/network_map.png

توفر أدوات أقصر مسار طرقًا لحساب أقصر مسار أو أسرعه بين نقطتين في الشبكة، بمعلومية:

  • نقطتي البداية والنهاية المحددتين على الخريطة

  • نقطة البداية المحددة على الخريطة ونقاط النهاية المأخوذة من طبقة نقطية

  • نقاط البداية المأخوذة من طبقة نقطية ونقطة النهاية المحددة على الخريطة

لنبدأ.

6.3.2. ★☆☆ حساب أقصر مسار (من نقطة إلى نقطة)

تتيح لك الخوارزمية Network analysis ► Shortest path (point to point) حساب أقصر مسافة بين نقطتين تختارهما يدويًا على الخريطة.

في هذا المثال سنحسب المسار الأقصر (وليس الأسرع) بين نقطتين.

  1. افتح الخوارزمية Shortest path (point to point)

  2. اختر network_lines في Vector layer representing network

  3. استخدم Shortest في Path type to calculate

    استخدم هاتين النقطتين نقطتَي بداية ونهاية للتحليل:

    ../../../_images/start_end_point.png
  4. انقر على الزر ... بجوار Start point (x, y) واختر الموقع الموسوم بـ Starting Point في الصورة. فعّل خيارات الالتقاط لتحديد دقيق. ستُضاف إحداثيات النقطة التي نقرت عليها.

  5. افعل الشيء نفسه، لكن باختيار الموقع الموسوم بـ Ending point في End point (x, y)

  6. انقر على الزر Run:

    ../../../_images/shortest_point.png
  7. تُنشأ طبقة خطية جديدة تمثل أقصر مسار بين النقطتين المختارتين. ألغِ تحديد الطبقة network_lines لرؤية النتيجة بشكل أفضل:

    ../../../_images/shortest_point_result.png
  8. افتح جدول البيانات الوصفية لطبقة المخرجات. يحتوي على ثلاثة حقول تمثل إحداثيات نقطتي البداية والنهاية و التكلفة.

    اخترنا Shortest في Path type to calculate، لذا تمثل التكلفة المسافة بوحدات الطبقة بين الموقعين.

    في حالتنا، تبلغ المسافة الأقصر بين النقطتين المختارتين نحو 1000 متر:

    ../../../_images/shortest_point_attributes.png

الآن بعد أن عرفت كيفية استخدام الأداة، لا تتردد في تجربة مواقع أخرى.

6.3.3. ★★☆ جرّب بنفسك: أسرع مسار

باستخدام بيانات التمرين السابق نفسها، حاول حساب أسرع مسار بين النقطتين.

كم من الوقت تحتاج للانتقال من نقطة البداية إلى نقطة النهاية؟

6.3.4. ★★☆ تابع معنا: الخيارات المتقدمة

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

سنستخدم الطبقات نفسها ونقطتي البداية والنهاية نفسيهما من التمارين السابقة.

  1. افتح الخوارزمية Shortest path (point to point)

  2. املأ Input layer و Start point (x, y) و End point (x, y) كما فعلنا من قبل

  3. اختر Fastest في Path type to calculate

  4. افتح القائمة Advanced parameter

  5. غيّر Default speed (km/h) من القيمة الافتراضية 50 إلى 4

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

  7. بعد انتهاء الخوارزمية، أغلق نافذة الحوار وافتح جدول البيانات الوصفية لطبقة المخرجات.

    يحتوي الحقل cost على القيمة وفقًا لمعامل السرعة الذي اخترته. يمكننا تحويل الحقل cost من ساعات بكسور إلى قيم دقائق أسهل قراءة.

  8. افتح حاسبة الحقول بالنقر على الأيقونة calculateField

  9. أضف حقلًا جديدًا لتخزين تكلفة المسار بـ minutes.

    ../../../_images/shortest_path_conversion.png

هذا كل شيء! أصبحت تعرف الآن كم دقيقة تستغرق للانتقال من نقطة إلى أخرى إذا كانت سرعة الشبكة كلها 4 km/h.

6.3.5. ★★★ أقصر مسار مع حدود السرعة

تحتوي مجموعة أدوات تحليل الشبكات على خيارات أخرى مثيرة للاهتمام. بالنظر إلى الخريطة التالية:

../../../_images/speed_limit.png

نود معرفة المسار الأسرع مع مراعاة حدود السرعة لكل طريق (تمثل التسميات حدود السرعة بـ km/h). سيكون أقصر مسار دون مراعاة حدود السرعة بالطبع هو المسار البنفسجي. لكن حد السرعة في ذلك الطريق 20 km/h، بينما يمكنك السير في الطريق الأخضر بسرعة 100 km/h!

كما فعلنا في التمرين الأول، سنستخدم Network analysis ► Shortest path (point to point) وسنختار نقطتي البداية والنهاية يدويًا.

  1. افتح الخوارزمية Network analysis ► Shortest path (point to point)

  2. اختر network_lines للمعامل Vector layer representing network

  3. اختر Fastest في Path type to calculate

  4. اختر Start point (x, y) و End point (x, y) كما فعلنا من قبل

  5. افتح القائمة Advanced parameters

  6. اختر الحقل speed للمعامل Speed Field. مع هذا الخيار ستأخذ الخوارزمية في الحسبان حدود السرعة لكل طريق.

    ../../../_images/speed_limit_parameters.png
  7. انقر على الزر Run

  8. أوقف إظهار الطبقة network_lines لرؤية النتيجة بشكل أفضل

    ../../../_images/speed_limit_result.png

كما ترى، لا يتطابق المسار الأسرع مع المسار الأقصر.

6.3.6. ★★☆ منطقة الخدمة (من طبقة)

يمكن للخوارزمية Network Analysis ► Service area (from layer) الإجابة عن السؤال: بمعلومية طبقة نقطية، ما جميع المناطق التي يمكن الوصول إليها ضمن مسافة أو زمن معين؟

ملاحظة

الخوارزمية Network Analysis ► Service area (from point) هي الخوارزمية نفسها، لكنها تتيح لك اختيار النقطة يدويًا على الخريطة.

بمعلومية مسافة 250 مترًا، نريد معرفة إلى أي مدى يمكننا الوصول على الشبكة من كل نقطة في الطبقة network_points.

  1. ألغِ تحديد جميع الطبقات باستثناء network_points

  2. افتح الخوارزمية Network Analysis ► Service area (from layer)

  3. اختر network_lines في Vector layer representing network

  4. اختر network_points في Vector layer with start points

  5. اختر Shortest في Path type to calculate

  6. أدخل 250 للمعامل Travel cost

  7. انقر على Run وأغلق نافذة الحوار

    ../../../_images/service_area.png

    تمثل طبقة المخرجات أقصى مسار يمكنك بلوغه من المعالم النقطية ضمن مسافة 250 مترًا:

    ../../../_images/service_area_result.png

رائع، أليس كذلك؟

6.3.7. الخلاصة

أصبحت تعرف الآن كيفية استخدام خوارزميات Network analysis لحل مسائل أقصر مسار وأسرع مسار.

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

6.3.8. ما التالي؟

سترى بعد ذلك كيفية تشغيل خوارزميات الإحصاء المكاني على مجموعات البيانات المتجهية.