11.4. استكشاف صيغ البيانات والحقول

11.4.1. البيانات الشبكية

البيانات الشبكية في نظم المعلومات الجغرافية (GIS) هي مصفوفات من خلايا منفصلة تمثل معالم أو ظواهر على سطح الأرض أو فوقه أو تحته. لكل خلية في الشبكة الحجم نفسه، والخلايا عادةً مستطيلة (وفي QGIS تكون دائمًا مستطيلة). من مجموعات البيانات الشبكية النموذجية بيانات الاستشعار عن بعد، كالتصوير الجوي أو صور الأقمار الصناعية، والبيانات المنمذجة كالارتفاع أو درجة الحرارة.

بخلاف البيانات المتجهية، لا يكون للبيانات الشبكية عادةً سجل قاعدة بيانات مرتبط بكل خلية. وهي مُرمَّزة جغرافيًا بالدقة المكانية للبكسل وبإحداثيات X/Y لبكسل في أحد أركان الطبقة الشبكية. وهذا يتيح لـ QGIS وضع البيانات في موضعها الصحيح على لوحة الخريطة.

صيغة GeoPackage ملائمة لتخزين البيانات الشبكية عند العمل مع QGIS. وتُعد صيغة GeoTiff الشائعة والقوية بديلًا جيدًا.

يستفيد QGIS من معلومات الإسناد الجغرافي داخل الطبقة الشبكية (مثل GeoTiff) أو من ملف عالمي (world file) مرافق لعرض البيانات بشكل صحيح.

11.4.2. البيانات المتجهية

تعمل كثير من الميزات والأدوات المتاحة في 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 بتحويلها.

11.4.2.1. GeoPackage

صيغة GeoPackage (GPKG) مستقلة عن المنصة، وهي مُنفَّذة كحاوية قاعدة بيانات SQLite، ويمكن استخدامها لتخزين البيانات المتجهية والشبكية معًا. عرّف هذه الصيغةَ الاتحادُ الجيومكاني المفتوح (OGC)، ونُشرت عام 2014.

يمكن استخدام GeoPackage لتخزين ما يلي في قاعدة بيانات SQLite:

  • المعالم المتجهية

  • مجموعات مصفوفات البلاطات للصور والخرائط الشبكية

  • البيانات الوصفية (بيانات غير مكانية)

  • الامتدادات (extensions)

منذ الإصدار 3.8 من QGIS، يمكن لـ GeoPackage أيضًا تخزين مشاريع QGIS. ويمكن أن تحتوي طبقات GeoPackage على حقول JSON.

GeoPackage هي الصيغة الافتراضية للبيانات المتجهية في QGIS.

11.4.2.2. صيغة ESRI Shapefile

لا تزال صيغة ESRI Shapefile من أكثر صيغ الملفات المتجهية استخدامًا، رغم أن لها بعض القيود مقارنةً مثلًا بـ GeoPackage و SpatiaLite.

تتكون مجموعة بيانات بصيغة ESRI Shapefile من عدة ملفات. الثلاثة التالية إلزامية:

  1. ملف .shp الذي يحتوي على الأشكال الهندسية للمعالم

  2. ملف .dbf الذي يحتوي على البيانات الوصفية بصيغة dBase

  3. ملف الفهرس .shx

يمكن أن تتضمن مجموعة بيانات بصيغة ESRI Shapefile أيضًا ملفًا بلاحقة .prj يحتوي على معلومات الإسقاط. ورغم أن وجود ملف الإسقاط مفيد جدًا، فإنه ليس إلزاميًا. ويمكن أن تحتوي مجموعة بيانات Shapefile على ملفات إضافية. لمزيد من التفاصيل، راجع المواصفات التقنية من ESRI.

يدعم GDAL القراءة والكتابة لصيغة ESRI Shapefile المضغوطة (shz و shp.zip).

تحسين أداء مجموعات البيانات بصيغة ESRI Shapefile

لتحسين أداء رسم مجموعة بيانات بصيغة ESRI Shapefile، يمكنك إنشاء فهرس مكاني. يحسّن الفهرس المكاني سرعة التكبير والتحريك معًا. للفهارس المكانية التي يستخدمها QGIS الامتداد .qix.

