22. التكامل مع GRASS GIS

يوفر التكامل مع GRASS الوصول إلى قواعد بيانات GRASS GIS ووظائفه (انظر GRASS-PROJECT في المراجع والمصادر على الويب). يتكون التكامل من جزأين: مزوّد البيانات والإضافة. يتيح مزوّد البيانات استعراض طبقات GRASS الشبكية والمتجهية وإدارتها وعرضها. ويمكن استخدام الإضافة لإنشاء مواقع (locations) ومجموعات خرائط (mapsets) جديدة في GRASS، وتغيير منطقة GRASS (region)، وإنشاء الطبقات المتجهية وتحريرها، وتحليل بيانات GRASS ثنائية وثلاثية الأبعاد بأكثر من 400 وحدة من وحدات GRASS. في هذا القسم سنعرّفك بوظائف مزوّد البيانات والإضافة، ونقدم بعض الأمثلة على إدارة بيانات GRASS والعمل معها.

يدعم مزوّد البيانات الإصدارين 6 و 7 من GRASS، وتدعم الإضافة GRASS 6 و 7 (بدءًا من QGIS 2.12). قد تحتوي توزيعة QGIS على مزوّد/إضافة لـ GRASS 6 أو GRASS 7 أو للإصدارين معًا (للملفات التنفيذية أسماء مختلفة). غير أنه لا يمكن تحميل سوى إصدار واحد من المزوّد/الإضافة أثناء التشغيل.

22.1. مجموعة البيانات التجريبية

على سبيل المثال، سنستخدم مجموعة بيانات QGIS الخاصة بألاسكا (انظر القسم تنزيل البيانات التجريبية). وهي تتضمن موقع GRASS تجريبيًا صغيرًا LOCATION يحتوي على ثلاث طبقات متجهية وخريطة ارتفاعات شبكية واحدة. أنشئ مجلدًا جديدًا باسم grassdata، ونزّل مجموعة بيانات QGIS 'Alaska' qgis_sample_data.zip من https://qgis.org/downloads-list/#data ثم فك ضغط الملف في grassdata.

تتوفر مواقع GRASS تجريبية أخرى LOCATIONs على موقع GRASS الإلكتروني.

22.2. تحميل طبقات GRASS الشبكية والمتجهية

إذا كان مزوّد البيانات مُحمَّلًا في QGIS، فسيُضاف عنصر الموقع بأيقونة GRASS grassLogo في شجرة المستعرض تحت كل عنصر مجلد يحتوي على موقع GRASS. انتقل إلى المجلد grassdata ووسّع الموقع alaska ومجموعة الخرائط demo.

يمكنك تحميل طبقات GRASS الشبكية والمتجهية مثل أي طبقة أخرى من المستعرض، إما بالنقر المزدوج على عنصر الطبقة أو بسحبه وإفلاته على لوحة الخريطة أو مفتاح الخريطة.

نصيحة

تحميل بيانات GRASS

إذا لم يظهر لك عنصر موقع GRASS، فتحقق في Help ► About ► Providers من أن مزوّد البيانات المتجهية لـ GRASS مُحمَّل.

22.3. استيراد البيانات إلى LOCATION في GRASS بالسحب والإفلات

يقدّم هذا القسم مثالًا على كيفية استيراد البيانات الشبكية والمتجهية إلى mapset في GRASS.

  1. في متصفح QGIS، انتقل إلى الـ mapset الذي تريد استيراد البيانات إليه.

  2. في متصفح QGIS، ابحث عن الطبقة التي تريد استيرادها إلى GRASS، ولاحظ أنه يمكنك فتح نسخة أخرى من المتصفح ( Browser Panel (2) ) إذا كانت بيانات المصدر بعيدة جدًا عن الـ mapset في الشجرة.

  3. اسحب الطبقة وأفلتها على الـ mapset الهدف. قد يستغرق الاستيراد بعض الوقت مع الطبقات الكبيرة، وسترى الأيقونة المتحركة import أمام عنصر الطبقة الجديدة حتى ينتهي الاستيراد.

عندما تكون البيانات الشبكية في نظام إحداثيات مرجعي (CRS) مختلف، يمكن إعادة إسقاطها باستخدام تحويل Approximate (سريع) أو Exact (دقيق). إذا أُنشئ رابط إلى الطبقة الشبكية المصدر (باستخدام r.external)، وكانت بيانات المصدر في نفس نظام الإحداثيات المرجعي وصيغتها معروفة لدى GDAL، فسيُستخدم نظام الإحداثيات المرجعي لبيانات المصدر. يمكنك ضبط هذه الخيارات في تبويب Browser ضمن خيارات GRASS.

إذا كانت الطبقة الشبكية المصدر تحتوي على عدة نطاقات، تُنشأ خريطة GRASS جديدة لكل نطاق بلاحقة .<band number>، وتُنشأ مجموعة تضم جميع الخرائط بالأيقونة rasterGroup. للطبقات الشبكية الخارجية أيقونة مختلفة rasterLink.

22.4. إدارة بيانات GRASS في متصفح QGIS

  • نسخ الخرائط: يمكن نسخ خرائط GRASS بين الـ mapsets ضمن نفس الـ location بالسحب والإفلات.

  • حذف الخرائط: انقر بزر الفأرة الأيمن على خريطة GRASS واختر Delete من القائمة السياقية.

  • إعادة تسمية الخرائط: انقر بزر الفأرة الأيمن على خريطة GRASS واختر Rename من القائمة السياقية.

