11.2. إنشاء الطبقات¶
يمكن إنشاء الطبقات بطرق عديدة، منها:
طبقات فارغة من البداية
طبقات من طبقات موجودة
طبقات من الحافظة
طبقات ناتجة عن استعلام شبيه بـ SQL يعتمد على طبقة واحدة أو أكثر (الطبقات الافتراضية)
يوفّر QGIS أيضًا أدوات للاستيراد من صيغ مختلفة والتصدير إليها.
11.2.1. إنشاء طبقات متجهية جديدة¶
يتيح لك QGIS إنشاء طبقات جديدة بصيغ مختلفة. ويوفّر أدوات لإنشاء طبقات GeoPackage و Shapefile و SpatiaLite وبصيغة GPX، والطبقات المؤقتة (Temporary Scratch، وتُعرف أيضًا بطبقات الذاكرة). ويُدعم إنشاء طبقة GRASS جديدة من خلال إضافة GRASS.
11.2.1.1. إنشاء طبقة GeoPackage جديدة¶
لإنشاء طبقة GeoPackage جديدة، اضغط الزر
في القائمة أو من شريط الأدوات Data Source Manager. يمكنك أيضًا إنشاء طبقة GeoPackage جديدة عبر Browser Panel باختيار Create Database and Layer.... ستظهر نافذة الحوار New GeoPackage Layer كما في شكل 11.26.
شكل 11.26 نافذة حوار إنشاء طبقة GeoPackage جديدة¶
الخطوة الأولى هي تحديد موقع ملف قاعدة البيانات. يمكنك ذلك بالضغط على الزر ... على يمين الحقل Database واختيار ملف GeoPackage موجود أو إنشاء ملف جديد. سيضيف QGIS تلقائيًا الامتداد الصحيح إلى الاسم الذي تقدّمه.
أعطِ الطبقة / الجدول الجديد اسمًا (Table name)
حدّد Geometry type. إذا لم تكن الطبقة بلا شكل هندسي، يمكنك تحديد ما إذا كان يجب أن Include Z dimension و/أو Include M values.
لإضافة حقول إلى الطبقة التي تنشئها:
أدخل اسم الحقل في Name
اختر نوع البيانات Type. الأنواع المدعومة هي Text data و Whole number (العدد الصحيح integer و integer64) و Decimal number و Date و Date and time و Binary (BLOB) و Boolean.
حسب صيغة البيانات المختارة، أدخل Maximum length للقيم.
كرّر الخطوات السابقة لكل حقل تريد إضافته
يمكنك لاحقًا تغيير ترتيب الحقول باستخدام الزرين
Move Up و
Move Downعندما تكون راضيًا عن البيانات الوصفية، انقر OK. سيضيف QGIS الطبقة الجديدة إلى مفتاح الخريطة، ويمكنك تحريرها كما هو موضح في القسم رقمنة طبقة موجودة.
افتراضيًا، عند إنشاء طبقة GeoPackage، يولّد QGIS عمودًا Feature id column باسم fid يعمل بوصفه المفتاح الأساسي للطبقة، ويمكن تغيير اسمه. أما حقل الشكل الهندسي، إن وُجد، فيُسمّى geometry، ويمكنك اختيار Create a spatial index عليه. توجد هذه الخيارات ضمن Advanced Options مع Layer identifier (اسم قصير مقروء للطبقة) و Layer description.
يمكن إجراء مزيد من إدارة طبقات GeoPackage باستخدام DB Manager.
11.2.1.2. إنشاء طبقة Shapefile جديدة¶
لإنشاء طبقة جديدة بصيغة ESRI Shapefile، اضغط الزر
في القائمة أو من شريط الأدوات Data Source Manager. ستظهر نافذة الحوار New Shapefile Layer كما في شكل 11.27.
حدّد مسارًا واسم ملف باستخدام الزر ... بجوار File name. سيضيف QGIS تلقائيًا الامتداد الصحيح إلى الاسم الذي تقدّمه.
بعد ذلك، حدّد ترميز ملف البيانات File encoding
اختر Geometry type للطبقة: بلا شكل هندسي (ينتج عنه ملف بصيغة
.DBF)، أو نقطة، أو نقاط متعددة، أو خط، أو مضلعحدّد ما إذا كان يجب أن يكون للشكل الهندسي أبعاد إضافية: None أو Z (+ M values) أو M values
شكل 11.27 نافذة حوار إنشاء طبقة Shapefile جديدة¶
لإضافة حقول إلى الطبقة التي تنشئها:
أدخل اسم الحقل في Name
اختر نوع البيانات Type. لا تُدعم إلا أنواع البيانات Decimal number و Whole number و Text data و Date و Boolean.
حسب صيغة البيانات المختارة، أدخل Length و Precision.
كرّر الخطوات السابقة لكل حقل تريد إضافته
يمكنك لاحقًا تغيير ترتيب الحقول باستخدام الزرين
Move Up و
Move Downعندما تكون راضيًا عن البيانات الوصفية، انقر OK. سيضيف QGIS الطبقة الجديدة إلى مفتاح الخريطة، ويمكنك تحريرها كما هو موضح في القسم رقمنة طبقة موجودة.
افتراضيًا، يُضاف عمود أول من نوع عدد صحيح باسم id، ويمكن إزالته.
11.2.1.3. إنشاء طبقة SpatiaLite جديدة¶
لإنشاء طبقة SpatiaLite جديدة، اضغط الزر
في القائمة أو من شريط الأدوات Data Source Manager. ستظهر نافذة الحوار New SpatiaLite Layer كما في شكل 11.28.
شكل 11.28 نافذة حوار إنشاء طبقة SpatiaLite جديدة¶
الخطوة الأولى هي تحديد موقع ملف قاعدة البيانات. يمكنك ذلك بالضغط على الزر ... على يمين الحقل Database واختيار ملف SpatiaLite موجود أو إنشاء ملف جديد. سيضيف QGIS تلقائيًا الامتداد الصحيح إلى الاسم الذي تقدّمه.
أدخل اسمًا (Layer name) للطبقة الجديدة
حدّد Geometry type. إذا لم تكن الطبقة بلا شكل هندسي، يمكنك تحديد ما إذا كان يجب أن Include Z dimension و/أو Include M values.
لإضافة حقول إلى الطبقة التي تنشئها:
أدخل اسم الحقل في Name
اختر نوع البيانات Type. الأنواع المدعومة هي Text data و Whole number و Decimal number و Date و Date time.
كرّر الخطوات السابقة لكل حقل تريد إضافته
يمكنك لاحقًا تغيير ترتيب الحقول باستخدام الزرين
Move Up و
Move Downعندما تكون راضيًا عن البيانات الوصفية، انقر OK. سيضيف QGIS الطبقة الجديدة إلى مفتاح الخريطة، ويمكنك تحريرها كما هو موضح في القسم رقمنة طبقة موجودة.
إن رغبت، يمكنك تحديد
Create an autoincrementing primary key ضمن القسم Advanced Options. ويمكنك أيضًا إعادة تسمية Geometry column (geometry افتراضيًا).
يمكن إجراء مزيد من إدارة طبقات SpatiaLite باستخدام DB Manager.
11.2.1.4. إنشاء طبقة شبكة مثلثية (mesh) جديدة¶
لإنشاء طبقة شبكة مثلثية (mesh) جديدة، اضغط الزر
في القائمة أو من شريط الأدوات Data Source Manager. ستظهر نافذة الحوار New Mesh Layer كما في شكل 11.29.
شكل 11.29 نافذة الحوار لإنشاء طبقة شبكة مثلثية (mesh) جديدة¶
الخطوة الأولى هي تحديد موقع ملف الشبكة المثلثية (mesh). ويمكن ذلك بالضغط على الزر ... الموجود على يمين الحقل File name واختيار ملف شبكة مثلثية موجود أو إنشاء ملف جديد.
أدخل اسمًا (Layer name)، أي الاسم الذي تُعرض به الطبقة في لوحة Layers
اختر File format: صيغ ملفات الشبكة المثلثية (mesh) المدعومة حاليًا هي
2DM Mesh File (*.2dm)وSelafin File (*.slf)وUGRID (*.nc).حدّد نظام الإحداثيات المرجعي الذي يُسند إلى مجموعة البيانات
تُنشئ الخطوات السابقة طبقة فارغة يمكنك لاحقًا رقمنة رؤوس فيها وإضافة مجموعات بيانات إليها. ومع ذلك يمكن أيضًا تهيئة الطبقة باستخدام طبقة شبكة مثلثية (mesh) موجودة، أي ملء الطبقة الجديدة برؤوس أو أوجه من الطبقة الأخرى. للقيام بذلك:
واختر إما Mesh from the current project أو Mesh from a file. تُعرض معلومات عن ملف الشبكة المثلثية (mesh) المحدد للتحقق منها.
لاحظ أن هيكل طبقة الشبكة المثلثية (mesh) فقط هو الذي يُنقل إلى الطبقة الجديدة؛ أما مجموعات بياناتها فلا تُنسخ.
11.2.1.5. إنشاء طبقة GPX جديدة¶
لإنشاء ملف GPX جديد:
في نافذة الحوار، اختر مكان حفظ الملف الجديد وسمّه ثم اضغط Save.
تُضاف ثلاث طبقات جديدة إلى Layers Panel:
طبقة نقطية لرقمنة المواقع (
waypoints) بحقول تخزّن الاسم والارتفاع والتعليق والوصف والمصدر والرابط (url) واسم الرابططبقة خطية لرقمنة تسلسلات المواقع التي تشكّل مسارًا مخططًا (
routes) بحقول تخزّن الاسم والرمز والرقم والتعليق والوصف والمصدر والرابط (url) واسم الرابطوطبقة خطية لتتبّع حركة جهاز الاستقبال عبر الزمن (
tracks) بحقول تخزّن الاسم والرمز والرقم والتعليق والوصف والمصدر والرابط (url) واسم الرابط.
يمكنك الآن تحرير أي منها كما هو موضح في القسم رقمنة طبقة موجودة.
11.2.1.6. إنشاء طبقة مؤقتة (Temporary Scratch Layer) جديدة¶
الطبقات المؤقتة (Temporary Scratch Layers) طبقات في الذاكرة، أي أنها لا تُحفظ على القرص وستُحذف عند إغلاق QGIS. وهي مفيدة لتخزين معالم تحتاجها مؤقتًا أو بوصفها طبقات وسيطة أثناء عمليات المعالجة الجغرافية.
لإنشاء طبقة مؤقتة جديدة، اختر المُدخَل
في القائمة أو في شريط الأدوات Data Source Manager. ستظهر نافذة الحوار New Temporary Scratch Layer كما في شكل 11.30. ثم:
أدخل Layer name
اختر Geometry type. يمكنك هنا إنشاء:
طبقة من نوع
No geometry، تعمل جدولًا بسيطًا،طبقة
PointأوMultiPoint،طبقة
LineString/CompoundCurveأوMultiLineString/MultiCurve،طبقة
Polygon/CurvePolygonأوMultiPolygon/MultiSurface.
بالنسبة للأنواع الهندسية، حدّد أبعاد مجموعة البيانات: حدّد ما إذا كان يجب أن Include Z dimension و/أو Include M values
أضف حقولًا إلى الطبقة. لاحظ أنه، خلافًا لصيغ كثيرة، يمكن إنشاء الطبقات المؤقتة دون أي حقول، لذا فهذه الخطوة اختيارية.
أدخل اسم الحقل في Name
اختر نوع البيانات Type: الأنواع المدعومة هي Text و Whole number و Decimal number و Boolean و Date و Time و Date & Time و Binary (BLOB).
حسب صيغة البيانات المختارة، أدخل Length و Precision
كرّر الخطوات السابقة لكل حقل تحتاج إلى إضافته
يمكنك لاحقًا تغيير ترتيب الحقول باستخدام الزرين
Move Up و
Move Down
عندما تصبح راضيًا عن الإعدادات، انقر على OK. سيضيف QGIS الطبقة الجديدة إلى لوحة Layers، ويمكنك تحريرها كما هو موضّح في القسم رقمنة طبقة موجودة.
شكل 11.30 نافذة حوار إنشاء طبقة مؤقتة جديدة (Temporary Scratch)¶
يمكنك أيضًا إنشاء طبقات مؤقتة معبّأة مسبقًا باستخدام الحافظة مثلًا (انظر إنشاء طبقات جديدة من الحافظة) أو كنتيجة لـ خوارزمية معالجة.
نصيحة
حفظ طبقة الذاكرة على القرص بشكل دائم
لتجنّب فقدان البيانات عند إغلاق مشروع يحتوي على طبقات مؤقتة، يمكنك حفظ هذه الطبقات بأي صيغة متجهية يدعمها QGIS عن طريق:
اختيار البند Make permanent من القائمة السياقية للطبقة؛
استخدام البند من القائمة السياقية أو القائمة .
يفتح كل أمر من هذه الأوامر نافذة الحوار Save Vector Layer as الموضّحة في القسم إنشاء طبقات جديدة من طبقة موجودة، ويحلّ الملف المحفوظ محلّ الملف المؤقت في لوحة Layers.
11.2.2. إنشاء طبقات جديدة من طبقة موجودة¶
يمكن حفظ الطبقات (الشبكية والمتجهية وطبقات السحب النقطية) بصيغة مختلفة و/أو إعادة إسقاطها إلى نظام إحداثيات مرجعي (CRS) مختلف باستخدام القائمة أو بالنقر بزر الفأرة الأيمن على الطبقة في Layers panel واختيار:
للطبقات الشبكية وطبقات السحب النقطية
أو للطبقات المتجهية.
اسحب الطبقة من شجرة الطبقات وأفلتها على مدخل PostgreSQL في Browser Panel. لاحظ أنه يجب أن يكون لديك اتصال PostgreSQL في Browser Panel.
11.2.2.1. المعاملات المشتركة¶
تعرض نافذة الحوار Save Layer as... عدة معاملات لتغيير السلوك عند حفظ الطبقة. ومن المعاملات المشتركة بين الطبقات الشبكية والمتجهية:
File name: موقع الملف على القرص. قد يشير إلى طبقة المخرجات أو إلى حاوية تخزّن الطبقة (مثل الصيغ الشبيهة بقواعد البيانات كـ GeoPackage أو SpatiaLite أو Open Document Spreadsheets).
CRS: يمكن تغييره لإعادة إسقاط البيانات
Extent: يقيّد امتداد المدخلات المراد تصديرها باستخدام عنصر الواجهة extent_selector
Add saved file to map: لإضافة الطبقة الجديدة إلى لوحة الخريطة
غير أن بعض المعاملات خاصة بصيغ معيّنة:
11.2.2.2. المعاملات الخاصة بالطبقات الشبكية¶
بحسب صيغة التصدير، قد لا تتوفر بعض هذه الخيارات:
Output mode (قد يكون بيانات خام أو صورة مرسومة)
Format: يصدّر إلى أي صيغة شبكية يستطيع GDAL الكتابة بها، مثل GeoTiff وGeoPackage وMBTiles وGeospatial PDF وSAGA GIS Binary Grid وIntergraph Raster وESRI .hdr Labelled...
Resolution
Create Options: استخدم خيارات متقدمة (ضغط الملفات، أحجام الكتل، قياس الألوان...) عند إنشاء الملفات، إما من ملفات تعريف الإنشاء المعرّفة مسبقًا المرتبطة بصيغة المخرجات أو بضبط كل معامل على حدة.
إنشاء Pyramids
No data values
شكل 11.31 الحفظ كطبقة شبكية جديدة¶
11.2.2.3. المعاملات الخاصة بالطبقات المتجهية¶
بحسب صيغة التصدير، قد تتوفر بعض هذه الخيارات:
Format: يصدّر إلى أي صيغة متجهية يستطيع GDAL الكتابة بها، مثل GeoPackage وGML وESRI Shapefile وAutoCAD DXF وESRI FileGDB وMapinfo TAB أو MIF وSpatiaLite وCSV وKML وODS، ...
Layer name: يتوفر عندما يشير File name إلى صيغة من نوع الحاوية، ويمثّل هذا المدخل طبقة المخرجات.
Encoding
Save only selected features
Select fields to export and their export options: يتيح تصدير الحقول بأسماء مخصّصة وبإعدادات عنصر واجهة النموذج:
حدّد الصفوف أسفل العمود Name لاختيار الحقول المراد إبقاؤها في طبقة المخرجات، أو اضغط على الزرين Select All أو Deselect All
بدّل حالة مربع الاختيار Use aliases for exported name لملء العمود Export name بالأسماء المستعارة المقابلة للحقول أو لإعادته إلى اسم الحقل الأصلي. كما يتيح النقر المزدوج على خلية تحرير الاسم.
بحسب ما إذا كانت عناصر واجهة مخصّصة مستخدمة في نموذج البيانات الوصفية، يمكنك تفعيل Replace all selected raw field values by displayed values. فمثلًا، إذا طُبّق عنصر الواجهة
value mapعلى حقل، فستحتوي طبقة المخرجات على قيم الوصف بدلًا من القيم الأصلية. ويمكن أيضًا إجراء الاستبدال حقلًا بحقل في العمود Replace with displayed values.
Persist layer metadata: يضمن نسخ أي بيانات تعريفية للطبقة موجودة في الطبقة المصدر وتخزينها:
في الطبقة المُنشأة حديثًا، إذا كانت المخرجات بصيغة GeoPackage
كملف
.qmdإلى جانب طبقة المخرجات، في الصيغ الأخرى. لاحظ أن الصيغ المعتمدة على الملفات التي تدعم أكثر من مجموعة بيانات (مثل SpatiaLite وDXF،...) قد تسلك سلوكًا غير مقصود.
Symbology export: يُستخدم أساسًا لتصدير DXF ولجميع صيغ الملفات التي تدير أنماط معالم OGR (انظر الملاحظة أدناه) مثل صيغ DXF وKML وtab:
No symbology: النمط الافتراضي للتطبيق الذي يقرأ البيانات
Feature symbology: حفظ النمط باستخدام OGR Feature Styles (انظر الملاحظة أدناه)
Symbol Layer symbology: الحفظ باستخدام OGR Feature Styles (انظر الملاحظة أدناه) مع تصدير الشكل الهندسي نفسه عدة مرات إذا استُخدمت عدة طبقات رموز في الترميز
يمكن تطبيق قيمة Scale على الخيارين الأخيرين
ملاحظة
OGR Feature Styles طريقة لتخزين النمط مباشرة في البيانات كسمة مخفية. ولا تستطيع التعامل مع هذا النوع من المعلومات إلا بعض الصيغ، ومنها صيغ ملفات KML وDXF وTAB. وللاطلاع على التفاصيل المتقدمة، يمكنك قراءة وثيقة مواصفات OGR Feature Styles.
Geometry: يمكنك ضبط قدرات الشكل الهندسي لطبقة المخرجات
geometry type: يحتفظ بالشكل الهندسي الأصلي للمعالم عند ضبطه على Automatic، وإلا فإنه يزيله أو يستبدل به أي نوع آخر. يمكنك إضافة عمود شكل هندسي فارغ إلى جدول بيانات وصفية، وإزالة عمود الشكل الهندسي من طبقة مكانية.
Force multi-type: يفرض إنشاء معالم ذات أشكال هندسية متعددة في الطبقة.
Include z-dimension إلى الأشكال الهندسية.
نصيحة
يتيح تجاوز نوع الشكل الهندسي للطبقة أمورًا مثل حفظ جدول بلا أشكال هندسية (مثل ملف .csv) في ملف Shapefile مع أي نوع من الأشكال الهندسية (نقطة، خط، مضلع)، بحيث يمكن بعد ذلك إضافة الأشكال الهندسية يدويًا إلى الصفوف باستخدام الأداة
Add Part.
Datasource Options و Layer Options أو Custom Options التي تتيح لك ضبط معاملات متقدمة بحسب صيغة المخرجات. بعضها موضّح في استكشاف صيغ البيانات والحقول، أما التفاصيل الكاملة فانظر توثيق مشغّلات GDAL. لكل صيغة ملف معاملاتها المخصّصة، فمثلًا لصيغة
GeoJSONاطّلع على توثيق GDAL GeoJSON.
شكل 11.32 الحفظ كطبقة متجهية جديدة¶
عند حفظ طبقة متجهية في ملف موجود، وبحسب قدرات صيغة المخرجات (Geopackage، SpatiaLite، FileGDB...)، يمكن للمستخدم أن يقرّر ما إذا كان سيقوم بـ:
الكتابة فوق الملف بأكمله
الكتابة فوق الطبقة الهدف فقط (اسم الطبقة قابل للضبط)
إلحاق المعالم بالطبقة الهدف الموجودة
إلحاق المعالم، وإضافة حقول جديدة إن وُجدت.
في صيغ مثل ESRI Shapefile وMapInfo .tab، يتوفر أيضًا إلحاق المعالم.
11.2.2.4. المعاملات الخاصة بالسحب النقطية¶
على غرار الطبقات الشبكية والمتجهية، يمكن حفظ طبقات السحب النقطية بصيغة مختلفة و/أو إعادة إسقاطها إلى نظام إحداثيات مرجعي (CRS) مختلف. ويتيح لك ذلك تصدير طبقة سحابة نقطية إلى صيغ متجهية أو صيغ سحب نقطية. الصيغ المدعومة حاليًا هي: Temporary scratch (طبقة ذاكرة)، وGeoPackage، وESRI Shapefile، وDXF، والسحابة النقطية LAS/LAZ. وبالإضافة إلى المعاملات المشتركة المذكورة أعلاه، يتضمن تصدير طبقات السحب النقطية الخيارات التالية:
Filter by Polygon Layer: يتيح لك ترشيح بيانات السحابة النقطية بناءً على طبقة مضلعات.
Elevation Range: يتيح ترشيح بيانات السحابة النقطية بناءً على نطاق Z محدد.
Limit number of points: يوفّر خيارًا لتحديد عدد النقاط المصدّرة من طبقة السحابة النقطية.
شكل 11.33 حفظ طبقة سحابة نقطية كطبقة جديدة¶
11.2.3. إنشاء ملفات DXF جديدة¶
إلى جانب نافذة الحوار Save As... التي توفّر خيارات لتصدير طبقة واحدة إلى صيغة أخرى، بما فيها *.DXF، يوفّر QGIS أداة أخرى لتصدير عدة طبقات كطبقة DXF واحدة. ويمكن الوصول إليها من القائمة .
شكل 11.34 نافذة حوار تصدير مشروع إلى DXF¶
في نافذة الحوار DXF Export:
حدّد ملف الوجهة.
اختر نمط الترميز ومقياس الرسم (انظر ملاحظة OGR Feature Styles)، إن كان ذلك منطبقًا.
اختر Encoding للبيانات.
اختر CRS المراد تطبيقه: ستُعاد إسقاط الطبقات المحددة إلى نظام الإحداثيات المرجعي المعطى.
اختر الطبقات المراد تضمينها في ملفات DXF إما بتحديدها في عنصر واجهة الجدول أو باختيارها تلقائيًا من سمة خريطة موجودة. ويمكن أن يساعد الزران Select All و Deselect All في تحديد البيانات المراد تصديرها بسرعة.
لكل طبقة، يمكنك:
تجاوز اسم طبقة المخرجات دون تغيير طبقة المشروع الأصلية. لذلك، انقر على اسم Layer في نافذة الحوار واكتب اسم المخرجات المراد استخدامه.
Output layer attribute: اختر ما إذا كنت ستصدّر جميع المعالم في طبقة DXF واحدة أو ستعتمد على حقل تُستخدم قيمه لتقسيم المعالم إلى طبقات في مخرجات DXF. وفي الحالة الأخيرة، ستأخذ كل طبقة اسمها من قيمة الحقل المقابلة.
Allow data defined symbol blocks:
Maximum number of symbol blocks: ينشئ كتل رموز حتى الحد المحدد، بدءًا بالكتل التي تحتوي على أكبر عدد من المراجع. أما الرموز الأخرى فتُكتب كما هي. وتعني القيمة
-1عدم وجود حد.
يمكنك اختياريًا أن تختار أيضًا:
Use the layer title as name if set بدلًا من اسم الطبقة نفسه: يؤخذ العنوان من خصائص البيانات التعريفية أو الخادم للطبقة؛
Export lines with zero width: عند تفعيله، تُصدَّر جميع الخطوط بأدنى عرض 0(خط شعري). يساعد هذا على إبقاء الخطوط بأدنى سماكة في الملف بغض النظر عن مستوى التكبير، وقد يكون مفيدًا لإجراء مزيد من التحرير في برامج CAD على ملف dxf المصدَّر، خاصة إذا كانت هناك معالم كثيرة متجاورة على الخريطة.
ملاحظة
أولوية تحديد اسم طبقة المخرجات هي كما يلي:
قيمة الحقل من Output layer attribute
الاسم المُتجاوَز في العمود Layer
الخيار Use the layer title as name if set
اسم الطبقة
يمكن تخزين الإعدادات الحالية المعرّفة في نافذة الحوار DXF Export في ملف XML لإعادة استخدامها في جلسات أخرى. لذلك، يحتوي مربع التحرير والسرد Settings على خيارين: Load Settings from File... و Save Settings to File....
11.2.4. إنشاء طبقات جديدة من الحافظة¶
يمكن لصق المعالم الموجودة في الحافظة في طبقة جديدة. ولفعل ذلك، حدّد بعض المعالم، وانسخها إلى الحافظة، ثم الصقها في طبقة جديدة باستخدام واختيار:
New Vector Layer...: تظهر نافذة الحوار Save vector layer as... (انظر إنشاء طبقات جديدة من طبقة موجودة للاطلاع على المعاملات)
أو Temporary Scratch Layer...: يجب أن تحدد اسمًا للطبقة
تُنشأ طبقة جديدة مملوءة بالمعالم المحددة وبياناتها الوصفية (وتُضاف إلى لوحة الخريطة).
ملاحظة
إنشاء الطبقات من الحافظة ممكن مع المعالم المحددة والمنسوخة داخل QGIS، وكذلك مع المعالم القادمة من تطبيق آخر، ما دامت أشكالها الهندسية معرّفة باستخدام صيغة النص المعروف (WKT).
11.2.5. إنشاء طبقات استعلام SQL¶
إلى جانب تحميل طبقة كاملة في مشروع أو إنشاء طبقات جديدة من الصفر أو من معالم ملصوقة، يمكنك أيضًا تحميل طبقات تُولَّد آنيًا من طبقة أو طبقات أخرى. وهي نتيجة ترشيح متقدم إلى حدٍّ ما باستخدام لغة SQL، يُطبَّق على طبقات مخزّنة بغض النظر عن مزوّد بياناتها أو توفرها في المشروع النشط. وهذا يعني أن الطبقات المؤقتة غير متوافقة مع هذه الميزة. وبحسب المزوّد، يمكن استخدام طبقة واحدة أو أكثر لكتابة الاستعلام. وتبقى الطبقة المولَّدة معتمدة على الطبقة أو الطبقات المشاركة في الاستعلام، وتُحمَّل مع الأيقونة
Filter بجوارها.
يمكن الوصول إلى هذه الميزة:
من لوحة Browser، انقر بزر الفأرة الأيمن على بيانات مدعومة (طبقة عادية، أو اتصال قاعدة بيانات، أو مخطط، أو جدول) واختر البند Execute SQL... من القائمة السياقية.
من لوحة Layers، حدّد طبقة محمّلة، وانقر بزر الفأرة الأيمن واختر البند Execute SQL... من القائمة السياقية.
يفتح هذا نافذة تحتوي على عنصر واجهة مربع نص مركزي يمكنك فيه كتابة استعلامات SQL.
شكل 11.35 تنفيذ استعلامات SQL في نافذة Execute SQL¶
في أعلى نافذة الحوار، يوفّر شريط أدوات مجموعة من الأدوات لإنشاء استعلاماتك وتخزينها والتعامل معها:
Open Queries...: يملأ عنصر واجهة محرر النصوص بمحتويات ملف .sqlموجوديساعدك
Save Queries... و
Save Queries as... على تخزين الاستعلام المكتوب في ملف .sqlيمكن تعديل عبارات الاستعلام باستخدام الأزرار
Cut و
Copy و
Paste. وبالمثل، يمكنك
Undo أو
Redo تغييراتك.يُظهر الزر
Find & Replace في أسفل نافذة الحوار عنصر واجهة يتيح البحث عن سلسلة نصية معيّنة في شيفرة SQL. ويمكن أن يكون البحث حساسًا لحالة الأحرف، وأن يشمل جزءًا من الكلمة أو الكلمة كاملة، وأن يعتمد على تعبير نمطي. ثم يمكن التنقل بين السلاسل التي عُثر عليها، واستبدالها واحدة تلو الأخرى أو جميعها دفعة واحدة.يفتح الزر
History نافذة حوار تخزّن الاستعلامات المنفّذة سابقًا. المزيد في سجل الاستعلامات.كما ذُكر سابقًا، يمكن حفظ الاستعلامات كملف
.sqlمخزّن على القرص. وباستخدام الزر
Store Current Query، يمكن تخزينها أيضًا:في User Profile النشط، داخل الملف المرتبط
QGIS3.ini، وبذلك يمكن الوصول إليها في المشاريع اللاحقةأو كجزء من Current Project.
يؤدي النقر على بند من القائمة المنسدلة للاستعلامات المخزّنة إلى إدراج ذلك الاستعلام في التعبير الجاري كتابته. ويمكن أيضًا حذف البند المخزّن من القائمة المنسدلة.
11.2.5.1. تشغيل الاستعلامات وتحميلها كطبقة¶
في الجزء الأوسط من نافذة الحوار Execute SQL، تبني استعلامك باستخدام صياغة SQL التي يدعمها المزوّد الأساسي (مثل OGR و GeoPackage و PostgreSQL).
افتراضيًا، إذا فُتحت النافذة من مدخل طبقة، يُقدَّم استعلام SQL نموذجي. كما تتوفر أدوات التحرير للتحديد والقص والنسخ واللصق والتراجع والإعادة من القائمة السياقية.
نصيحة
العثور على صياغة SQL المناسبة لمجموعة بياناتك
للعثور على لهجة SQL المناسبة لمجموعة بياناتك، اضغط على الزر ... بجوار الخيار Subset filter في الجزء السفلي من نافذة الحوار.
عندما تصبح جاهزًا، يؤدي الضغط على الزر Execute أسفل منطقة النص إلى تشغيل الاستعلام. ويمكن تظليل جزء من شيفرة SQL لتنفيذ ذلك الجزء فقط عند الضغط على Ctrl+R أو النقر على الزر Execute selection. استخدم الزر Stop لإيقاف التنفيذ.
عند نجاح تنفيذ الاستعلام، يُعرض جدول في أسفل نافذة الحوار يحتوي على المعالم المُعادة. يمكنك تحديد خلايا معيّنة في مجموعة النتائج. استخدم الاختصار Ctrl+C لنسخ الخلايا المحددة إلى الحافظة. وتتوفر البيانات المنسوخة كجدول منسّق، مما يتيح لك لصقها في تطبيقات أخرى، مثل جداول البيانات حيث ستظهر كجدول.
يمكن تحميل الجدول المُعاد في QGIS بتوسيع المجموعة Load as new layer وضبط المعاملات (يعتمد توفرها على مزوّد الطبقة):
Column(s) with unique values للإشارة إلى المفتاح الأساسي للبيانات،
Geometry column: فعّل المربع لتحميل الطبقة كطبقة مكانية، وحدد اسم حقل الشكل الهندسي
Subset filter: يتيح ترشيح النتائج باستخدام عبارة
WHERE. ويمكن كتابتها في مربع النص، أو بناؤها باستخدام منشئ الاستعلامات بعد الضغط على .... تأكد من استخدام حقول متوفرة في طبقة SQL.Avoid selecting by feature ID
Layer name في المشروع
في أي وقت، يمكنك في Layers panel تعديل طبقة المخرجات بالنقر عليها بزر الفأرة الأيمن واختيار Update SQL expression.... تُفتح نافذة الحوار Update SQL معبّأة مسبقًا بالاستعلام المطبّق الذي يمكنك تحريره كما تشاء. وعندما تصبح جاهزًا، اضغط على Update layer وستُعدَّل الطبقة في مكانها.
11.2.5.2. سجل الاستعلامات¶
تعرض نافذة الحوار Query History جميع الاستعلامات المنفّذة سابقًا، مرتبة حسب التاريخ ونوع مزوّد البيانات. ويمكن الوصول إليها من القائمة
Query History…، أو بالضغط على الزر
History في نافذة الحوار Execute SQL.
شكل 11.36 سجل استعلامات SQL المنفّذة¶
في أعلى نافذة الحوار، يمكن استخدام مربع بحث لترشيح الاستعلامات. ويجري البحث في جميع السلاسل النصية المعروضة في سجل الاستعلامات. وإذا فُتحت نافذة الحوار من داخل نافذة Execute SQL، يسبق مربعَ البحث شريط أدوات Execute SQL.
في الأسفل، تسرد مدخلات التواريخ القابلة للطي والمرتبة الاستعلاماتِ المرتبطة بها. ويمكن التعرف على كل استعلام من خلال أمر SQL الخاص به، وعند توسيعه يُظهر:
Connection: مصدر البيانات الذي يستند إليه الاستعلام
Row count: عدد المعالم المُعادة
Execution time
مرّر مؤشر الفأرة فوق أحد المدخلات فيعرض تلميح الأداة الاستعلام كاملًا. وبالمثل، يؤدي تحديد مدخل أيضًا إلى عرضه في الجزء السفلي من نافذة الحوار. ويمكنك التفاعل مع النص ونسخه كله أو جزء منه.
انقر نقرًا مزدوجًا على مدخل أمر SQL فتُفتح نافذة الحوار Execute SQL معبّأة بالاستعلام الذي نقرت عليه، ويُكتب فوق أي استعلام قيد الكتابة. وانقر بزر الفأرة الأيمن على مدخل أمر SQL ويمكنك إما:
Load SQL Command…: يحمّل الأمر المستهدف في نافذة الحوار Execute SQL، ليحلّ محل أي استعلام موجود. وهو مماثل للنقر المزدوج على المدخل.
Copy SQL Command ثم لصقه حيثما تشاء.
11.2.6. إنشاء الطبقات الافتراضية¶
الطبقة الافتراضية نوع خاص من الطبقات المتجهية. فهي تتيح لك تعريف طبقة كنتيجة لاستعلام SQL يشمل أي عدد من الطبقات المتجهية الأخرى التي يستطيع QGIS فتحها. ولا تحمل الطبقات الافتراضية بيانات بذاتها، ويمكن النظر إليها كطرق عرض (views).
لإنشاء طبقة افتراضية، افتح نافذة حوار إنشاء الطبقة الافتراضية عن طريق:
تفعيل التبويب
Add Virtual Layer في نافذة الحوار Data Source Manager؛أو استخدام شجرة نافذة الحوار DB Manager.
تتيح لك نافذة الحوار تحديد Layer name و Query بلغة SQL. ويمكن للاستعلام استخدام اسم (أو معرّف) الطبقات المتجهية المحمّلة كجداول، وأسماء حقولها كأعمدة.
على سبيل المثال، إذا كانت لديك طبقة تسمى airports، يمكنك إنشاء طبقة افتراضية جديدة تسمى public_airports باستعلام SQL مثل:
SELECT *
FROM airports
WHERE USE = "Civilian/Public"
سيُنفَّذ استعلام SQL بغض النظر عن المزوّد الأساسي للطبقة airports، حتى لو كان هذا المزوّد لا يدعم استعلامات SQL مباشرة.
شكل 11.37 نافذة حوار إنشاء الطبقات الافتراضية¶
يمكن أيضًا إنشاء عمليات ربط واستعلامات معقدة، مثلًا لربط المطارات بمعلومات الدول:
SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name
ملاحظة
يمكن أيضًا إنشاء طبقات افتراضية باستخدام نافذة SQL في إضافة DB Manager.
11.2.6.1. تضمين الطبقات لاستخدامها في الاستعلامات¶
إلى جانب الطبقات المتجهية المتوفرة في لوحة الخريطة، يمكن للمستخدم إضافة طبقات إلى القائمة Embedded layers، والتي يمكن استخدامها في الاستعلامات دون الحاجة إلى عرضها في لوحة الخريطة أو في لوحة الطبقات.
لتضمين طبقة، انقر على Add وحدد Local name و Provider و Encoding ومسار Source.
يتيح الزر Import إضافة الطبقات الموجودة في لوحة الخريطة إلى قائمة الطبقات المضمّنة. ويمكن بعد ذلك إزالة هذه الطبقات من لوحة الطبقات دون إفساد الاستعلامات الموجودة.
11.2.6.2. لغة الاستعلام المدعومة¶
يعتمد المحرّك الأساسي في عمله على SQLite وSpatiaLite.
وهذا يعني أنه يمكنك استخدام كل ما تفهمه نسخة SQLite المثبتة محليًا لديك من SQL.
يمكن أيضًا استخدام دوال SQLite والدوال المكانية من SpatiaLite في استعلام الطبقة الافتراضية. فمثلًا، يمكن إنشاء طبقة نقاط من طبقة تحتوي على بيانات وصفية فقط باستعلام مشابه لما يلي:
SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates
يمكن أيضًا استخدام دوال تعبيرات QGIS في استعلام الطبقة الافتراضية.
للإشارة إلى عمود الشكل الهندسي لطبقة، استخدم الاسم geometry.
على عكس استعلام SQL الخالص، يجب تسمية جميع حقول استعلام الطبقة الافتراضية. لا تنسَ استخدام الكلمة المفتاحية as لتسمية أعمدتك إذا كانت ناتجة عن عملية حسابية أو استدعاء دالة.
11.2.6.3. مسائل الأداء¶
بالمعاملات الافتراضية، سيبذل محرّك الطبقة الافتراضية قصارى جهده لاكتشاف نوع الأعمدة المختلفة في الاستعلام، بما في ذلك نوع عمود الشكل الهندسي إن وُجد.
يتم ذلك بفحص الاستعلام ذاتيًا عندما يكون ذلك ممكنًا، أو بجلب الصف الأول من الاستعلام (LIMIT 1) كحل أخير. وقد يكون جلب الصف الأول من النتيجة لمجرد إنشاء الطبقة غير مرغوب فيه لأسباب تتعلق بالأداء.
معاملات نافذة حوار الإنشاء:
Unique identifier column: يحدد حقلًا من الاستعلام يمثّل قيمًا صحيحة فريدة يمكن لـ QGIS استخدامها كمعرّفات للصفوف. افتراضيًا، تُستخدم قيمة صحيحة متزايدة تلقائيًا. ويؤدي تعريف عمود معرّف فريد إلى تسريع تحديد الصفوف حسب المعرّف.
No geometry: يفرض على الطبقة الافتراضية تجاهل أي حقل شكل هندسي. وتكون الطبقة الناتجة طبقة بيانات وصفية فقط.
Column الشكل الهندسي: يحدد اسم عمود الشكل الهندسي.
Type الشكل الهندسي: يحدد نوع الشكل الهندسي.
CRS الشكل الهندسي: يحدد نظام الإحداثيات المرجعي للطبقة الافتراضية.
11.2.6.4. تعليقات خاصة¶
يحاول محرّك الطبقة الافتراضية تحديد نوع كل عمود في الاستعلام. وإذا فشل، يُجلب الصف الأول من الاستعلام لتحديد أنواع الأعمدة.
يمكن تحديد نوع عمود معيّن مباشرة في الاستعلام باستخدام بعض التعليقات الخاصة.
الصياغة هي التالية: /*:type*/. ويجب وضعها بعد اسم العمود مباشرة. ويمكن أن يكون type إما int للأعداد الصحيحة، أو real للأعداد العشرية، أو text.
على سبيل المثال:
SELECT id+1 as nid /*:int*/
FROM table
يمكن أيضًا ضبط نوع عمود الشكل الهندسي ونظام إحداثياته المرجعي بفضل تعليقات خاصة بالصياغة التالية /*:gtype:srid*/، حيث gtype هو نوع الشكل الهندسي (point أو linestring أو polygon أو multipoint أو multilinestring أو multipolygon) و srid عدد صحيح يمثّل رمز EPSG لنظام إحداثيات مرجعي.
11.2.6.5. استخدام الفهارس¶
عند طلب طبقة عبر طبقة افتراضية، ستُستخدم فهارس الطبقة المصدر بالطرق التالية:
إذا استُخدم المسند
=على عمود المفتاح الأساسي للطبقة، فسيُطلب من مزوّد البيانات الأساسي معرّف محدد (FilterFid)لأي مسندات أخرى (
>و<=و!=، إلخ) أو على عمود بلا مفتاح أساسي، سيُستخدم طلب مبني من تعبير لمخاطبة مزوّد البيانات المتجهية الأساسي. وهذا يعني أنه قد تُستخدم الفهارس لدى مزوّدي قواعد البيانات إن وُجدت.
توجد صياغة خاصة للتعامل مع المسندات المكانية في الطلبات وتؤدي إلى استخدام فهرس مكاني: إذ يوجد عمود مخفي اسمه _search_frame_ لكل طبقة افتراضية. ويمكن مقارنة هذا العمود بالمساواة مع مستطيل محيط. مثال:
SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)
تتسارع المسندات الثنائية المكانية مثل ST_Intersects بشكل ملحوظ عند استخدامها مع صياغة الفهرس المكاني هذه.