اتبع الخطوات التالية لإنشاء الفهرس:

  1. حمّل مجموعة بيانات بصيغة ESRI Shapefile (انظر لوحة المتصفح (Browser))

  2. افتح نافذة الحوار Layer Properties بالنقر المزدوج على اسم الطبقة في مفتاح الخريطة أو بالنقر بزر الفأرة الأيمن واختيار Properties... من القائمة السياقية

  3. في تبويب Source، انقر زر Create Spatial Index

مشكلة في تحميل ملف .prj

إذا حمّلت مجموعة بيانات بصيغة ESRI Shapefile مع ملف .prj ولم يتمكن QGIS من قراءة نظام الإحداثيات المرجعي من ذلك الملف، فستحتاج إلى تعريف الإسقاط الصحيح يدويًا في تبويب Layer Properties ► Source للطبقة بالنقر على زر setProjection Select CRS. يعود ذلك إلى أن ملفات .prj لا توفر في الغالب معاملات الإسقاط الكاملة كما يستخدمها QGIS وكما تُسرد في نافذة الحوار CRS.

وللسبب نفسه، إذا أنشأت مجموعة بيانات جديدة بصيغة ESRI Shapefile باستخدام QGIS، يُنشأ ملفا إسقاط مختلفان: ملف .prj بمعاملات إسقاط محدودة متوافق مع برمجيات ESRI، وملف .qpj يوفر جميع معاملات نظام الإحداثيات المرجعي. وكلما وجد QGIS ملف .qpj فسيستخدمه بدلًا من .prj.

11.4.2.3. الملفات النصية المحدَّدة بفواصل

الملفات النصية المحدَّدة بفواصل شائعة جدًا وواسعة الاستخدام لبساطتها وسهولة قراءتها -- إذ يمكن عرض البيانات وتعديلها في محرر نصوص عادي. الملف النصي المحدَّد بفواصل هو بيانات جدولية تُفصل أعمدتها بمحرف معيّن وتُفصل صفوفها بفواصل الأسطر. يحتوي الصف الأول عادةً على أسماء الأعمدة. ومن الأنواع الشائعة للملفات النصية المحدَّدة بفواصل ملف CSV (قيم مفصولة بفواصل)، حيث تُفصل الأعمدة بفواصل. ويمكن أن تحتوي الملفات النصية المحدَّدة بفواصل أيضًا على معلومات موضعية (انظر تخزين معلومات الشكل الهندسي في الملفات النصية المحدَّدة بفواصل).

يتيح لك QGIS تحميل ملف نصي محدَّد بفواصل كطبقة أو كجدول عادي (انظر لوحة المتصفح (Browser) أو استيراد ملف نصي محدد بفواصل). تحقق أولًا من أن الملف يستوفي المتطلبات التالية:

  1. يجب أن يحتوي الملف على صف ترويسة محدَّد بفواصل يضم أسماء الحقول. ويجب أن يكون هذا السطر الأول من البيانات (ويُفضل أن يكون الصف الأول في الملف النصي).

  2. إذا كان يجب تفعيل الشكل الهندسي، فيجب أن يحتوي الملف على حقل (أو حقول) تعرّف الشكل الهندسي. ويمكن أن تحمل هذه الحقول أي اسم.

  3. يجب أن تُحدَّد حقول الإحداثيات X و Y (إذا كان الشكل الهندسي معرَّفًا بالإحداثيات) كأرقام. ولا يهم نظام الإحداثيات.

  4. إذا كان لديك ملف CSV يحتوي على أعمدة غير نصية، فيمكن أن يرافقه ملف CSVT (انظر القسم استخدام ملف CSVT للتحكم في تنسيق الحقول).

ملف بيانات نقاط الارتفاع elevp.csv في مجموعة البيانات التجريبية لـ QGIS (انظر القسم تنزيل البيانات التجريبية) مثال على ملف نصي صالح:

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