22.5. خيارات GRASS

يمكن ضبط خيارات GRASS في نافذة الحوار GRASS Options، التي يمكن فتحها بالنقر بزر الفأرة الأيمن على عنصر الـ location أو الـ mapset في المتصفح ثم اختيار GRASS Options.

22.6. تشغيل إضافة GRASS

لاستخدام وظائف GRASS في QGIS، يجب أن تختار إضافة GRASS وتحمّلها باستخدام مدير الإضافات. للقيام بذلك، انتقل إلى القائمة Plugins ► showPluginManager Manage and Install Plugins...، وحدّد checkbox GRASS ثم انقر على OK.

توفّر قائمة GRASS ( Plugins ► GRASS ) الميزات الرئيسية التالية عند تشغيل إضافة GRASS:

  • grassOpenMapset Open Mapset

  • grassNewMapset New Mapset

  • grassCloseMapset Close Mapset

  • grassTools Open GRASS Tools

  • grassRegion Display Current GRASS Region

  • general GRASS Options

22.7. فتح mapset في GRASS

يجب فتح mapset في GRASS للوصول إلى أدوات GRASS في الإضافة (تكون الأدوات معطّلة إذا لم يكن أي mapset مفتوحًا). يمكنك فتح mapset من المتصفح: انقر بزر الفأرة الأيمن على عنصر الـ mapset ثم اختر Open mapset من القائمة السياقية.

22.8. LOCATION و MAPSET في GRASS

تُخزَّن بيانات GRASS في مجلد يُشار إليه باسم GISDBASE. هذا المجلد، الذي يُسمّى غالبًا grassdata، يجب إنشاؤه قبل أن تبدأ العمل بإضافة GRASS في QGIS. داخل هذا المجلد، تُنظَّم بيانات GRASS GIS في مشاريع مخزّنة في مجلدات فرعية تُسمّى LOCATIONs. يُعرَّف كل LOCATION بنظام إحداثياته وإسقاط خريطته وحدوده الجغرافية. يمكن أن يحتوي كل LOCATION على عدة MAPSETs (مجلدات فرعية من LOCATION) تُستخدم لتقسيم المشروع إلى موضوعات أو مناطق فرعية مختلفة، أو كمساحات عمل لأعضاء الفريق كلٌّ على حدة (انظر Neteler & Mitasova 2008 في المراجع والمصادر على الويب). لتحليل الطبقات المتجهية والشبكية باستخدام وحدات GRASS، عليك عمومًا استيرادها إلى LOCATION في GRASS. (هذا ليس صحيحًا تمامًا -- فباستخدام وحدتي GRASS r.external و v.external يمكنك إنشاء روابط للقراءة فقط إلى مجموعات بيانات خارجية مدعومة من GDAL دون استيرادها. لكن هذه ليست الطريقة المعتادة للمبتدئين في العمل مع GRASS، لذا لن تُشرح هذه الوظيفة هنا.)

../../../_images/grass_location.png

شكل 22.1 بيانات GRASS في LOCATION المسمّى alaska

22.9. استيراد البيانات إلى LOCATION في GRASS

راجع القسم استيراد البيانات إلى LOCATION في GRASS بالسحب والإفلات لمعرفة كيف يمكن استيراد البيانات بسهولة بالسحب والإفلات في المتصفح.

يقدّم هذا القسم مثالًا على كيفية استيراد البيانات الشبكية والمتجهية إلى LOCATION في GRASS المسمّى 'alaska' والمرفق مع مجموعة بيانات QGIS 'Alaska' بالطريقة التقليدية، باستخدام وحدات GRASS القياسية. لذلك نستخدم خريطة الغطاء الأرضي الشبكية landcover.img وملف GML المتجهي lakes.gml من مجموعة بيانات QGIS 'Alaska' (انظر تنزيل البيانات التجريبية).

  1. شغّل QGIS وتأكد من تحميل إضافة GRASS.

  2. في شريط أدوات GRASS، انقر على الأيقونة grassOpenMapset Open MAPSET لإظهار معالج MAPSET.

  3. اختر قاعدةَ بيانات GRASS المجلدَ grassdata في مجموعة بيانات QGIS Alaska، واختر 'alaska' بوصفه LOCATION، و'demo' بوصفه MAPSET، ثم انقر على OK.

  4. انقر الآن على الأيقونة grassTools Open GRASS tools. تظهر نافذة حوار صندوق أدوات GRASS (انظر القسم صندوق أدوات GRASS).

  5. لاستيراد الخريطة الشبكية landcover.img، انقر على الوحدة r.in.gdal في تبويب Modules Tree. تتيح لك وحدة GRASS هذه استيراد الملفات الشبكية المدعومة من GDAL إلى LOCATION في GRASS. تظهر نافذة حوار الوحدة r.in.gdal.

  6. تصفّح إلى المجلد raster في مجموعة بيانات QGIS 'Alaska' واختر الملف landcover.img.

  7. حدّد landcover_grass اسمًا للمخرج الشبكي وانقر على Run. في تبويب Output ترى أمر GRASS قيد التشغيل حاليًا r.in.gdal -o input=/path/to/landcover.img output=landcover_grass.

  8. عندما تظهر عبارة Successfully finished، انقر على View Output. أصبحت الطبقة الشبكية landcover_grass الآن مستوردة إلى GRASS وستُعرض في لوحة خريطة QGIS.

  9. لاستيراد ملف GML المتجهي lakes.gml، انقر على الوحدة v.in.ogr في تبويب Modules Tree. تتيح لك وحدة GRASS هذه استيراد الملفات المتجهية المدعومة من OGR إلى LOCATION في GRASS. تظهر نافذة حوار الوحدة v.in.ogr.

  10. تصفّح إلى المجلد gml في مجموعة بيانات QGIS 'Alaska' واختر الملف lakes.gml بوصفه ملف OGR.

  11. حدّد lakes_grass اسمًا للمخرج المتجهي وانقر على Run. لا داعي للاهتمام بالخيارات الأخرى في هذا المثال. في تبويب Output ترى أمر GRASS قيد التشغيل حاليًا v.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass.

  12. عندما تظهر عبارة Successfully finished، انقر على View Output. أصبحت الطبقة المتجهية lakes_grass الآن مستوردة إلى GRASS وستُعرض في لوحة خريطة QGIS.

