17.2. الدرس: استخدام DB Manager للعمل مع قواعد البيانات المكانية في QGIS

رأينا من قبل كيف ننفذ عمليات كثيرة على قواعد البيانات باستخدام QGIS وأدوات أخرى، وقد حان الوقت للتعرف على أداة DB Manager التي توفر كثيرًا من هذه الوظائف نفسها، إضافة إلى أدوات أكثر توجهًا نحو الإدارة.

هدف هذا الدرس: تعلّم كيفية التفاعل مع قواعد البيانات المكانية باستخدام DB Manager في QGIS.

17.2.1. ★☆☆ تابع معنا: إدارة قواعد بيانات PostgreSQL باستخدام DB Manager

افتح أولًا واجهة DB Manager باختيار Database ► DB Manager ► DB Manager من القائمة أو باختيار أيقونة dbManager DB Manager في شريط الأدوات.

يُفترض أن ترى الاتصالات التي أعددناها سابقًا، وأن تتمكن من توسيع قسم myPG ومخططه public لرؤية الجداول التي عملنا عليها في الأقسام السابقة.

أول ما قد تلاحظه أنك صرت ترى بعض البيانات الوصفية (metadata) عن المخططات (Schemas) الموجودة في قاعدة بياناتك.

../../../_images/db_manager_dialog.png

المخططات وسيلة لتجميع جداول البيانات والكائنات الأخرى في قاعدة بيانات PostgreSQL، وحاوية للصلاحيات والقيود الأخرى. إدارة مخططات PostgreSQL خارج نطاق هذا الدليل، لكن يمكنك العثور على مزيد من المعلومات عنها في توثيق PostgreSQL حول المخططات. يمكنك استخدام DB Manager لإنشاء مخططات جديدة، لكنك ستحتاج إلى أداة مثل pgAdmin III أو واجهة سطر الأوامر لإدارتها بفاعلية.

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

من المفيد أولًا الاطلاع ببساطة على البيانات الوصفية لجدول بالنقر على اسمه في الشجرة والنظر في تبويب Info.

../../../_images/table_info.png

في هذه اللوحة يمكنك رؤية General Info (المعلومات العامة) عن الجدول، إضافة إلى المعلومات التي يحتفظ بها امتداد PostGIS عن الشكل الهندسي والنظام المرجعي المكاني.

إذا مررت إلى الأسفل في تبويب Info، يمكنك رؤية مزيد من المعلومات عن Fields و Constraints و Indexes للجدول الذي تعرضه.

../../../_images/table_info_fields.png

ومن المفيد جدًّا أيضًا استخدام DB Manager للاطلاع ببساطة على السجلات في قاعدة البيانات، بالطريقة نفسها تقريبًا التي تعرض بها جدول البيانات الوصفية لطبقة في شجرة الطبقات. يمكنك تصفح البيانات باختيار تبويب Table.

../../../_images/table_panel.png

هناك أيضًا تبويب Preview الذي يعرض لك بيانات الطبقة في معاينة خريطة.

يؤدي النقر بزر الفأرة الأيمن على طبقة في الشجرة ثم النقر على Add to Canvas إلى إضافة هذه الطبقة إلى خريطتك.

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

  1. حدّد الجدول الذي تريد تحريره في الشجرة

  2. اختر Table ► Edit Table من القائمة لفتح نافذة الحوار Table Properties.

    ../../../_images/edit_table.png

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

باستخدام تبويب Constraints، يمكنك تحديد الحقول المستخدمة مفتاحًا أساسيًا، أو حذف القيود الموجودة.

../../../_images/constraints_panel.png

يمكن استخدام تبويب Indexes لإضافة الفهارس المكانية والعادية وحذفها.

../../../_images/indexes_panel.png

17.2.2. ★☆☆ تابع معنا: إنشاء جدول جديد

بعد أن مررنا بعملية العمل مع الجداول الموجودة في قاعدة بياناتنا، لنستخدم DB Manager لإنشاء جدول جديد.

  1. إن لم تكن نافذة DB Manager مفتوحة، فافتحها ووسّع الشجرة حتى ترى قائمة الجداول الموجودة في قاعدة بياناتك.

  2. من القائمة اختر Table --> Create Table لفتح نافذة الحوار Create Table.

  3. استخدم المخطط الافتراضي Public وسمِّ الجدول places.

  4. أضف الحقول id و place_name و elevation كما هو موضح أدناه

  5. تأكد من تعيين الحقل id مفتاحًا أساسيًا.

  6. فعّل مربع الاختيار Create geometry column وتأكد من ضبطه على النوع POINT، واترك اسمه geom، وحدد 4326 قيمةً لـ SRID.

  7. فعّل مربع الاختيار Create spatial index وانقر على Create لإنشاء الجدول.

    ../../../_images/create_table.png
  8. أغلق نافذة الحوار التي تُعلمك بإنشاء الجدول، وانقر على Close لإغلاق نافذة الحوار Create Table.