بعض الأمور التي يجب ملاحظتها حول الملف النصي:

  1. يستخدم الملف النصي في المثال ; (الفاصلة المنقوطة) محرفًا فاصلًا (ويمكن استخدام أي محرف لفصل الحقول).

  2. الصف الأول هو صف الترويسة. ويحتوي على الحقول X و Y و ELEV.

  3. لا تُستخدم علامات الاقتباس (") لتحديد الحقول النصية

  4. إحداثيات X موجودة في الحقل X

  5. إحداثيات Y موجودة في الحقل Y

تخزين معلومات الشكل الهندسي في الملفات النصية المحدَّدة بفواصل

يمكن أن تحتوي الملفات النصية المحدَّدة بفواصل على معلومات الشكل الهندسي بصيغتين رئيسيتين:

  • كإحداثيات في أعمدة منفصلة (مثل Xcol و Ycol...)، لبيانات الأشكال الهندسية النقطية؛

  • كتمثيل نصي معروف (WKT) للشكل الهندسي في عمود واحد، لأي نوع من الأشكال الهندسية.

المعالم ذات الأشكال الهندسية المنحنية (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)

استخدام ملف CSVT للتحكم في تنسيق الحقول

عند تحميل ملفات CSV، يفترض مشغّل GDAL أن جميع الحقول سلاسل نصية (أي نص) ما لم يُبلَّغ بغير ذلك. يمكنك إنشاء ملف CSVT لإبلاغ GDAL (و QGIS) بنوع بيانات كل عمود:

النوع

اﻷسم

مثال

عدد صحيح

عدد صحيح

4

منطقية

Integer(Boolean)

true

عدد عشري

Real

3.456

تاريخ

Date (YYYY-MM-DD)

2016-07-28

الوقت

Time (HH:MM:SS+nn)

18:33:12+00

التاريخ والوقت

DateTime (YYYY-MM-DD HH:MM:SS+nn)

2016-07-28 18:33:12+00

CoordX

CoordX

8.8249

CoordY

CoordY

47.2274

Point(X)

Point(X)

8.8249

Point(Y)

Point(Y)

47.2274

WKT

WKT

POINT(15 20)

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

"Integer","Real","String"

يمكنك حتى تحديد العرض والدقة لكل عمود، مثلًا:

"Integer(6)","Real(5.5)","String(22)"

يُحفظ هذا الملف في المجلد نفسه الذي فيه ملف .csv، وبالاسم نفسه، ولكن بالامتداد .csvt.

يمكنك العثور على مزيد من المعلومات في مشغّل GDAL CSV.

نصيحة

اكتشاف أنواع الحقول

بدلًا من استخدام ملف CSVT لتحديد أنواع البيانات، يتيح QGIS إمكانية اكتشاف أنواع الحقول تلقائيًا وتغيير الأنواع المفترضة للحقول.

11.4.2.4. قاعدة بيانات PostgreSQL

لمعالجة المعلومات الجغرافية في قاعدة بيانات 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).

جدول layer_style في QGIS والنسخ الاحتياطي لقاعدة البيانات

إذا أردت عمل نسخة احتياطية من قاعدة بيانات PostgreSQL باستخدام الأمرين pg_dump و pg_restore، وفشلت أنماط الطبقات الافتراضية التي حفظها QGIS في الاستعادة بعد ذلك، فعليك ضبط خيار XML على DOCUMENT قبل أمر الاستعادة:

  1. اعمل نسخة احتياطية بصيغة PLAIN من الجدول layer_style

  2. افتح الملف في محرر نصوص

  3. غيّر السطر SET xmloption = content; إلى SET XML OPTION DOCUMENT;

  4. احفظ الملف

  5. استخدم psql لاستعادة الجدول في قاعدة البيانات الجديدة

التصفية على جانب قاعدة البيانات

يتيح QGIS تصفية المعالم على جانب الخادم مباشرةً. لذلك فعّل Settings ► Options ► Data Sources ► checkbox Execute expressions on server-side if possible. لن تُرسل إلى قاعدة البيانات إلا التعابير المدعومة. أما التعابير التي تستخدم عوامل أو دوال غير مدعومة فسترجع بسلاسة إلى التقييم المحلي.

دعم أنواع بيانات PostgreSQL

تشمل أنواع البيانات التي يدعمها مزوّد بيانات PostgreSQL ما يلي: integer و float و boolean و binary object و varchar و geometry و timestamp و array و hstore و json.