22.9.1. إنشاء LOCATION جديد في GRASS

على سبيل المثال، إليك نموذج GRASS LOCATION alaska، المُسقَط بإسقاط Albers Equal Area باستخدام القدم وحدةً للقياس. سيُستخدم هذا النموذج GRASS LOCATION alaska في جميع الأمثلة والتمارين في الأقسام التالية المتعلقة بـ GRASS. من المفيد تنزيل مجموعة البيانات وتثبيتها على حاسوبك (انظر تنزيل البيانات التجريبية).

  1. شغّل QGIS وتأكد من تحميل إضافة GRASS.

  2. اعرض ملف Shapefile alaska.shp (انظر القسم تحميل طبقة من ملف) من مجموعة بيانات QGIS Alaska (انظر تنزيل البيانات التجريبية).

  3. في شريط أدوات GRASS، انقر على الأيقونة grassNewMapset New mapset لإظهار معالج MAPSET.

  4. اختر مجلد قاعدة بيانات GRASS موجودًا (GISDBASE) grassdata، أو أنشئ واحدًا لـ LOCATION الجديد باستخدام مدير الملفات في حاسوبك. ثم انقر على Next.

  5. يمكننا استخدام هذا المعالج لإنشاء MAPSET جديد داخل LOCATION موجود (انظر القسم إضافة MAPSET جديد) أو لإنشاء LOCATION جديد كليًا. اختر radioButtonOn Create new location (انظر شكل 22.2).

  6. أدخل اسمًا لـ LOCATION -- استخدمنا 'alaska' -- وانقر على Next.

  7. عرّف الإسقاط بالنقر على زر الاختيار radioButtonOn Projection لتفعيل قائمة الإسقاطات.

  8. نستخدم إسقاط Albers Equal Area Alaska (feet). وبما أننا نعرف أن معرّفه EPSG هو 2964، فإننا ندخله في مربع البحث. (ملاحظة: إذا أردت تكرار هذه العملية لـ LOCATION وإسقاط آخرين ولم تكن تحفظ معرّف EPSG، فانقر على الأيقونة projectionEnabled CRS Status في الزاوية السفلية اليمنى من شريط الحالة (انظر القسم العمل مع الإسقاطات)).

  9. في Filter، أدخل 2964 لاختيار الإسقاط.

  10. انقر على Next.

  11. لتعريف المنطقة الافتراضية، علينا إدخال حدود LOCATION في الاتجاهات الشمالية والجنوبية والشرقية والغربية. هنا ننقر ببساطة على الزر Set Current QGIS Extent لتطبيق امتداد الطبقة المحمّلة alaska.shp بوصفه امتداد المنطقة الافتراضية في GRASS.

  12. انقر على Next.

  13. نحتاج أيضًا إلى تعريف MAPSET داخل LOCATION الجديد (وهذا ضروري عند إنشاء LOCATION جديد). يمكنك تسميته بما تشاء - استخدمنا 'demo'. ينشئ GRASS تلقائيًا MAPSET خاصًا يُسمّى PERMANENT، مصمّمًا لتخزين البيانات الأساسية للمشروع وامتداده المكاني الافتراضي وتعريفات نظام الإحداثيات (انظر Neteler & Mitasova 2008 في المراجع والمصادر على الويب).

  14. راجع الملخص للتأكد من صحته وانقر على Finish.

  15. يُنشأ LOCATION الجديد 'alaska' و MAPSETs اثنان هما 'demo' و'PERMANENT'. مجموعة العمل المفتوحة حاليًا هي 'demo' كما حدّدت.

  16. لاحظ أن بعض الأدوات في شريط أدوات GRASS التي كانت معطّلة أصبحت الآن مفعّلة.

../../../_images/create_grass_location.png

شكل 22.2 إنشاء LOCATION جديد أو MAPSET جديد في GRASS من داخل QGIS

إذا بدا لك أن الخطوات كثيرة، فهي في الواقع ليست بهذا السوء، وهي طريقة سريعة جدًا لإنشاء LOCATION. أصبح LOCATION 'alaska' الآن جاهزًا لاستيراد البيانات (انظر القسم استيراد البيانات إلى LOCATION في GRASS). يمكنك أيضًا استخدام البيانات المتجهية والشبكية الموجودة مسبقًا في نموذج GRASS LOCATION 'alaska' المضمّن في مجموعة بيانات QGIS 'Alaska' تنزيل البيانات التجريبية، والانتقال إلى القسم نموذج البيانات المتجهية في GRASS.