يمكنك الآن فحص جدولك في DB Manager، وستجد بالطبع أنه لا يحتوي على بيانات. ومن هنا يمكنك تفعيل Toggle Editing من قائمة الطبقة والبدء في إضافة أماكن إلى جدولك.

17.2.3. ★☆☆ تابع معنا: الإدارة الأساسية لقاعدة البيانات

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

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

لنلقِ نظرة على كيفية تنفيذ الأمر VACUUM ANALYZE من داخل DB Manager.

  1. حدّد أحد جداولك في شجرة DB Manager

  2. اختر Table ► Run Vacuum Analyze من القائمة

سينفذ PostgreSQL العملية الآن. وقد يستغرق إكمالها بعض الوقت بحسب حجم جدولك.

يمكنك العثور على مزيد من المعلومات عن عملية VACUUM ANALYZE في توثيق PostgreSQL حول VACUUM ANALYZE.

17.2.4. ★☆☆ تابع معنا: تنفيذ استعلامات SQL باستخدام DB Manager

يوفر DB Manager أيضًا وسيلة لكتابة استعلامات على جداول قاعدة بياناتك وعرض نتائجها. رأينا هذا النوع من الوظائف من قبل في لوحة Browser، لكن لننظر فيه مرة أخرى هنا باستخدام DB Manager.

  1. حدّد الجدول lines في الشجرة.

  2. اختر زر SQL window في شريط أدوات DB Manager.

    ../../../_images/sql_window_btn.png
  3. اكتب SQL query التالي في المساحة المخصصة:

    select * from lines where roadtype = 'major';
    
  4. انقر على زر Execute (F5) لتشغيل الاستعلام.

  5. يُفترض أن ترى الآن السجلات المطابقة في لوحة Result.

    ../../../_images/sql_results.png
  6. فعّل مربع الاختيار Load as new layer لإضافة النتائج إلى خريطتك.

  7. اختر العمود id بوصفه Column with unique integer values والعمود geom بوصفه Geometry column.

  8. أدخل roads_primary في Layer name (prefix).

  9. انقر على Load now! لتحميل النتائج طبقةً جديدة في خريطتك.

    ../../../_images/sql_add_to_map.png

تُعرض الآن على خريطتك الطبقات المطابقة لاستعلامك. ويمكنك بالطبع استخدام أداة الاستعلام هذه لتنفيذ أي أمر SQL، بما في ذلك كثير من الأوامر التي تناولناها في الوحدات والأقسام السابقة.

17.2.5. استيراد البيانات إلى قاعدة بيانات باستخدام DB Manager

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

  1. انقر على زر Import layer/file في شريط الأدوات في نافذة الحوار DB Manager.

    ../../../_images/import_layer_btn.png
  2. اختر الملف urban_33S.shp من exercise_data/projected_data مجموعةَ بيانات الإدخال

  3. انقر على زر Update Options لملء بعض قيم النموذج مسبقًا.

  4. تأكد من تحديد الخيار Create new table

  5. حدد Source SRID بالقيمة 32722 و Target SRID بالقيمة 4326

  6. فعّل مربع الاختيار Create Spatial Index

  7. انقر على OK لإجراء الاستيراد

    ../../../_images/import_urban.png
  8. أغلق نافذة الحوار التي تُعلمك بنجاح الاستيراد

  9. انقر على زر Refresh في شريط أدوات DB Manager

يمكنك الآن فحص الجدول في قاعدة بياناتك بالنقر عليه في الشجرة. تحقق من أن البيانات أُعيد إسقاطها بالتأكد من أن Spatial ref: مدرج على أنه WGS 84 (4326).

../../../_images/urban_info.png

يؤدي النقر بزر الفأرة الأيمن على الجدول في الشجرة واختيار Add to Canvas إلى إضافة الجدول طبقةً في خريطتك.

17.2.6. تصدير البيانات من قاعدة بيانات باستخدام DB Manager

يمكن بالطبع استخدام DB Manager أيضًا لتصدير البيانات من قواعد بياناتك المكانية، فلنلقِ نظرة على كيفية فعل ذلك.

  1. حدّد الطبقة lines في الشجرة وانقر على زر Export to File في شريط الأدوات لفتح نافذة الحوار Export to vector file.

  2. انقر على زر ... لاختيار Output file واحفظ البيانات في المجلد exercise_data باسم urban_4326.

  3. اضبط Target SRID على 4326.

  4. انقر على OK لبدء التصدير.

    ../../../_images/export_to_vector.png
  5. أغلق نافذة الحوار التي تُعلمك بنجاح التصدير، ثم أغلق DB Manager.

يمكنك الآن فحص ملف Shapefile الذي أنشأته باستخدام لوحة المتصفح.

../../../_images/inspect_vector_output.png

17.2.7. الخلاصة

رأيت الآن كيف تستخدم واجهة DB Manager في QGIS لإدارة قواعد بياناتك المكانية، وتنفيذ استعلامات SQL على بياناتك، وكيف تستورد البيانات وتصدّرها.

17.2.8. ما التالي؟

سنتعرّف بعد ذلك على كيفية استخدام كثير من هذه التقنيات نفسها مع قواعد بيانات SpatiaLite.