استيراد البيانات إلى PostgreSQL

يمكن استيراد البيانات إلى PostgreSQL باستخدام عدة أدوات، منها المتصفح (Browser)، وإضافة DB Manager، وأداتا سطر الأوامر shp2pgsql و ogr2ogr.

DB Manager

يأتي QGIS مع إضافة أساسية باسم dbManager DB Manager. يمكن استخدامها لتحميل البيانات، وهي تدعم المخططات (schemas). انظر القسم إضافة DB Manager لمزيد من المعلومات.

shp2pgsql

يتضمن 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 لديك.

ogr2ogr

إضافةً إلى 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. يمكنك التحقق من ذلك بكتابة ما يلي (في nix):

ogrinfo --formats | grep -i post

إذا كنت تفضّل استخدام أمر COPY في PostgreSQL بدلًا من طريقة INSERT INTO الافتراضية، يمكنك تصدير متغير البيئة التالي (متاح على الأقل في nix و osx):

export PG_USE_COPY=YES

لا يُنشئ ogr2ogr فهارس مكانية كما يفعل shp2pgsl. عليك إنشاؤها يدويًا بعد ذلك باستخدام أمر SQL المعتاد CREATE INDEX كخطوة إضافية (كما هو موضح في القسم التالي تحسين الأداء).

تحسين الأداء