22.9.2. إضافة MAPSET جديد

لا يملك المستخدم صلاحية الكتابة إلا على MAPSET في GRASS أنشأه بنفسه. وهذا يعني أنه إلى جانب الوصول إلى MAPSET الخاص بك، يمكنك قراءة الخرائط في MAPSETs الخاصة بالمستخدمين الآخرين (ويمكنهم قراءة خرائطك)، لكن لا يمكنك تعديل أو حذف إلا الخرائط الموجودة في MAPSET الخاص بك.

تتضمن جميع MAPSETs ملف WIND الذي يخزّن قيم إحداثيات الحدود الحالية والدقة المكانية الشبكية المحدّدة حاليًا (انظر Neteler & Mitasova 2008 في المراجع والمصادر على الويب، والقسم أداة المنطقة (region) في GRASS).

  1. شغّل QGIS وتأكد من تحميل إضافة GRASS.

  2. في شريط أدوات GRASS، انقر على الأيقونة grassNewMapset New mapset لإظهار معالج MAPSET.

  3. اختر مجلد قاعدة بيانات GRASS (GISDBASE) grassdata الذي يحتوي على LOCATION 'alaska'، حيث نريد إضافة MAPSET آخر يُسمّى 'test'.

  4. انقر على Next.

  5. يمكننا استخدام هذا المعالج لإنشاء MAPSET جديد داخل LOCATION موجود أو لإنشاء LOCATION جديد كليًا. انقر على زر الاختيار radioButtonOn Select location (انظر شكل 22.2) وانقر على Next.

  6. أدخل الاسم test لـ MAPSET الجديد. في أسفل المعالج، ترى قائمة بـ MAPSETs الموجودة ومالكيها.

  7. انقر على Next، وراجع الملخص للتأكد من صحة كل شيء، ثم انقر على Finish.

22.10. نموذج البيانات المتجهية في GRASS

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

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

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

تُعرَّف 'طبقة' المعلم بواسطة 'الطبقة' داخل GRASS. و'الطبقة' هي الرقم الذي يحدّد ما إذا كانت هناك أكثر من طبقة داخل مجموعة البيانات (مثلًا، إن كان الشكل الهندسي غابة أو بحيرة). في الوقت الحالي، لا يمكن أن تكون إلا رقمًا. وفي المستقبل، سيدعم GRASS أيضًا الأسماء كحقول في واجهة المستخدم.

يمكن تخزين البيانات الوصفية داخل LOCATION في GRASS بصيغة dBase أو SQLite3 أو في جداول قواعد بيانات خارجية، مثل PostgreSQL و MySQL و Oracle وغيرها.

تُربط البيانات الوصفية في جداول قواعد البيانات بالعناصر الهندسية باستخدام قيمة 'الفئة' (category).

'الفئة' (المفتاح، المعرّف) عدد صحيح مرتبط بالعناصر الهندسية الأولية، ويُستخدم رابطًا إلى عمود مفتاح واحد في جدول قاعدة البيانات.

نصيحة

تعلّم نموذج GRASS المتجهي

أفضل طريقة لتعلّم نموذج GRASS المتجهي وإمكاناته هي تنزيل أحد دروس GRASS التعليمية الكثيرة التي يُشرح فيها النموذج المتجهي بعمق أكبر. راجع https://grass.osgeo.org/learn/manuals/ لمزيد من المعلومات والكتب والدروس التعليمية بلغات عدة.

22.11. إنشاء طبقة متجهية جديدة في GRASS

لإنشاء طبقة متجهية جديدة في GRASS، اختر أحد العناصر التالية من القائمة السياقية للـ mapset في المتصفح:

  • طبقة نقاط جديدة

  • طبقة خطوط جديدة

  • طبقة مضلعات جديدة

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

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

في GRASS، يمكن تنظيم جميع أنواع الأشكال الهندسية (نقطة وخط ومساحة) في طبقة واحدة، لأن GRASS يستخدم نموذجًا متجهيًا طوبولوجيًا، لذا لا تحتاج إلى اختيار نوع الشكل الهندسي عند إنشاء خريطة GRASS متجهية جديدة. وهذا يختلف عن إنشاء ملفات Shapefile في QGIS، لأن ملفات Shapefile تستخدم النموذج المتجهي Simple Feature (انظر القسم إنشاء طبقات متجهية جديدة).

22.12. رقمنة طبقة GRASS المتجهية وتحريرها

يمكن رقمنة طبقات GRASS المتجهية باستخدام أدوات الرقمنة القياسية في QGIS. ومع ذلك، هناك بعض الخصوصيات التي ينبغي أن تعرفها، وذلك بسبب

  • النموذج الطوبولوجي في GRASS مقابل النموذج البسيط للمعالم (simple feature) في QGIS

  • تعقيد نموذج GRASS

    • تعدّد الطبقات في الخريطة الواحدة

    • تعدّد أنواع الأشكال الهندسية في الخريطة الواحدة

    • مشاركة الشكل الهندسي بين معالم متعددة من طبقات متعددة

تُناقَش هذه الخصوصيات في الأقسام التالية.

الحفظ، وتجاهل التغييرات، والتراجع، والإعادة

تحذير

