6.2. الدرس: تحليل البيانات المتجهية¶
يمكن أيضًا تحليل البيانات المتجهية للكشف عن كيفية تفاعل المعالم المختلفة بعضها مع بعض في المكان. هناك العديد من الوظائف المختلفة المتعلقة بالتحليل، لذا لن نتناولها جميعًا. بل سنطرح سؤالًا ونحاول حله باستخدام الأدوات التي يوفرها QGIS.
هدف هذا الدرس: طرح سؤال وحله باستخدام أدوات التحليل.
6.2.1. ★☆☆ عملية نظم المعلومات الجغرافية¶
قبل أن نبدأ، من المفيد تقديم لمحة موجزة عن عملية يمكن استخدامها لحل مشكلة ما. والطريقة المتبعة هي:
تحديد المشكلة
الحصول على البيانات
تحليل المشكلة
عرض النتائج
6.2.2. ★☆☆ المشكلة¶
لنبدأ العملية بتحديد مشكلة لحلها. على سبيل المثال، أنت وكيل عقاري وتبحث عن عقار سكني في Swellendam لعملاء لديهم المعايير التالية:
يجب أن يكون في Swellendam
يجب أن يكون على مسافة قيادة معقولة من مدرسة (لنقل 1km)
يجب أن تزيد مساحته على 100 متر مربع
أقرب من 50m إلى طريق رئيسي
أقرب من 500m إلى مطعم
6.2.3. ★☆☆ البيانات¶
للإجابة عن هذه الأسئلة، سنحتاج إلى البيانات التالية:
العقارات السكنية (المباني) في المنطقة
الطرق داخل البلدة وحولها
مواقع المدارس والمطاعم
مساحات المباني
هذه البيانات متاحة عبر OSM، وستجد أن مجموعة البيانات التي استخدمتها طوال هذا الدليل يمكن استخدامها أيضًا في هذا الدرس.
إذا أردت تنزيل بيانات من منطقة أخرى، فانتقل إلى الفصل التمهيدي لتقرأ كيفية فعل ذلك.
ملاحظة
رغم أن تنزيلات OSM تحتوي على حقول بيانات متسقة، فإن التغطية والتفاصيل تتفاوت. فإذا وجدت مثلًا أن المنطقة التي اخترتها لا تحتوي على معلومات عن المطاعم، فقد تحتاج إلى اختيار منطقة أخرى.
6.2.4. ★☆☆ تابع معنا: بدء مشروع والحصول على البيانات¶
نحتاج أولًا إلى تحميل البيانات التي سنعمل عليها.
ابدأ مشروع QGIS جديدًا
إذا أردت، يمكنك إضافة خريطة خلفية. افتح Browser وحمّل الخريطة الخلفية OSM من القائمة XYZ Tiles.
ستجد في قاعدة بيانات GeoPackage
training_data.gpkgمعظم مجموعات البيانات التي سنستخدمها في هذا الفصل:buildingsroadsrestaurantsschools
حمّلها، وحمّل أيضًا
landuse.sqlite.قرّب إلى امتداد الطبقة لترى Swellendam، جنوب أفريقيا
قبل المتابعة سنصفّي الطبقة
roads، لكي نعمل على أنواع محددة فقط من الطرق.بعض الطرق في مجموعات بيانات OSM مُدرجة بالأنواع
unclassifiedوtracksوpathوfootway. نريد استبعادها من مجموعة بياناتنا والتركيز على أنواع الطرق الأخرى الأنسب لهذا التمرين.علاوة على ذلك، قد لا تكون بيانات OSM محدثة في كل مكان، لذا سنستبعد أيضًا القيم
NULL.انقر بزر الفأرة الأيمن على الطبقة
roadsواختر Filter....في نافذة الحوار التي تظهر، نصفّي هذه المعالم بالتعبير التالي:
"highway" NOT IN ('footway', 'path', 'unclassified', 'track') AND "highway" IS NOT NULL
يؤدي الجمع بين العاملين
NOTوINإلى استبعاد جميع المعالم التي تحمل قيم السمات هذه في الحقلhighway.يؤدي
IS NOT NULLمع العاملANDإلى استبعاد الطرق التي لا قيمة لها في الحقلhighway.لاحظ الأيقونة
بجوار الطبقة roads. فهي تذكّرك بأن هذه الطبقة عليها مرشّح مفعّل، لذا قد لا تكون بعض المعالم متاحة في المشروع.
يجب أن تبدو الخريطة بكل البيانات كالتالية:
6.2.5. ★☆☆ جرّب بنفسك: تحويل نظام الإحداثيات المرجعي للطبقات¶
لأننا سنقيس المسافات داخل طبقاتنا، نحتاج إلى تغيير نظام الإحداثيات المرجعي (CRS) للطبقات. ولفعل ذلك، نحتاج إلى تحديد كل طبقة على حدة، وحفظها في طبقة جديدة بالإسقاط الجديد، ثم استيراد تلك الطبقة الجديدة إلى خريطتنا.
لديك خيارات كثيرة مختلفة، فمثلًا يمكنك تصدير كل طبقة كمجموعة بيانات بصيغة ESRI Shapefile، أو إلحاق الطبقات بملف GeoPackage موجود، أو إنشاء ملف GeoPackage آخر وملؤه بالطبقات الجديدة المعاد إسقاطها. سنعرض الخيار الأخير، ليبقى training_data.gpkg نظيفًا. لا تتردد في اختيار سير العمل الأنسب لك.
ملاحظة
في هذا المثال نستخدم نظام الإحداثيات المرجعي WGS 84 / UTM zone 34S، لكن عليك استخدام نظام UTM أنسب لمنطقتك.
انقر بزر الفأرة الأيمن على الطبقة
roadsفي لوحة Layersانقر على Export --> Save Features As...
في نافذة الحوار Save Vector Layer As اختر GeoPackage في Format
انقر على ... بجوار File name، وسمِّ ملف GeoPackage الجديد
vector_analysisغيّر Layer name إلى
roads_34Sغيّر CRS إلى WGS 84 / UTM zone 34S
انقر على OK:
سيؤدي هذا إلى إنشاء قاعدة بيانات GeoPackage جديدة وإضافة الطبقة
roads_34S.كرّر هذه العملية لكل طبقة، بإنشاء طبقة جديدة في ملف GeoPackage
vector_analysis.gpkgمع إلحاق_34Sبالاسم الأصلي.على نظام macOS، اضغط على الزر Replace في نافذة الحوار التي تظهر للسماح لـ QGIS بالكتابة فوق ملف GeoPackage الموجود.
ملاحظة
عندما تختار حفظ طبقة في ملف GeoPackage موجود، فإن QGIS سوف يضيف تلك الطبقة بجوار الطبقات الموجودة فيه، ما لم توجد طبقة بالاسم نفسه.
أزل كل طبقة من الطبقات القديمة من المشروع
بعد إتمام العملية لجميع الطبقات، انقر بزر الفأرة الأيمن على أي طبقة ثم انقر على Zoom to layer extent لتركيز الخريطة على منطقة الاهتمام.
الآن بعد أن حوّلنا بيانات OSM إلى إسقاط UTM، يمكننا البدء بالحسابات.
6.2.6. ★☆☆ تابع معنا: تحليل المشكلة: المسافات من المدارس والطرق¶
يتيح لك QGIS حساب المسافات بين أي كائنات متجهية.
تأكد من أن الطبقتين
roads_34Sوbuildings_34Sفقط هما الظاهرتان (لتبسيط الخريطة أثناء العمل)انقر على لفتح النواة التحليلية لـ QGIS. باختصار، جميع الخوارزميات (للتحليل المتجهي و الشبكي) متاحة في صندوق الأدوات هذا.
نبدأ بحساب المنطقة المحيطة بالطبقة
roads_34Sباستخدام خوارزمية Buffer. يمكنك العثور عليها في المجموعة .
أو يمكنك كتابة
bufferفي قائمة البحث في الجزء العلوي من صندوق الأدوات:
انقر عليها نقرًا مزدوجًا لفتح نافذة حوار الخوارزمية
اختر
roads_34Sفي Input layer، واضبط Distance على 50، واستخدم القيم الافتراضية لبقية المعاملات.
القيمة الافتراضية لـ Distance بالأمتار لأن مجموعة بيانات الإدخال لدينا في نظام إحداثيات مُسقَط يستخدم المتر وحدةَ قياس أساسية. يمكنك استخدام القائمة المنسدلة لاختيار وحدات مُسقَطة أخرى مثل الكيلومترات والياردات وغيرها.
ملاحظة
إذا حاولت إنشاء نطاق عازل لطبقة في نظام إحداثيات جغرافي، فستحذّرك أدوات المعالجة وتقترح عليك إعادة إسقاط الطبقة إلى نظام إحداثيات متري.
افتراضيًا، تُنشئ Processing طبقات مؤقتة وتضيفها إلى لوحة Layers. يمكنك أيضًا إلحاق النتيجة بقاعدة بيانات GeoPackage عن طريق:
النقر على الزر ... واختيار Save to GeoPackage...
تسمية الطبقة الجديدة
roads_buffer_50mحفظها في الملف
vector_analysis.gpkg
انقر على Run، ثم أغلق نافذة الحوار Buffer
ستبدو خريطتك الآن على هذا النحو تقريبًا:
إذا كانت طبقتك الجديدة في أعلى قائمة Layers، فمن المحتمل أن تحجب جزءًا كبيرًا من خريطتك، لكنها تعطيك جميع المناطق في منطقتك التي تقع ضمن 50m من طريق.
لاحظ وجود مناطق منفصلة داخل النطاق العازل، تقابل كلٌّ منها طريقًا منفردًا. للتخلص من هذه المشكلة:
ألغِ تحديد الطبقة
roads_buffer_50mوأعد إنشاء النطاق العازل مع تفعيل Dissolve results.
احفظ المخرجات باسم
roads_buffer_50m_dissolvedانقر على Run وأغلق نافذة الحوار Buffer
بعد إضافة الطبقة إلى لوحة Layers، ستبدو على هذا النحو:
لم تعد هناك الآن تقسيمات غير ضرورية.
ملاحظة
يشرح Short Help على الجانب الأيمن من نافذة الحوار طريقة عمل الخوارزمية. إذا احتجت إلى مزيد من المعلومات، فانقر على الزر Help في الجزء السفلي لفتح دليل أكثر تفصيلًا للخوارزمية.
6.2.7. ★☆☆ جرّب بنفسك: المسافة من المدارس¶
استخدم النهج نفسه المتبع أعلاه وأنشئ نطاقًا عازلًا للمدارس.
يجب أن يكون نصف قطره 1 km. احفظ الطبقة الجديدة في الملف vector_analysis.gpkg باسم schools_buffer_1km_dissolved.
الإجابة
يجب أن تبدو نافذة حوار النطاق العازل على هذا النحو:
قيمة Buffer distance هي 1 كيلومتر.
قيمة Segments to approximate مضبوطة على
20. هذا اختياري، لكنه موصى به لأنه يجعل النطاقات العازلة الناتجة تبدو أكثر نعومة. قارن هذا:
بهذا:
تُظهر الصورة الأولى النطاق العازل وقيمة Segments to approximate مضبوطة على 5، وتُظهر الثانية القيمة مضبوطة على 20. في مثالنا الفرق طفيف، لكن يمكنك أن ترى أن حواف النطاق العازل أنعم مع القيمة الأعلى.
6.2.8. ★☆☆ تابع معنا: المناطق المتداخلة¶
حدّدنا الآن المناطق التي يبعد فيها الطريق أقل من 50 مترًا، والمناطق التي توجد فيها مدرسة ضمن 1 km (خط مستقيم، وليس عبر الطريق). لكن من الواضح أننا نريد فقط المناطق التي يتحقق فيها هذان المعياران معًا. لذلك سنحتاج إلى استخدام الأداة Intersect. يمكنك العثور عليها في المجموعة في Processing Toolbox.
استخدم طبقتي النطاق العازل في Input layer و Overlay layer، واختر ملف GeoPackage
vector_analysis.gpkgفي Intersection مع Layer nameroad_school_buffers_intersect. اترك الباقي كما هو مقترح (افتراضي).
انقر على Run.
في الصورة أدناه، المناطق الزرقاء هي التي يتحقق فيها معيارا المسافة كلاهما.
يمكنك إزالة طبقتي النطاق العازل والإبقاء فقط على الطبقة التي تُظهر مكان تداخلهما، لأن هذا ما أردنا معرفته أصلًا:
6.2.9. ★☆☆ تابع معنا: استخراج المباني¶
لديك الآن المنطقة التي يجب أن تتداخل معها المباني. بعد ذلك تريد استخراج المباني الواقعة في تلك المنطقة.
ابحث عن عنصر القائمة داخل Processing Toolbox
اختر
buildings_34Sفي Extract features from. حدّد intersect في Where the features (geometric predicate)، واختر طبقة تقاطع النطاقات العازلة في By comparing to the features from. احفظ فيvector_analysis.gpkg، وسمِّ الطبقةwell_located_houses.
انقر على Run وأغلق نافذة الحوار
ستجد على الأرجح أن شيئًا لم يتغير كثيرًا. في هذه الحالة، انقل الطبقة
well_located_housesإلى أعلى قائمة الطبقات، ثم كبّر العرض.
المباني الحمراء هي التي تطابق معاييرنا، بينما المباني الخضراء هي التي لا تطابقها.
لديك الآن طبقتان منفصلتان ويمكنك إزالة
buildings_34Sمن قائمة الطبقات.
6.2.10. ★★☆ جرّب بنفسك: تصفية المباني أكثر¶
لدينا الآن طبقة تُظهر جميع المباني الواقعة ضمن 1km من مدرسة وضمن 50m من طريق. نحتاج الآن إلى تقليص هذا التحديد لإظهار المباني الواقعة ضمن 500m من مطعم فقط.
باستخدام العمليات الموضحة أعلاه، أنشئ طبقة جديدة باسم houses_restaurants_500m تُصفّي الطبقة well_located_houses أكثر لتُظهر فقط المباني الواقعة ضمن 500m من مطعم.
الإجابة
لإنشاء الطبقة الجديدة houses_restaurants_500m، نمرّ بعملية من خطوتين:
أولًا، أنشئ نطاقًا عازلًا بمقدار 500m حول المطاعم وأضف الطبقة إلى الخريطة:
بعد ذلك، استخرج المباني الواقعة داخل منطقة ذلك النطاق العازل:
يجب أن تُظهر خريطتك الآن فقط المباني الواقعة ضمن 50m من طريق، و 1km من مدرسة، و 500m من مطعم:
6.2.11. ★☆☆ تابع معنا: تحديد المباني ذات المساحة المناسبة¶
لمعرفة المباني ذات المساحة المناسبة (أكثر من 100 متر مربع)، نحتاج إلى حساب مساحتها.
حدّد الطبقة
houses_restaurants_500mوافتح Field Calculator بالنقر على الزر
Open Field Calculator في شريط الأدوات الرئيسي أو في نافذة جدول البيانات الوصفيةاختر Create a new field، واضبط Output field name على
AREA، واختر Decimal number (real) في Output field type، واختر$areaمن المجموعة .
سيحتوي الحقل الجديد
AREAعلى مساحة كل مبنى بالمتر المربع.انقر على OK. أُضيف الحقل
AREAفي نهاية جدول البيانات الوصفية.انقر على الزر
Toggle Editing لإنهاء التحرير، واحفظ تعديلاتك عند المطالبة.في التبويب من خصائص الطبقة، اضبط Provider Feature Filter على
"AREA >= 100.
انقر على OK.
يجب أن تُظهر خريطتك الآن فقط المباني التي تطابق معاييرنا الأولية والتي تزيد مساحتها على 100 متر مربع.
6.2.12. ★☆☆ جرّب بنفسك:¶
احفظ حلّك كطبقة جديدة، مستخدمًا الطريقة التي تعلمتها أعلاه. يجب حفظ الملف داخل قاعدة بيانات GeoPackage نفسها، باسم solution.
6.2.13. الخلاصة¶
باستخدام نهج حل المشكلات في نظم المعلومات الجغرافية (GIS) مع أدوات التحليل المتجهي في QGIS، تمكّنت من حل مشكلة متعددة المعايير بسرعة وسهولة.
6.2.14. ما التالي؟¶
في الدرس التالي، سنتعرف على كيفية حساب أقصر مسافة على طول الطرق من نقطة إلى أخرى.