قد يستغرق استرجاع المعالم من قاعدة بيانات PostgreSQL وقتًا طويلًا، خاصةً عبر الشبكة. يمكنك تحسين أداء رسم طبقات PostgreSQL بالتأكد من وجود فهرس مكاني لكل طبقة في قاعدة البيانات. يدعم PostGIS إنشاء فهرس GiST (شجرة البحث المعمّمة) لتسريع البحث المكاني (معلومات فهرس GiST مأخوذة من توثيق PostGIS المتاح على https://postgis.net).

نصيحة

يمكنك استخدام DBManager لإنشاء فهرس لطبقتك. حدّد الطبقة أولًا وانقر على Table ► Edit table، ثم انتقل إلى تبويب Indexes وانقر على Add Spatial Index.

صيغة إنشاء فهرس GiST هي:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

لاحظ أن إنشاء الفهرس قد يستغرق وقتًا طويلًا في الجداول الكبيرة. بعد إنشاء الفهرس، عليك تنفيذ VACUUM ANALYZE. راجع توثيق PostGIS (POSTGIS-PROJECT في المراجع والمصادر على الويب) لمزيد من المعلومات.

ينشئ المثال التالي فهرس GiST:

gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$

11.4.2.5. طبقات SpatiaLite

إذا أردت حفظ طبقة متجهية بصيغة SpatiaLite، يمكنك ذلك باتباع التعليمات في إنشاء طبقات جديدة من طبقة موجودة. اختر SpatiaLite في Format وأدخل كلًّا من File name و Layer name.

كما يمكنك اختيار SQLite صيغةً ثم إضافة SPATIALITE=YES في الحقل Custom Options ► Data source. يُعلم هذا GDAL بإنشاء قاعدة بيانات SpatiaLite. انظر أيضًا https://gdal.org/en/latest/drivers/vector/sqlite.html.

يدعم QGIS أيضًا العروض (views) القابلة للتحرير في SpatiaLite. ولإدارة بيانات SpatiaLite، يمكنك أيضًا استخدام الإضافة الأساسية DB Manager.

إذا أردت إنشاء طبقة SpatiaLite جديدة، فارجع إلى القسم إنشاء طبقة SpatiaLite جديدة.

11.4.2.6. المعاملات الخاصة بـ GeoJSON

عند تصدير الطبقات إلى GeoJSON، تتوفر بعض خيارات Layer Options الخاصة. تأتي هذه الخيارات من GDAL المسؤول عن كتابة الملف:

  • COORDINATE_PRECISION العدد الأقصى للأرقام بعد الفاصلة العشرية التي تُكتب في الإحداثيات. القيمة الافتراضية 15 (ملاحظة: في إحداثيات خطوط العرض والطول تُعد 6 كافية). يحدث اقتطاع لإزالة الأصفار الزائدة في النهاية.

  • RFC7946 يُستخدم GeoJSON 2008 افتراضيًا. إذا ضُبط على YES، فسيُستخدم المعيار المحدّث RFC 7946. القيمة الافتراضية NO (أي GeoJSON 2008). راجع https://gdal.org/en/latest/drivers/vector/geojson.html#rfc-7946-write-support للاطلاع على الفروق الرئيسية، وباختصار: لا يُسمح إلا بـ EPSG:4326، وتُحوَّل أنظمة الإحداثيات الأخرى، وتُكتب المضلعات بحيث تتبع قاعدة اليد اليمنى في الاتجاه، وقيم مصفوفة "bbox" هي [west, south, east, north] وليست [minx, miny, maxx, maxy]. وبعض أسماء أعضاء الامتدادات محظورة في كائنات FeatureCollection و Feature و Geometry، والدقة الافتراضية للإحداثيات 7 أرقام عشرية

  • WRITE_BBOX اضبطه على YES لتضمين المستطيل المحيط بالأشكال الهندسية على مستوى المعلم ومستوى مجموعة المعالم

إلى جانب GeoJSON يوجد أيضًا خيار للتصدير إلى "GeoJSON - Newline Delimited" (انظر https://gdal.org/en/latest/drivers/vector/geojsonseq.html). فبدلًا من FeatureCollection تضم Features، يمكنك بث نوع واحد (غالبًا Features فقط) بالتتابع مفصولًا بأسطر جديدة.

لـ GeoJSON - Newline Delimited أيضًا بعض خيارات الطبقة الخاصة:

  • COORDINATE_PRECISION انظر أعلاه (كما في GeoJSON)

  • RS ما إذا كانت السجلات تبدأ بالمحرف RS=0x1E. يكمن الفرق في طريقة فصل المعالم: إما بمحرف سطر جديد (LF) فقط (Newline Delimited JSON، geojsonl) أو بإضافة محرف فاصل السجلات (RS) قبلها أيضًا (مما ينتج GeoJSON Text Sequences، geojsons). القيمة الافتراضية NO. تُعطى الملفات الامتداد .json إذا لم يُحدَّد امتداد.

11.4.2.7. طبقات SAP HANA Spatial

يحتوي هذا القسم على بعض التفاصيل حول كيفية وصول QGIS إلى طبقات SAP HANA. في أغلب الأحيان، يُفترض أن يوفر لك QGIS ببساطة قائمة بجداول قاعدة البيانات وعروضها القابلة للتحميل، وسيحمّلها عند الطلب. ولكن إذا واجهت مشكلة في تحميل جدول أو عرض من SAP HANA في QGIS، فقد تساعدك المعلومات التالية على فهم السبب الجذري والمساعدة في حل المشكلة.

التعرّف على المعالم

إذا أردت استخدام جميع إمكانات تحرير المعالم في QGIS، فيجب أن يتمكن QGIS من التعرّف على كل معلم في الطبقة دون لبس. داخليًا، يستخدم QGIS عددًا صحيحًا بإشارة بطول 64 بت للتعرّف على المعالم، بينما يُحجز النطاق السالب لأغراض خاصة.

لذلك يتطلب مزوّد بيانات SAP HANA مفتاحًا فريدًا يمكن ربطه بعدد صحيح موجب بطول 64 بت لدعم إمكانات تحرير المعالم في QGIS دعمًا كاملًا. وإذا تعذّر إنشاء هذا الربط، فقد تظل قادرًا على عرض المعالم، لكن التحرير قد لا يعمل.

إضافة الجداول

عند إضافة جدول كطبقة، يستخدم مزوّد بيانات SAP HANA المفتاح الأساسي للجدول لربطه بمعرّف فريد للمعلم. لذلك، للحصول على دعم كامل لتحرير المعالم، يجب أن يتضمن تعريف جدولك مفتاحًا أساسيًا.

يدعم مزوّد بيانات SAP HANA المفاتيح الأساسية متعددة الأعمدة، ولكن إذا أردت أفضل أداء، فيجب أن يكون مفتاحك الأساسي عمودًا واحدًا من النوع INTEGER.

إضافة العروض (views)

عند إضافة عرض (view) كطبقة، لا يستطيع مزوّد بيانات SAP HANA التعرّف تلقائيًا على الأعمدة التي تميّز المعلم دون لبس. علاوة على ذلك، بعض العروض للقراءة فقط ولا يمكن تحريرها.

للحصول على دعم كامل لتحرير المعالم، يجب أن يكون العرض قابلًا للتحديث (تحقق من العمود IS_READ_ONLY في عرض النظام SYS.VIEWS للعرض المعني)، ويجب أن تزوّد QGIS يدويًا بعمود أو أكثر يميّز المعلم. يمكن تحديد الأعمدة باستخدام Layer ► Add Layer ► Add SAP HANA Spatial Layer ثم اختيار الأعمدة في العمود Feature id. للحصول على أفضل أداء، يجب أن تكون قيمة Feature id عمودًا واحدًا من النوع INTEGER.

11.4.2.8. نطاق قيم الحقل (Field domain)

نطاقات قيم الحقول قواعدُ تعرّف القيم المقبولة لحقل في جدول قاعدة بيانات. ويُطبَّق ذلك عند العمل مع مصادر بيانات تدعم نطاقات قيم الحقول، مثل 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: اضبط أعلى قيمة مقبولة للحقل.

    • فعّل checkbox Inclusive إذا أردت تضمين القيم الحدّية في المدى المقبول.

  • Values: انقر على symbologyAdd Add row أو symbologyRemove Remove row لإدارة قائمة القيم المقبولة للحقل.

  • Pattern: عرّف Glob pattern باستخدام محارف البدل (wildcard).

ملاحظة

عند تحميل الطبقات المتجهية في QGIS، تُكتشف تلقائيًا الحقول ذات sourceFields Field Domains (مثل تلك المعرّفة في GeoPackage أو ESRI File Geodatabase). هذه النطاقات قيود على مستوى قاعدة البيانات، أي أن قاعدة البيانات نفسها تفرضها وتنطبق عبر التطبيقات المختلفة، لا في QGIS فقط.

11.4.3. الطبقات التي تعبر خط الطول 180°

كثير من حزم نظم المعلومات الجغرافية لا تلفّ الطبقات ذات النظام المرجعي الجغرافي (lat/lon) التي تعبر خط الطول 180 درجة. ونتيجةً لذلك، إذا فتحنا طبقة كهذه في QGIS، فقد نرى موقعين متباعدين كثيرًا يُفترض أن يظهرا قريبين أحدهما من الآخر. في شكل 11.42، يُفترض أن تكون النقطة الصغيرة في أقصى يسار لوحة الخريطة (جزر Chatham) داخل الشبكة، إلى يمين الجزر الرئيسية لنيوزيلندا.

../../../_images/vectorNotWrapping.png

شكل 11.42 خريطة بإحداثيات lat/lon تعبر خط الطول 180°

11.4.3.1. الحل في PostgreSQL

أحد الحلول البديلة هو تحويل قيم خطوط الطول باستخدام PostgreSQL والدالة ST_ShiftLongitude. تقرأ هذه الدالة كل نقطة/رأس في كل مكوّن من كل معلم في الشكل الهندسي، وتزيح إحداثي خط الطول من -180..0° إلى 180..360° والعكس إذا كان ضمن هذين المديين. هذه الدالة متناظرة، لذا تكون النتيجة تمثيلًا 0..360° لبيانات -180..180°، وتمثيلًا -180..180° لبيانات 0..360°.

../../../_images/vectorWrapping.png

شكل 11.43 عبور خط الطول 180° بتطبيق الدالة ST_ShiftLongitude

  1. استورد البيانات إلى PostgreSQL (استيراد البيانات إلى PostgreSQL) باستخدام إضافة DB Manager مثلًا.

  2. استخدم واجهة سطر أوامر PostgreSQL لتنفيذ الأمر التالي:

    -- In this example, "TABLE" is the actual name of your PostgreSQL table
    update TABLE set geom=ST_ShiftLongitude(geom);
    
  3. إذا سار كل شيء على ما يرام، فستتلقى تأكيدًا بعدد المعالم التي حُدّثت. بعد ذلك ستتمكن من تحميل الخريطة ورؤية الفرق (Figure_vector_crossing_map).