تُكتب جميع التغييرات التي تُجرى أثناء التحرير فورًا في الخريطة المتجهية وجداول البيانات الوصفية المرتبطة بها.

تُكتب التغييرات بعد كل عملية، ومع ذلك يمكن التراجع/الإعادة أو تجاهل جميع التغييرات عند إغلاق التحرير. إذا استُخدم التراجع أو تجاهل التغييرات، تُعاد كتابة الحالة الأصلية في الخريطة المتجهية وجداول البيانات الوصفية.

هناك سببان رئيسيان لهذا السلوك:

  • إنها طبيعة خرائط GRASS المتجهية النابعة من الاقتناع بأن المستخدم يريد فعل ما يفعله، وأن من الأفضل أن تكون البيانات محفوظة عند انقطاع العمل فجأة (على سبيل المثال، انقطاع التيار الكهربائي)

  • إن ما يلزم للتحرير الفعّال للبيانات الطوبولوجية هو عرض معلومات عن الصحة الطوبولوجية، ولا يمكن الحصول على هذه المعلومات من خريطة GRASS المتجهية إلا إذا كُتبت التغييرات في الخريطة.

شريط الأدوات

يحتوي 'شريط أدوات الرقمنة' (Digitizing Toolbar) على بعض الأدوات الخاصة عند تحرير طبقة GRASS:

جدول 22.1 أدوات الرقمنة في GRASS

أيقونة

الأداة

غرض

capturePoint

نقطة جديدة

رقمنة نقطة جديدة

captureLine

خط جديد

رقمنة خط جديد

captureBoundary

حدّ جديد

رقمنة حدّ جديد

captureCentroid

مركز ثقل جديد

رقمنة مركز ثقل جديد (تسمية مساحة موجودة)

capturePolygon

حدّ مغلق جديد

رقمنة حدّ مغلق جديد

نصيحة

رقمنة المضلعات في GRASS

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

الفئة

الفئة (Category)، التي تُسمّى غالبًا cat، هي نوع من المعرّفات. يعود الاسم إلى الزمن الذي كانت فيه خرائط GRASS المتجهية تملك سمة وحيدة هي "category". تُستخدم الفئة رابطًا بين الشكل الهندسي والبيانات الوصفية. قد يملك الشكل الهندسي الواحد فئات متعددة، وبالتالي يمثّل معالم متعددة في طبقات مختلفة. حاليًا، لا يمكن تعيين سوى فئة واحدة لكل طبقة باستخدام أدوات التحرير في QGIS. تُعيَّن للمعالم الجديدة تلقائيًا فئة فريدة جديدة، باستثناء الحدود. فالحدود عادةً لا تشكّل إلا المساحات ولا تمثّل معالم خطية، لكن يمكن تعريف بيانات وصفية للحد لاحقًا، في طبقة مختلفة مثلًا.

تُنشأ الفئات الجديدة دائمًا في الطبقة الجاري تحريرها حاليًا فقط.

لا يمكن تعيين مزيد من الفئات للشكل الهندسي باستخدام التحرير في QGIS، إذ تُمثَّل هذه البيانات تمثيلًا صحيحًا بوصفها معالم متعددة، ويمكن حذف المعالم المفردة، حتى من طبقات مختلفة.

البيانات الوصفية

لا يمكن تعديل إلا البيانات الوصفية للطبقة الجاري تحريرها حاليًا. إذا كانت الخريطة المتجهية تحتوي على طبقات أخرى، فستُضبط جميع البيانات الوصفية لمعالم الطبقات الأخرى على '<not editable (layer #)>' لتنبيهك إلى أن هذه السمة غير قابلة للتحرير. والسبب أن الطبقات الأخرى قد تملك -وغالبًا ما تملك- مجموعة مختلفة من الحقول، في حين لا يدعم QGIS إلا مجموعة ثابتة واحدة من الحقول لكل طبقة.

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

نصيحة

إذا أردت إجراء تحديث جماعي للبيانات الوصفية في الجدول، مثلًا باستخدام 'حاسبة الحقول' (Field Calculator) ( استخدام حاسبة الحقول )، وكانت هناك معالم بلا فئة لا تريد تحديثها (وهي عادةً الحدود)، فيمكنك استبعادها بضبط 'Advanced Filter' على cat is not null.

نمط التحرير

الترميز الطوبولوجي ضروري للتحرير الفعّال للبيانات الطوبولوجية. عند بدء التحرير، تُضبط على الطبقة تلقائيًا أداة رسم (Renderer) متخصصة هي 'GRASS Edit'، وتُستعاد أداة الرسم الأصلية عند إغلاق التحرير. يمكن تخصيص النمط في تبويب 'Style' ضمن خصائص الطبقة. ويمكن أيضًا تخزين النمط في ملف المشروع أو في ملف منفصل مثل أي نمط آخر. إذا خصّصت النمط فلا تغيّر اسمه، لأنه يُستخدم لإعادة تعيين النمط عند بدء التحرير مجددًا.

نصيحة

لا تحفظ ملف المشروع أثناء تحرير الطبقة، وإلا ستُخزَّن الطبقة مع 'Edit Style' الذي لا معنى له إذا لم تكن الطبقة قيد التحرير.

يعتمد النمط على معلومات طوبولوجية تُضاف مؤقتًا إلى جدول البيانات الوصفية بوصفها الحقل 'topo_symbol'. ويُزال الحقل تلقائيًا عند إغلاق التحرير.

