تعمل كثير من الميزات والأدوات المتاحة في QGIS بالطريقة نفسها بغض النظر عن مصدر البيانات المتجهية. ولكن بسبب الاختلافات في مواصفات الصيغ (GeoPackage، وصيغ ملفات ESRI Shapefile و MapInfo و MicroStation، و AutoCAD DXF، وقواعد البيانات PostgreSQL و SpatiaLite و Oracle Spatial و MS SQL Server و SAP HANA Spatial وغيرها الكثير)، قد يتعامل QGIS مع بعض خصائصها بشكل مختلف. يأتي الدعم من خلال مشغّلات GDAL المتجهية. يشرح هذا القسم كيفية التعامل مع بعض هذه الخصوصيات.
ملاحظة
يدعم QGIS أنواع المعالم: النقطة (المتعددة)، والخط (المتعدد)، والمضلع (المتعدد)، و CircularString و CompoundCurve و CurvePolygon و MultiCurve و MultiSurface، وكلها اختياريًا بقيم Z و/أو M.
لاحظ أيضًا أن بعض المشغّلات لا تدعم بعض هذه الأنواع من المعالم، مثل CircularString و CompoundCurve و CurvePolygon و MultiCurve و MultiSurface. وسيقوم QGIS بتحويلها.
الملفات النصية المحدَّدة بفواصل شائعة جدًا وواسعة الاستخدام لبساطتها وسهولة قراءتها -- إذ يمكن عرض البيانات وتعديلها في محرر نصوص عادي. الملف النصي المحدَّد بفواصل هو بيانات جدولية تُفصل أعمدتها بمحرف معيّن وتُفصل صفوفها بفواصل الأسطر. يحتوي الصف الأول عادةً على أسماء الأعمدة. ومن الأنواع الشائعة للملفات النصية المحدَّدة بفواصل ملف CSV (قيم مفصولة بفواصل)، حيث تُفصل الأعمدة بفواصل. ويمكن أن تحتوي الملفات النصية المحدَّدة بفواصل أيضًا على معلومات موضعية (انظر تخزين معلومات الشكل الهندسي في الملفات النصية المحدَّدة بفواصل).
يتيح لك QGIS تحميل ملف نصي محدَّد بفواصل كطبقة أو كجدول عادي (انظر لوحة المتصفح (Browser) أو استيراد ملف نصي محدد بفواصل). تحقق أولًا من أن الملف يستوفي المتطلبات التالية:
يجب أن يحتوي الملف على صف ترويسة محدَّد بفواصل يضم أسماء الحقول. ويجب أن يكون هذا السطر الأول من البيانات (ويُفضل أن يكون الصف الأول في الملف النصي).
إذا كان يجب تفعيل الشكل الهندسي، فيجب أن يحتوي الملف على حقل (أو حقول) تعرّف الشكل الهندسي. ويمكن أن تحمل هذه الحقول أي اسم.
يجب أن تُحدَّد حقول الإحداثيات X و Y (إذا كان الشكل الهندسي معرَّفًا بالإحداثيات) كأرقام. ولا يهم نظام الإحداثيات.
إذا كان لديك ملف CSV يحتوي على أعمدة غير نصية، فيمكن أن يرافقه ملف CSVT (انظر القسم استخدام ملف CSVT للتحكم في تنسيق الحقول).
ملف بيانات نقاط الارتفاع elevp.csv في مجموعة البيانات التجريبية لـ QGIS (انظر القسم تنزيل البيانات التجريبية) مثال على ملف نصي صالح:
X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]
بعض الأمور التي يجب ملاحظتها حول الملف النصي:
يستخدم الملف النصي في المثال ; (الفاصلة المنقوطة) محرفًا فاصلًا (ويمكن استخدام أي محرف لفصل الحقول).
الصف الأول هو صف الترويسة. ويحتوي على الحقول X و Y و ELEV.
لا تُستخدم علامات الاقتباس (") لتحديد الحقول النصية
إحداثيات X موجودة في الحقل X
إحداثيات Y موجودة في الحقل Y
يمكن أن تحتوي الملفات النصية المحدَّدة بفواصل على معلومات الشكل الهندسي بصيغتين رئيسيتين:
المعالم ذات الأشكال الهندسية المنحنية (CircularString و CurvePolygon و CompoundCurve) مدعومة. إليك بعض الأمثلة على أنواع الأشكال الهندسية في ملف نصي محدَّد بفواصل مع أشكال هندسية مرمَّزة بصيغة WKT:
Label;WKT_geom
LineString;LINESTRING(10.0 20.0, 11.0 21.0, 13.0 25.5)
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))
تدعم الملفات النصية المحدَّدة بفواصل أيضًا إحداثيات Z و M في الأشكال الهندسية:
LINESTRINGZ(10.0 20.0 30.0, 11.0 21.0 31.0, 11.0 22.0 30.0)
لمعالجة المعلومات الجغرافية في قاعدة بيانات PostgreSQL، يجب أولًا تثبيت امتداد PostGIS. يوسّع PostGIS قدرات قاعدة البيانات العلائقية PostgreSQL بإضافة دعم لتخزين البيانات الجيومكانية وفهرستها والاستعلام عنها.
لتمكين PostGIS في قاعدة بياناتك عليك تفعيل الامتداد فيها (افتح قاعدة البيانات ونفّذ CREATE EXTENSION postgis;). وكثيرًا ما تُسمّى قواعد البيانات المفعّل فيها PostGIS أيضًا "طبقة PostGIS". باستخدام PostGIS، تعمل الدوال المتجهية مثل التحديد والتعرّف بدقة أكبر مما تعمل به مع طبقات GDAL في QGIS.
نصيحة
طبقات PostGIS
عادةً ما تُعرَّف طبقة PostGIS بمدخل في الجدول geometry_columns. ويمكن لـ QGIS تحميل طبقات ليس لها مدخل في الجدول geometry_columns. ويشمل ذلك الجداول والعروض (views) معًا. راجع دليل PostgreSQL للحصول على معلومات حول إنشاء العروض.
يحتوي هذا القسم على بعض التفاصيل حول كيفية وصول QGIS إلى طبقات PostgreSQL. في أغلب الأحيان، يُفترض أن يوفر لك QGIS ببساطة قائمة بجداول قاعدة البيانات القابلة للتحميل، وسيحمّلها عند الطلب. ولكن إذا واجهت مشكلة في تحميل جدول PostgreSQL في QGIS، فقد تساعدك المعلومات التالية على فهم رسائل QGIS وترشدك إلى كيفية تعديل تعريف جدول PostgreSQL أو العرض (view) للسماح لـ QGIS بتحميله.
ملاحظة
يمكن لقاعدة بيانات PostgreSQL أيضًا تخزين مشاريع QGIS.
يتطلب QGIS أن تحتوي طبقات PostgreSQL على عمود يمكن استخدامه مفتاحًا فريدًا للطبقة. بالنسبة للجداول، يعني هذا عادةً أن الجدول يحتاج إلى مفتاح أساسي، أو إلى عمود عليه قيد التفرّد (unique). في QGIS، يجب أن يكون هذا العمود من النوع int4 (عدد صحيح بحجم 4 بايت). وبدلًا من ذلك، يمكن استخدام العمود ctid مفتاحًا أساسيًا. وإذا افتقر الجدول إلى هذه العناصر، فسيُستخدم العمود oid بدلًا منها. يتحسن الأداء إذا كان العمود مفهرسًا (لاحظ أن المفاتيح الأساسية تُفهرس تلقائيًا في PostgreSQL).
يوفر QGIS مربع اختيار Select at id مفعّلًا افتراضيًا. يجلب هذا الخيار المعرّفات دون البيانات الوصفية، وهو أسرع في معظم الحالات.
إذا كانت طبقة PostgreSQL عرضًا (view)، فالمتطلب نفسه قائم، لكن العروض لا تملك دائمًا مفاتيح أساسية أو أعمدة عليها قيود تفرّد. يجب أن تعرّف حقل مفتاح أساسي (يجب أن يكون عددًا صحيحًا) في نافذة حوار QGIS قبل أن تتمكن من تحميل العرض. وإذا لم يوجد عمود مناسب في العرض، فلن يحمّل QGIS الطبقة. وإذا حدث ذلك، فالحل هو تعديل العرض بحيث يتضمن عمودًا مناسبًا (من نوع عدد صحيح، ويكون إما مفتاحًا أساسيًا أو عليه قيد تفرّد، ويُفضل أن يكون مفهرسًا).
كما في الجدول، يكون مربع الاختيار Select at id مفعّلًا افتراضيًا (انظر أعلاه لمعنى مربع الاختيار). وقد يكون من المنطقي تعطيل هذا الخيار عند استخدام عروض مكلفة حسابيًا.
ملاحظة
الجداول الخارجية في PostgreSQL
الجداول الخارجية (foreign tables) في PostgreSQL غير مدعومة صراحةً من قبل مزوّد بيانات PostgreSQL، وسيُتعامل معها كعرض (view).
إذا أردت عمل نسخة احتياطية من قاعدة بيانات PostgreSQL باستخدام الأمرين pg_dump و pg_restore، وفشلت أنماط الطبقات الافتراضية التي حفظها QGIS في الاستعادة بعد ذلك، فعليك ضبط خيار XML على DOCUMENT قبل أمر الاستعادة:
اعمل نسخة احتياطية بصيغة PLAIN من الجدول layer_style
افتح الملف في محرر نصوص
غيّر السطر SET xmloption = content; إلى SET XML OPTION DOCUMENT;
احفظ الملف
استخدم psql لاستعادة الجدول في قاعدة البيانات الجديدة
يتيح QGIS تصفية المعالم على جانب الخادم مباشرةً. لذلك فعّل
. لن تُرسل إلى قاعدة البيانات إلا التعابير المدعومة. أما التعابير التي تستخدم عوامل أو دوال غير مدعومة فسترجع بسلاسة إلى التقييم المحلي.
تشمل أنواع البيانات التي يدعمها مزوّد بيانات PostgreSQL ما يلي: integer و float و boolean و binary object و varchar و geometry و timestamp و array و hstore و json.
يمكن استيراد البيانات إلى PostgreSQL باستخدام عدة أدوات، منها المتصفح (Browser)، وإضافة DB Manager، وأداتا سطر الأوامر shp2pgsql و ogr2ogr.
يأتي QGIS مع إضافة أساسية باسم
DB Manager. يمكن استخدامها لتحميل البيانات، وهي تدعم المخططات (schemas). انظر القسم إضافة DB Manager لمزيد من المعلومات.
يتضمن PostGIS أداة مساعدة تُسمّى shp2pgsql، يمكن استخدامها لاستيراد مجموعات بيانات بصيغة Shapefile إلى قاعدة بيانات مفعّل فيها PostGIS. فمثلًا، لاستيراد مجموعة بيانات Shapefile باسم lakes.shp إلى قاعدة بيانات PostgreSQL باسم gis_data، استخدم الأمر التالي:
shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data
يُنشئ هذا طبقة جديدة باسم lakes_new في قاعدة البيانات gis_data. سيكون للطبقة الجديدة معرّف مرجع مكاني (SRID) قيمته 2964. انظر القسم العمل مع الإسقاطات لمزيد من المعلومات حول أنظمة الإحداثيات المرجعية والإسقاطات.
نصيحة
تصدير مجموعات البيانات من PostgreSQL
توجد أيضًا أداة لتصدير مجموعات بيانات PostgreSQL ذات البيانات الجغرافية إلى صيغة Shapefile: pgsql2shp. وهي تأتي ضمن توزيعة PostGIS لديك.
إضافةً إلى shp2pgsql و DB Manager، توجد أداة أخرى لإدخال البيانات الجغرافية في PostgreSQL: ogr2ogr. وهي جزء من تثبيت GDAL لديك.
لاستيراد مجموعة بيانات بصيغة Shapefile إلى PostgreSQL، نفّذ ما يلي:
ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp
سيستورد هذا مجموعة البيانات alaska.shp بصيغة Shapefile إلى قاعدة البيانات postgis باستخدام المستخدم postgres وكلمة المرور topsecret على الخادم المضيف myhost.de.
لاحظ أن GDAL يجب أن يكون مبنيًّا مع دعم PostgreSQL. يمكنك التحقق من ذلك بكتابة ما يلي (في
):
ogrinfo --formats | grep -i post
إذا كنت تفضّل استخدام أمر COPY في PostgreSQL بدلًا من طريقة INSERT INTO الافتراضية، يمكنك تصدير متغير البيئة التالي (متاح على الأقل في
و
):
لا يُنشئ ogr2ogr فهارس مكانية كما يفعل shp2pgsl. عليك إنشاؤها يدويًا بعد ذلك باستخدام أمر SQL المعتاد CREATE INDEX كخطوة إضافية (كما هو موضح في القسم التالي تحسين الأداء).
يحتوي هذا القسم على بعض التفاصيل حول كيفية وصول QGIS إلى طبقات SAP HANA. في أغلب الأحيان، يُفترض أن يوفر لك QGIS ببساطة قائمة بجداول قاعدة البيانات وعروضها القابلة للتحميل، وسيحمّلها عند الطلب. ولكن إذا واجهت مشكلة في تحميل جدول أو عرض من SAP HANA في QGIS، فقد تساعدك المعلومات التالية على فهم السبب الجذري والمساعدة في حل المشكلة.
إذا أردت استخدام جميع إمكانات تحرير المعالم في QGIS، فيجب أن يتمكن QGIS من التعرّف على كل معلم في الطبقة دون لبس. داخليًا، يستخدم QGIS عددًا صحيحًا بإشارة بطول 64 بت للتعرّف على المعالم، بينما يُحجز النطاق السالب لأغراض خاصة.
لذلك يتطلب مزوّد بيانات SAP HANA مفتاحًا فريدًا يمكن ربطه بعدد صحيح موجب بطول 64 بت لدعم إمكانات تحرير المعالم في QGIS دعمًا كاملًا. وإذا تعذّر إنشاء هذا الربط، فقد تظل قادرًا على عرض المعالم، لكن التحرير قد لا يعمل.
عند إضافة جدول كطبقة، يستخدم مزوّد بيانات SAP HANA المفتاح الأساسي للجدول لربطه بمعرّف فريد للمعلم. لذلك، للحصول على دعم كامل لتحرير المعالم، يجب أن يتضمن تعريف جدولك مفتاحًا أساسيًا.
يدعم مزوّد بيانات SAP HANA المفاتيح الأساسية متعددة الأعمدة، ولكن إذا أردت أفضل أداء، فيجب أن يكون مفتاحك الأساسي عمودًا واحدًا من النوع INTEGER.
عند إضافة عرض (view) كطبقة، لا يستطيع مزوّد بيانات SAP HANA التعرّف تلقائيًا على الأعمدة التي تميّز المعلم دون لبس. علاوة على ذلك، بعض العروض للقراءة فقط ولا يمكن تحريرها.
للحصول على دعم كامل لتحرير المعالم، يجب أن يكون العرض قابلًا للتحديث (تحقق من العمود IS_READ_ONLY في عرض النظام SYS.VIEWS للعرض المعني)، ويجب أن تزوّد QGIS يدويًا بعمود أو أكثر يميّز المعلم. يمكن تحديد الأعمدة باستخدام ثم اختيار الأعمدة في العمود Feature id. للحصول على أفضل أداء، يجب أن تكون قيمة Feature id عمودًا واحدًا من النوع INTEGER.
نطاقات قيم الحقول قواعدُ تعرّف القيم المقبولة لحقل في جدول قاعدة بيانات. ويُطبَّق ذلك عند العمل مع مصادر بيانات تدعم نطاقات قيم الحقول، مثل GeoPackage و ESRI File Geodatabase. يمكن إدارة نطاقات قيم الحقول من القائمة السياقية للحقل في لوحة Browser. تتوفر الأنواع التالية:
New Range Domain...: ينشئ نطاقًا جديدًا يقيّد قيم الحقل بمدى رقمي محدد.
New Coded Values Domain...: ينشئ نطاقًا جديدًا يقيّد قيم الحقل بقائمة محددة مسبقًا من القيم المقبولة.
New Glob Domain...: ينشئ نطاقًا جديدًا يقيّد قيم الحقل بتلك المطابقة لنمط تعبير نمطي.
عند إنشاء نطاق قيم لحقل، تتوفر الخيارات التالية في نافذة الحوار:
Name: اضبط اسم نطاق قيم الحقل الجديد.
Description: أدخل وصفًا لنطاق قيم الحقل الجديد.
Field type: اختر نوع بيانات نطاق قيم الحقل (مثل Boolean و Text و Integer و Decimal).
سياسات إضافية، متاحة فقط لصيغة ESRI File Geodatabase:
Split policy
Merge policy
ضمن Range، يمكنك ضبط الخيارات التالية:
Minimum: اضبط أدنى قيمة مقبولة للحقل.
Maximum: اضبط أعلى قيمة مقبولة للحقل.
فعّل
Inclusive إذا أردت تضمين القيم الحدّية في المدى المقبول.
Values: انقر على
Add row أو
Remove row لإدارة قائمة القيم المقبولة للحقل.
Pattern: عرّف Glob pattern باستخدام محارف البدل (wildcard).
ملاحظة
عند تحميل الطبقات المتجهية في QGIS، تُكتشف تلقائيًا الحقول ذات
Field Domains (مثل تلك المعرّفة في GeoPackage أو ESRI File Geodatabase). هذه النطاقات قيود على مستوى قاعدة البيانات، أي أن قاعدة البيانات نفسها تفرضها وتنطبق عبر التطبيقات المختلفة، لا في QGIS فقط.