نصيحة

لا تحذف الحقل 'topo_symbol' من جدول البيانات الوصفية، فذلك سيجعل المعالم غير مرئية لأن أداة الرسم تعتمد على هذا العمود.

الالتقاط

لتكوين مساحة، يجب أن تكون لرؤوس الحدود المتصلة الإحداثيات نفسها تمامًا. ولا يمكن تحقيق ذلك باستخدام أداة الالتقاط إلا إذا كان للوحة الخريطة والخريطة المتجهية نظام الإحداثيات المرجعي نفسه. وإلا، فبسبب التحويل من إحداثيات الخريطة إلى إحداثيات اللوحة والعكس، قد تصبح الإحداثيات مختلفة قليلًا بسبب خطأ التمثيل وتحويلات نظام الإحداثيات المرجعي.

نصيحة

استخدم نظام الإحداثيات المرجعي للطبقة للوحة الخريطة أيضًا عند التحرير.

القيود

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

nix osx في Linux و macOS لا يمكن تحرير إلا طبقة GRASS واحدة في كل مرة. ويعود ذلك إلى علّة في GRASS لا تسمح بإغلاق برامج تشغيل قواعد البيانات بترتيب عشوائي. ويجري حلّ ذلك مع مطوّري GRASS.

نصيحة

صلاحيات التحرير في GRASS

يجب أن تكون مالك MAPSET في GRASS الذي تريد تحريره. من المستحيل تحرير طبقات البيانات في MAPSET لا يخصّك، حتى لو كانت لديك صلاحية الكتابة.

22.13. أداة المنطقة (region) في GRASS

تعريف المنطقة (ضبط نافذة عمل مكانية) في GRASS مهم للعمل مع الطبقات الشبكية. التحليل المتجهي افتراضيًا غير مقيّد بأي تعريفات مناطق محدّدة. لكن جميع الطبقات الشبكية المنشأة حديثًا سيكون لها الامتداد المكاني والدقة المكانية لمنطقة GRASS المعرّفة حاليًا، بصرف النظر عن امتدادها ودقتها الأصليين. تُخزَّن منطقة GRASS الحالية في الملف $LOCATION/$MAPSET/WIND، وهي تعرّف الحدود الشمالية والجنوبية والشرقية والغربية، وعدد الأعمدة والصفوف، والدقة المكانية الأفقية والرأسية.

يمكن تشغيل عرض منطقة GRASS في لوحة خريطة QGIS وإيقافه باستخدام الزر grassRegion Display current GRASS region.

يمكن تعديل المنطقة في تبويب 'Region' ضمن عنصر الواجهة الملتصق 'GRASS Tolls'. اكتب حدود المنطقة الجديدة ودقتها، ثم انقر على Apply. وإذا نقرت على Select the extent by dragging on canvas يمكنك اختيار منطقة جديدة تفاعليًا بالفأرة على لوحة خريطة QGIS بسحب مستطيل.

توفّر وحدة GRASS g.region معاملات أكثر بكثير لتعريف امتداد ودقة مكانية مناسبين للمنطقة في تحليلك الشبكي. يمكنك استخدام هذه المعاملات مع صندوق أدوات GRASS الموصوف في القسم صندوق أدوات GRASS.

22.14. صندوق أدوات GRASS

يوفّر صندوق grassTools Open GRASS Tools وظائف وحدات GRASS للعمل مع البيانات داخل LOCATION و MAPSET محدّدين في GRASS. لاستخدام صندوق أدوات GRASS تحتاج إلى فتح LOCATION و MAPSET لديك صلاحية الكتابة عليهما (وتُمنح عادةً إذا كنت أنت من أنشأ MAPSET). وهذا ضروري لأن الطبقات الشبكية أو المتجهية الجديدة المنشأة أثناء التحليل يجب أن تُكتب في LOCATION و MAPSET المحدّدين حاليًا.

../../../_images/grass_toolbox_moduletree.png

شكل 22.3 صندوق أدوات GRASS وشجرة الوحدات

22.14.1. العمل مع وحدات GRASS

توفّر إضافة GRASS صندوق أدوات سهل الاستخدام يضم نحو 200 من وحدات GRASS ووظائفه المتاحة.

تتوفر قائمة كاملة بوحدات GRASS المتاحة في صندوق الأدوات الرسومي في QGIS على ويكي GRASS على العنوان https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.

من الممكن أيضًا تخصيص محتوى صندوق أدوات GRASS. وهذا الإجراء موصوف في القسم تخصيص صندوق أدوات GRASS.

كما هو موضح في شكل 22.3، يمكنك البحث عن وحدة GRASS المناسبة باستخدام تبويب Modules Tree المجمّع حسب الموضوعات أو تبويب Modules List القابل للبحث.

بالنقر على أيقونة وحدة رسومية، سيُضاف تبويب جديد إلى نافذة حوار صندوق الأدوات، يوفّر ثلاثة تبويبات فرعية جديدة: Options و Output و Manual.

الخيارات

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

../../../_images/grass_module_option.png

شكل 22.4 خيارات وحدة صندوق أدوات GRASS

غالبًا ما تكون معاملات الوحدة المتوفرة غير كاملة للإبقاء على بساطة نافذة الحوار. إذا أردت استخدام مزيد من معاملات الوحدة وأعلامها (flags)، فعليك تشغيل صدفة GRASS وتشغيل الوحدة في سطر الأوامر.

من الميزات الجديدة منذ QGIS 1.8 دعم الزر Show Advanced Options أسفل نافذة حوار الوحدة المبسّطة في تبويب Options. في الوقت الحالي، لم يُضف إلا إلى الوحدة v.in.ascii مثالًا على الاستخدام، لكنه سيكون على الأرجح جزءًا من مزيد من الوحدات أو جميعها في صندوق أدوات GRASS في الإصدارات المستقبلية من QGIS. وهذا يتيح لك استخدام خيارات وحدة GRASS الكاملة دون الحاجة إلى الانتقال إلى صدفة GRASS.

المخرجات

../../../_images/grass_module_output.png

شكل 22.5 مخرجات وحدة صندوق أدوات GRASS

يوفّر تبويب Output معلومات عن حالة مخرجات الوحدة. عند النقر على الزر Run، تنتقل الوحدة إلى تبويب Output وترى معلومات عن عملية التحليل. إذا سار كل شيء على ما يرام، فسترى في النهاية الرسالة Successfully finished.

الدليل

../../../_images/grass_module_manual.png

شكل 22.6 دليل وحدة صندوق أدوات GRASS

يعرض تبويب Manual صفحة مساعدة HTML لوحدة GRASS. يمكنك استخدامها للاطلاع على مزيد من معاملات الوحدة وأعلامها أو للحصول على معرفة أعمق بالغرض من الوحدة. في نهاية كل صفحة دليل لوحدة، ترى روابط إضافية إلى Main Help index و Thematic index و Full index. توفّر هذه الروابط المعلومات نفسها التي توفّرها الوحدة g.manual.

نصيحة

عرض النتائج فورًا

إذا أردت عرض نتائج حساباتك فورًا في لوحة الخريطة، يمكنك استخدام الزر 'View Output' في أسفل تبويب الوحدة.

22.14.2. أمثلة على وحدات GRASS

ستوضّح الأمثلة التالية قوة بعض وحدات GRASS.

22.14.2.1. إنشاء خطوط الكنتور

ينشئ المثال الأول خريطة كنتور متجهية من طبقة ارتفاعات شبكية (نموذج الارتفاع الرقمي DEM). نفترض هنا أن لديك LOCATION المسمّى Alaska مُعدًّا كما شُرح في القسم استيراد البيانات إلى LOCATION في GRASS.

  • أولًا، افتح الـ location بالنقر على الزر grassOpenMapset Open mapset واختيار الـ location المسمّى Alaska.

  • افتح الآن صندوق الأدوات بالزر grassTools Open GRASS tools.

  • في قائمة فئات الأدوات، انقر نقرًا مزدوجًا على Raster ► Surface Management ► Generate vector contour lines.

  • الآن، نقرة واحدة على الأداة r.contour ستفتح نافذة حوار الأداة كما شُرح أعلاه (انظر العمل مع وحدات GRASS).

  • في Name of input raster map أدخل gtopo30.

  • اكتب في Increment between Contour levels selectNumber القيمة 100. (سينشئ ذلك خطوط كنتور بفواصل قدرها 100 متر.)

  • اكتب في Name for output vector map الاسم ctour_100.

  • انقر على Run لبدء العملية. انتظر بضع لحظات حتى تظهر الرسالة Successfully finished في نافذة المخرجات. ثم انقر على View Output ثم Close.

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

بعد ذلك، كبّر على منطقة جبلية صغيرة في وسط ألاسكا. عند التكبير عن قرب ستلاحظ أن لخطوط الكنتور زوايا حادة. يوفّر GRASS الأداة v.generalize لتعديل الخرائط المتجهية تعديلًا طفيفًا مع الحفاظ على شكلها العام. تستخدم الأداة عدة خوارزميات مختلفة لأغراض مختلفة. بعض الخوارزميات (مثل Douglas Peuker و Vertex Reduction) تبسّط الخط بإزالة بعض الرؤوس. وسيُحمَّل المتجه الناتج أسرع. هذه العملية مفيدة عندما يكون لديك متجه عالي التفصيل، لكنك تنشئ خريطة بمقياس رسم صغير جدًا، فيكون التفصيل غير ضروري.

نصيحة

أداة التبسيط

لاحظ أن في QGIS أداة Vector ► Geometry Tools ► Simplify geometries تعمل تمامًا مثل خوارزمية Douglas-Peuker في أداة GRASS v.generalize.

لكن الغرض من هذا المثال مختلف. فخطوط الكنتور التي أنشأتها r.contour لها زوايا حادة ينبغي تنعيمها. ومن بين خوارزميات v.generalize توجد خوارزمية Chaiken التي تفعل ذلك تمامًا (وكذلك منحنيات Hermite). انتبه إلى أن هذه الخوارزميات قد تضيف رؤوسًا إضافية إلى المتجه، مما يجعل تحميله أبطأ.

  • افتح صندوق أدوات GRASS وانقر نقرًا مزدوجًا على الفئات Vector ► Develop map ► Generalization، ثم انقر على الوحدة v.generalize لفتح نافذة خياراتها.

  • تحقق من أن المتجه 'ctour_100' يظهر بوصفه Name of input vector.

  • من قائمة الخوارزميات، اختر Chaiken. اترك جميع الخيارات الأخرى على قيمها الافتراضية، ومرّر إلى الأسفل حتى الصف الأخير لتُدخل في الحقل Name for output vector map القيمة 'ctour_100_smooth'، ثم انقر على Run.

  • تستغرق العملية بضع لحظات. حالما تظهر Successfully finished في نافذة المخرجات، انقر على View Output ثم Close.

  • يمكنك تغيير لون المتجه لعرضه بوضوح على الخلفية الشبكية وليتباين مع خطوط الكنتور الأصلية. ستلاحظ أن لخطوط الكنتور الجديدة زوايا أنعم من الأصلية مع بقائها وفيّة للشكل العام الأصلي.

../../../_images/grass_toolbox_vgeneralize.png

شكل 22.7 وحدة GRASS v.generalize لتنعيم خريطة متجهية

نصيحة

استخدامات أخرى لـ r.contour

يمكن استخدام الإجراء الموصوف أعلاه في حالات مماثلة أخرى. فإذا كانت لديك خريطة شبكية لبيانات الهطول مثلًا، فستُستخدم الطريقة نفسها لإنشاء خريطة متجهية لخطوط تساوي المطر (isohyets).

22.14.2.2. إنشاء تأثير ثلاثي الأبعاد بتظليل التضاريس

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

  • ابدأ هذا المثال بتحميل طبقة الارتفاعات الشبكية gtopo30. شغّل صندوق أدوات GRASS، وتحت فئة Raster انقر نقرًا مزدوجًا لفتح Spatial analysis ► Terrain analysis.

  • ثم انقر على r.shaded.relief لفتح الوحدة.

  • غيّر azimuth angle selectNumber من 270 إلى 315.

  • أدخل gtopo30_shade اسمًا لطبقة تظليل التضاريس الشبكية الجديدة، ثم انقر على Run.

  • عند اكتمال العملية، أضف طبقة تظليل التضاريس الشبكية إلى الخريطة. ينبغي أن تراها معروضة بتدرّج رمادي.

  • لعرض تظليل التضاريس وألوان gtopo30 معًا، انقل خريطة تظليل التضاريس أسفل خريطة gtopo30 في جدول المحتويات، ثم افتح نافذة Properties الخاصة بـ gtopo30، وانتقل إلى تبويب Transparency واضبط مستوى شفافيتها على نحو 25%.

ينبغي أن يكون لديك الآن ارتفاعات gtopo30 بخريطة ألوانها وإعداد شفافيتها معروضة فوق خريطة تظليل التضاريس الرمادية. لرؤية التأثيرات البصرية لتظليل التضاريس، أوقف عرض خريطة gtopo30_shade ثم أعد تشغيلها.

22.14.2.3. الإحصاءات الشبكية في خريطة متجهية

يوضّح المثال التالي كيف يمكن لوحدة GRASS تجميع البيانات الشبكية وإضافة أعمدة إحصاءات لكل مضلع في خريطة متجهية.

  • باستخدام بيانات Alaska مجددًا، ارجع إلى استيراد البيانات إلى LOCATION في GRASS لاستيراد الملف shapefiles/trees.shp إلى GRASS.

  • تلزم الآن خطوة وسيطة: يجب إضافة مراكز ثقل إلى خريطة الأشجار المستوردة لجعلها خريطة مساحات متجهية كاملة في GRASS (تتضمن الحدود ومراكز الثقل معًا).

  • من صندوق الأدوات، اختر Vector ► Manage features، وافتح الوحدة v.centroids.

  • أدخل 'forest_areas' في output vector map وشغّل الوحدة.

  • حمّل الآن المتجه forest_areas واعرض أنواع الغابات - النفضية ودائمة الخضرة والمختلطة - بألوان مختلفة: في نافذة Properties الخاصة بالطبقة، تبويب Symbology، اختر من Legend type selectString القيمة 'Unique value' واضبط Classification field على 'VEGDESC'. (ارجع إلى شرح تبويب الترميز في خصائص الترميز من قسم البيانات المتجهية.)

  • بعد ذلك، أعد فتح صندوق أدوات GRASS وافتح Vector ► Vector update by other maps.

  • انقر على الوحدة v.rast.stats. أدخل gtopo30 و forest_areas.

  • لا يلزم سوى معامل إضافي واحد: أدخل في column prefix القيمة elev، ثم انقر على Run. هذه عملية حسابية ثقيلة ستستغرق وقتًا طويلًا (ربما حتى ساعتين).

  • أخيرًا، افتح جدول البيانات الوصفية لـ forest_areas، وتحقق من إضافة عدة أعمدة جديدة، منها elev_min و elev_max و elev_mean وغيرها، لكل مضلع غابة.

22.14.3. تخصيص صندوق أدوات GRASS

يمكن إضافة جميع وحدات GRASS تقريبًا إلى صندوق أدوات GRASS. وتتوفر واجهة XML لتحليل ملفات XML البسيطة جدًا التي تضبط مظهر الوحدات ومعاملاتها داخل صندوق الأدوات.

يبدو ملف XML نموذجي لتوليد الوحدة v.buffer (v.buffer.qgm) هكذا:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">

<qgisgrassmodule label="Vector buffer" module="v.buffer">
        <option key="input" typeoption="type" layeroption="layer" />
        <option key="buffer"/>
        <option key="output" />
</qgisgrassmodule>

يقرأ المحلّل هذا التعريف وينشئ تبويبًا جديدًا داخل صندوق الأدوات عند اختيارك الوحدة.