تطوير
|trends.earth|هو برنامج مجاني ومفتوح المصدر، ومرخص بموجب (رخصة جنو العمومية العامة ، إصدار 2.0 أو أحدث <https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html> "_.
There are a number of components to the
tool. The first is a
QGIS plugin supporting calculation of indicators, access to raw data,
reporting, and production of print maps . The code for the plugin, and further
instructions on installing it if you want to modify the code, are in
trends.earth
GitHub repository.
يقوم الملحق الإضافي لـ QGIS الخاص بـ|trends.earth| بدعم عددًا من البرامج النصية المكتوبة بلغة بايثون، والتي تسمح بعملية حساب المؤشرات المختلفة على محرك جوجل إيرث (GEE). توجد هذه البرامج النصية في المجلد الفرعي "gee" ضمن مستودع GitHub الخاص بذلك البرنامج.
يدعم الملحق الإضافي كذلك عددًا من الوحدات الأخرى:
تتضمن وحدة "trends.earth-algorithms" كود من أجل معالجة المدخلات والمخرجات الخاصة بالملحق الإضافي، بجانب وظائف شائعة أخرى تدعم حساب تكاملات مؤشر الغطاء النباتي الطبيعي (NDVI)، والدلالة الإحصائية، وكود مشترك آخر. يتوفر كود هذه الوحدة في مستودع "landdegradation <https://github.com/ConservationInternational/trends.earth-algorithms>"_ على GitHub.
تتضمن وحدة "trends.earth-schemas" كود لإدارة المخططات المستخدمة لإدخال/إخراج البيانات من "trends.earth"، بما في ذلك التعامل مع فئات الغطاء الأرضي، ومعلمات الوظائف، وهيكلة التقارير لاتفاقية الأمم المتحدة لمكافحة التصحر، ووظائف أخرى ذات صلة.
توجد أدناه المزيد من التفاصيل بخصوص كيفية المساهمة في Trends.Earth من خلال العمل على كود واجهة المستخدم الرسومية للملحق الإضافي، أو من خلال تعديل كود المعالجة، أو من خلال المساهمة في ترجمة الموقع الإلكتروني والملحق الإضافي.
تعديل التعليمات البرمجية للبرنامج الملحق QGIS
تنزيل التعليمات البرمجية لـ trends.earth
توجد التعليمات البرمجية لـ Trends.Earth لكل من البرنامج الملحق ونصوص Google Earth Engine التي تدعمها على GitHub في ملف trends.earth. انسخ هذا الملف إلى مكان مناسب على جهازك لضمان حصولك على أحدث إصدار من التعليمات البرمجية.
هناك عدد من الفروع المختلفة لملف trends.earth التي هي قيد التطوير النشط. يدعم البرنامج الملحق QGIS3 رسميًا وتحدث غالبية التطوير في فرع "develop". الفرع "qgis2" هو الإصدار الأقدم من البرنامج الملحق، ويدعم QGIS2 الإصدار 2.18+.
تثبيت البرامج الملحقة
Python
The plugin is coded in Python. In addition to being used to run the plugin through QGIS, Python is also used to support managing the plugin (changing the version, installing development versions, etc.). Though Python is included with QGIS, you will also need a local version of Python that you can setup with the software needed to manage the plugin. The easiest way to manage multiple versions of Python is through the Anaconda distribution. For work developing the plugin, Python 3 is required. To download Python 3.7 (recommended) through Anaconda, see this page.
ملحقات Python
من أجل العمل مع التعليمات البرمجية لـ trends.earth، يجب أن يكون لديك Invoke مثبتًا على جهازك، بالإضافة إلى عدد من الحزم الأخرى المستخدمة لإدارة توثيق المستندات والترجمات وما إلى ذلك. هذه الحزم مدرجة جميعًا في ملف متطلبات "dev " لـ Trends.Earth، بحيث يمكن تثبيتها من خلال التنقل في موجّه الأوامر إلى المجلد الأساسي للتعليمات البرمجية لـ trends.earth والكتابة:
pip install -r requirements-dev.txt
ملاحظة
إذا كنت تستخدم Anaconda، فستحتاج أولاً إلى تنشيط البيئة الافتراضية لـ Python 3.7 قبل تشغيل الأمر أعلاه (وأي من أوامر الاستدعاء الأخرى المدرجة في الصفحة). طريقة واحدة للقيام بذلك هي عن طريق بدء "Anaconda prompt", من خلال "اتباع الإرشادات الموجودة على صفحة Anaconda <https://docs.anaconda.com/anaconda/user-guide/getting-started/#write-a-python-program-using-anaconda-prompt-or-terminal>` _.
PyQt
PyQt5 هي مجموعة أدوات الرسومات المستخدمة بواسطة QGIS3. لتجميع واجهة المستخدم الخاصة بـ Trends.Earth لـ QGIS3، يلزمك تثبيت PyQt5. يمكن تثبيت هذه الحزمة من pip باستخدام:
pip install PyQt5
ملاحظة
PyQt4 هي مجموعة أدوات الرسوم التي يستخدمها QGIS2. أفضل مصدر لهذه الحزمة على Windows هو من مجموعة الحزم التي يحتفظ بها Christoph Gohlke في UC Irvine. لتنزيل PyQt4، حدد الحزمة المناسبة من هذه الصفحة <https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4> _. اختر الملف المناسب لإصدار Python الذي تستخدمه. على سبيل المثال، إذا كنت تستخدم Python 2.7، فاختر الإصدار الذي يحتوي على "cp27" في اسم الملف. إذا كنت تستخدم Python 3.7، فاختر الإصدار الذي يحتوي على "cp37" في اسم الملف. اختر "amd64" لـ 64-bit python، و "win32" لـ 32-bit python.
بعد التنزيل من الرابط أعلاه، استخدم `` pip `` لتثبيته. على سبيل المثال، بالنسبة إلى 64-bit wheel for Python 3.7، يمكنك تشغيل
pip install PyQt4-4.11.4-cp37-cp37m-win_amd64.whl
تغيير نسخة البرنامج الملحق
اتفاقية Trends.Earth هي أن أرقام الإصدارات المنتهية برقم فردي (على سبيل المثال 0.65) هي إصدارات مطورة، بينما الإصدارات المنتهية برقم زوجي (على سبيل المثال (0.66) هي إصدارات عامة. لا يتم إطلاق إصدارات مطورة من البرنامج الملحق عبر ملف QGIS، لذلك لا يراها المستخدمون العاديون للبرنامج الملحق مطلقًا. يستخدم فريق تطوير Trends.Earth الإصدارات المطورة ذات الأرقام الفردية أثناء اختبار الميزات الجديدة قبل إصدارها العام.
إذا كنت ترغب في إجراء تغييرات على التعليمات البرمجية وقمت بتنزيل إصدار عام من البرنامج الملحق (واحد ينتهي برقم زوجي)، فإن الخطوة الأولى هي تحديث إصدار البرنامج الملحق إلى الرقم الفردي التسلسلي التالي. لذلك، على سبيل المثال، إذا قمت بتنزيل الإصدار 0.66 من البرنامج الملحق، فستحتاج إلى تحديث الإصدار ليكون 0.67 قبل أن تبدأ في إجراء التغييرات. هناك العديد من الأماكن في التعليمات البرمجية حيث يتم ذكر الإصدار (وكذلك داخل كل برنامج نصي من GEE) لذلك هناك مهمة استدعاء للمساعدة في تغيير الإصدار. لتغيير الإصدار ليكون 0.67، يمكنك تشغيل
invoke set-version -v 0.67
سيؤدي تشغيل الأمر أعلاه إلى تحديث رقم الإصدار في كل مكان تتم الإشارة إليه في التعليمات البرمجية. لتجنب الالتباس، لا تقم أبدًا بتغيير الإصدار إلى إصدار تم إصداره بالفعل - قم دائمًا بزيادة قيمة علامة الإصدار إلى الرقم الفردي التالي.
اختبار التغييرات على البرنامج الملحق
بعد إجراء التغييرات على التعليمات البرمجية للبرنامج الملحق، ستحتاج إلى اختبارها للتأكد من أن البرنامج الملحق يعمل كما هو متوقع، ولضمان عدم ظهور عيوب أو أخطاء. يجب أن يخضع المكون الإضافي لاختبارات مكثفة قبل إصداره في ملف QGIS (حيث يمكن الوصول إليه من قبل مستخدمين آخرين) للتأكد من أن أي تغييرات في التعليمات البرمجية لا تعطل البرنامج الملحق.
لاختبار أي تغييرات أجريتها على البرنامج الملحق داخل QGIS، ستحتاج إلى تثبيته محليًا. هناك استدعاء للمهام التي تساعد في هذه العملية. تتمثل الخطوة الأولى قبل تثبيت البرنامج الملحق في التأكد من إعداد البرنامج الملحق بكل الملحقات التي يحتاج لها للتشغيل من داخل QGIS. للقيام بذلك، قم بتشغيل
invoke plugin-setup
لا يلزم تشغيل المهمة المذكورة أعلاه فورًا إلا بعد تنزيل التعليمات البرمجية لـ trends.earth، أو إذا تم إجراء أي تغييرات على الملحقات الخاصة بالبرنامج الملحق. بشكل افتراضي، سيعيد إعداد البرنامج الملحق'' استخدام أي ملفات مخزنة مؤقتًا على جهازك. للبدء من الصفر، أضف علامة ``-c (clean) إلى الأمر أعلاه.
بعد تشغيل plugin-setup، أنت جاهز لتثبيت البرنامج الملحق في مجلد ملحقات QGIS على جهازك. للقيام بذلك، قم بتشغيل
invoke plugin-install
بعد تشغيل الأمر أعلاه، ستحتاج إما إلى 1) إعادة تشغيل QGIS، أو 2) استخدام Plugin Reloader <https://plugins.qgis.org/plugins/plugin_reloader/>` _ لإعادة تحميل البرنامج الملحق Trends.Earth من أجل رؤية تأثيرات التغييرات التي أجريتها.
بشكل افتراضي، سيقوم plugin-install بالكتابة فوق أي ملفات للبرنامج الملحق الموجودة على جهازك، لكنه يترك في مكانه أي بيانات (حدود إدارية، وما إلى ذلك) قد يكون البرنامج الملحق قد قام بتنزيلها. للبدء من الصفر، أضف علامة -c (clean) إلى الأمر أعلاه. قد تحتاج إلى إغلاق QGIS من أجل إجراء تثبيت نظيف بنجاح للبرنامج الملحق باستخدام علامة -c.
ملاحظة
يفترض تثبيت البرنامج الملحق أنك تريد تثبيت البرنامج الملحق لاستخدامه في QGIS3. لتثبيت البرنامج الملحق للاستخدام في QGIS3، أضف العلامة``-v 2`` إلى أمر``plugin-install``. تذكر أن البرنامج الملحق قد يعمل أو لا يعمل بشكل كامل على QGIS3 - تم تصميم البرنامج الملحق في الأصل لـ QGIS2 ولا يزال قيد الاختبار على QGIS3.
تحديث قائمة الحدود المخزنة مؤقتًا
عند القيام بتحديث مجموعة بيانات geoBoundaries، قم بتحديث القائمة المخزنة بشكلٍ مؤقت والمرفقة مع الملحق الإضافي من خلال القيام بالتالي:
invoke download-boundaries-cache
تُجري المهمة عملية مصادقة باستخدام واجهة برمجة تطبيقات Trends.Earth. قم بتكوين وتهيئة بيانات الاعتماد بإضافة ملف "invoke.yaml" في جذر المستودع، مع تضمين إدخالات مثل:
trends_earth_api:
user: "you@example.com"
password: "your-password"
بإمكانك كذلك توفير بيانات الاعتماد عبر متغيرات البيئة "TRENDS_EARTH_API_USER" و "TRENDS_EARTH_API_PASSWORD" قبل تنفيذ المهمة.
بناء ملف مضغوط للبرنامج الملحق
هناك العديد من مهام الاستدعاء للمساعدة في إنشاء ملف مضغوط لنشر البرنامج الملحق في ملف QGIS، أو لمشاركة تطير إصدار من البرنامج الملحق مع الآخرين. لضغط البرنامج الملحق وجميع تبعياته في ملف ZIP يمكن تثبيته باتباع the process described in the Trends.Earth readme, تشغيل
invoke zipfile-build
سيؤدي هذا الأمر إلى إنشاء مجلد باسم `` build '' في مجلد التعليمات البرمجية الأساسي trends.earth، وفي هذا المجلد سيتم إنشاء ملف يسمى `` LDMP.zip ''. يمكن مشاركة هذا الملف مع الآخرين الذين يمكنهم استخدامه لتثبيت برنامج Trends.Earth يدويًا <https://github.com/ConservationInternational/trends.earth#installing-latest-packaged-development-version> `_. يمكن أن يكون هذا مفيدًا إذا كانت هناك حاجة لمشاركة أحدث الميزات مع شخص ما قبل توفرها في الإصدار العام من البرنامج الملحق.
نشر ملف ZIP الخاص بتطوير إصدار
تقدم صفحة Trends.Earth على GitHub رابط لملف ZIP يتيح للمستخدمين، حتى غير المطورين، القيام بالوصول إلى نسخة التطوير من Trends.Earth. من أجل إنشاء ملف ZIP ونشره على تلك الصفحة (يُخزّن ملف ZIP على S3)، قم بإجراء التالي:
invoke zipfile-deploy
سيقوم هذا الأمر بضغط البرنامج الملحق ونسخه إلى `` https://s3.amazonaws.com/trends.earth/sharing/LDMP.zip <https://s3.amazonaws.com/trends.earth/sharing/LDMP.zip> `_.
ملاحظة
سيفشل الأمر أعلاه إذا لم يكن لديك مفاتيح تسمح لك بالوصول للكتابة إلى وحدة تخزين``Trends.earth`` في S3.
تعديل التعليمات البرمجية لمعالجة Earth Engine
يتم تخزين البرامج النصية لمعالجة Google Earth Engine (GEE) المستخدمة بواسطة Trends.Earth في مجلد "gee" ضمن مجلد trends.earth الرئيسي. لكي يكون هذا البرنامج النصي متاحًا لمستخدمي البرنامج الملحق Trend.earth QGIS، يجب نشرهم في خدمة api.trends.earth التي تحتفظ بها منظمة Conservation International للسماح لمستخدمي البرنامج الملحق باستخدام Earth Engine دون الحاجة إلى معرفة الكيفية لبرمجة أو الحصول على حسابات مستخدمين فردية على GEE. يوضح ما يلي كيفية اختبار ونشر البرامج النصية لـ GEE لاستخدامها مع Trends.Earth.
إعداد البرامج الملحقة
trends.earth-CLI
يلزم تثبيت حزمة "trends.earth-CLI" الخاصة بلغة بايثون للعمل مع خادم api.trends.earth. توجد هذه الحزمة على GitHub في مستودع "trends.earth-CLI <https://github.com/ConservationInternational/trends.earth-CLI>"_.
الخطوة الأولى هي استنساخ هذا المستودع إلى الجهاز الخاص بك. ونحن نوصيك باستنساخ المستودع في نفس المجلد الذي يحتوي على كود trends.earth. على سبيل المثال، في حال كان لديك مجلد "كود" على جهازك، فاستنسخ كلاً من مستودع trends.earth (كود الملحق الإضافي QGIS والبرامج النصية المرتبطة بها في GEE) ومستودع trends.earth-CLI إلى المجلد نفسه.
عندما تقوم بإعداد نظامك على النحو الموصى به أعلاه، ستعمل trends.earth-CLI مع مهام الاستدعاء المستخدمة لإدارة trends.earth دون أي تعديلات. ومع ذلك، إذا قمت بتنزيل Trend.earth-CLI في مجلد مختلف، فستحتاج إلى إضافة ملف باسم "invoke.yaml" إلى الملف الأساسي الخاص بـ trends.earth ، وفي هذا الملف أخبر Trends.Earth أين يحدد موقع التعليمات البرمجية لـ Trends.earth-CLI. يجب أن يبدو ملف YAML مشابهًا لما أدناه (إذا قمت بتنزيل التعليمات البرمجية الموجود على Windows في مجلد يسمى "C:/Users/azvol/Code/trends.earth-CLI/tecli"):
gee:
tecli: "C:/Users/azvol/Code/trends.earth-CLI/tecli"
مرة أخرى، ** لا ** تحتاج إلى إضافة ملف .yaml هذا إذا قمت بإعداد نظامك على النحو الموصى به أعلاه.
دوكر(docker)
تتطلب حزمة Trends.earth-CLI docker لكي تعمل. اتبع هذه الإرشادات لتثبيت docker على Windows, ، وهذه الإرشادات لتثبيت docker على Mac OS <https://docs.docker.com/docker-for-mac/install/>`_. إذا كنت تعمل على Linux، فاتبع الإرشادات الموجودة في هذه الصفحة <https://docs.docker.com/install> `_ المناسبة لتوزيع Linux الذي تستخدمه.
اختبار برنامج Earth Engine النصي محليًا
بعد تثبيت حزمة Trend.earth-CLI، ستحتاج إلى إعداد ملف .tecli.yml برمز token للوصول إلى حساب خدمة GEE من أجل اختبار البرامج النصية على GEE. لإعداد حساب خدمة GEE لـ tecli، احصل أولاً على مفتاح حساب الخدمة الخاص بك بتنسيق JSON (من وحدة التحكم السحابية في google)، ثم قم بترميزه في base64. قم بتوفير هذا المفتاح المشفر base64 إلى tecli بالأمر التالي:
invoke tecli-config set EE_SERVICE_ACCOUNT_JSON key
حيث "key" هو مفتاح حساب خدمة تنسيق JSON بترميز base64.
أثناء تحويل برنامج نصي حدد التعليمات البرمجية ليتم تشغيله على GEE من JavaScript إلى Python، أو عند إجراء تعديلات على هذه التعليمات البرمجية، قد يكون من المفيد اختبار البرنامج النصي محليًا، دون نشره على خادم api.trends.earth. للقيام بذلك، استخدم مهمة استدعاء run. على سبيل المثال، لاختبار البرنامج النصي "land_cover"، انتقل إلى الملف الرئيسي للتعليمات البرمجية الخاصة بـ Trends.Earth، وفي موجه الأوامر، قم بتشغيل
invoke tecli-run land_cover
سيستخدم هذا حزمة trends.earth-CLI لإنشاء وتشغيل حاوية Docker ستحاول تشغيل البرنامج النصي "land_cover". إذا كانت هناك أية أخطاء في بناء الجملة في البرنامج النصي، فستظهر هذه الأخطاء عند تشغيل الحاوية. قبل إرسال برنامج نصي جديد إلى api.trends.earth، تأكد دائمًا من أن invoke tecli-run قادر على تشغيل البرنامج النصي دون أي أخطاء.
عند استخدام invoke tecli-run، قد تظهر رسالة خطأ تقول:
Invalid JWT: Token must be a short-lived token (60 minutes) and in a
reasonable timeframe. Check your iat and exp values and use a clock with
skew to account for clock differences between systems.
يمكن أن يحدث هذا الخطأ إذا خرجت الساعة الموجودة في حاوية docker عن المزامنة مع ساعة النظام. يجب أن يؤدي إعادة تشغيل docker إلى إصلاح هذا الخطأ.
نشر برنامج GEE النصي على api.trends.earth
عندما تنتهي من اختبار برنامج GEE النصي وترغب في أن يكون الوصول إليه متاحًا باستخدام البرنامج المساعد QGIS (ومستخدمي Trends.Earth الآخرين)، يمكنك نشره على خادم api.trends.earth. الخطوة الأولى في العملية هي تسجيل الدخول إلى خادم api.trends.earth. لتسجيل الدخول، قم بتشغيل
invoke tecli-login
سيُطلب منك اسم مستخدم وكلمة مرور. وهما نفس اسم المستخدم وكلمة المرور اللذين تستخدمهما لتسجيل الدخول إلى خادم Trends.Earth من البرنامج الملحق QGIS. ** إذا لم تكن مسؤولاً، فستتمكن من تسجيل الدخول، لكن الأمر أدناه سيفشل **. لتحميل برنامج نصي (على سبيل المثال، البرنامج النصي "land_cover") على الخادم، قم بتشغيل
invoke tecli-publish -s land_cover
إذا كان هذا البرنامج النصي موجودًا بالفعل على الخادم، فسيتم سؤالك عما إذا كنت تريد الكتابة فوق البرنامج النصي الحالي. كن حذرًا جدًا عند تحميل البرامج النصية ذات إصدارات بأرقام زوجية، حيث إنها نصوص برمجية متاحة للجمهور، وأي أخطاء تقوم بها ستؤثر على أي شخص يستخدم البرنامج الملحق. في أي وقت تقوم فيه بالاختبار، تأكد من استخدام أرقام الإصدارات المطورة (أرقام الإصدارات الفردية).
بعد نشر نص برمجي على الخادم، يمكنك استخدام مهمة tecli-info للتحقق من حالة البرنامج النصي (لمعرفة ما إذا كان قد تم نشره بنجاح - على الرغم من أن بناء النص البرمجي قد يستغرق بضع دقائق). للتحقق من حالة البرنامج النصي المنشور، قم بتشغيل:
invoke tecli-publish -s land_cover
إذا كنت تقوم بإنشاء إصدار جديد من البرنامج الملحق، وتريد تحميل جميع نصوص GEE النصية مرة واحدة (يعد هذا ضروريًا عندما يتغير رقم إصدار البرنامج الملحق)، فقم بتشغيل
invoke tecli-publish
مرة أخرى - لا تقم مطلقًا بتشغيل ما ورد أعلاه على إصدار عام من البرنامج الملحق إلا إذا كنت تنوي الكتابة فوق جميع البرامج النصية المتاحة للجمهور التي يستخدمها البرنامج الملحق.
تعديل قوالب vector layer
يتيح Trends.Earth للمستخدمين القيام برقمنة معالم متجهة جديدة من أجل تحديد مناطق ذات أهمية خاصة.
يقوم النظام في الوقت الحالي بدعم طبقات "النتائج الإيجابية/السلبية الخاطئة" فقط، ولكن يمكن إضافة المزيد عند الضرورة. يتم إنشاء أي طبقة متجهة من ملفات قوالب GeoPackage، الموجودة في مجلد "data/error_recode" ضمن دليل تثبيت الملحق الإضافي. توجد 6 ملفات قوالب لكل نوع متجه، ملف واحد لكل لغة رسمية من لغات الأمم المتحدة. يتم إضافة كود اللغة ISO كلاحقة لاسم الملف، وذلك من أجل عملية توفير تسميات محلية في نماذج السمات. عند طلب إنشاء الطبقة المتجهة، يبحث QGIS عن ملف القالب مع مراعاة لغة QGIS، ويُستخدم الإصدار الإنجليزي من ملف القالب كخيار احتياطي.
للقيام بتغيير مخطط الطبقة، ينبغي تعديل ملفات القوالب المناسبة في مجلد "data/error_recode" ضمن دليل تثبيت الملحق الإضافي. يحتوي ملف القالب كذلك على نمط افتراضي مدمج وتكوين نموذج سمات يتم تطبيقه بشكلٍ تلقائي على الطبقة عند عملية تحميلها في QGIS.
لعرض المخطّطات في شكل سمة، يتم استخدام عنصر واجهة QML مدمج. يتم تخزين بيانات المخطّطات في جدول سمات vector layer. القيم من الحقول المقابلة مستخرجة بمساعدة التعبيرات.
التعليمات البرمجية المستخدمة لعمل المخطّطات تظهر مثل هذا:
import QtQuick 2.0
import QtCharts 2.0
ChartView {
width: 380
height:200
margins {top: 0; bottom: 0; left: 0; right: 0}
backgroundColor: "#eeeeec"
legend.alignment: Qt.AlignBottom
antialiasing: true
ValueAxis {
id: valueAxisY
min: 0
max: 100
}
BarSeries {
id: mySeries
axisY: valueAxisY
axisX: BarCategoryAxis { categories: ["Productivity", "Land cover", "Soil organic carbon"] }
BarSet { label: "Degraded"; color: "#9b2779"; values: [expression.evaluate("\"prod_deg\""), expression.evaluate("\"land_deg\""), expression.evaluate("\"soil_deg\"")] }
BarSet { label: "Improved"; color: "#006500"; values: [expression.evaluate("\"prod_imp\""), expression.evaluate("\"land_imp\""), expression.evaluate("\"soil_imp\"")] }
BarSet { label: "Stable"; color: "#ffffe0"; values: [expression.evaluate("\"prod_stab\""), expression.evaluate("\"land_stab\""), expression.evaluate("\"soil_stab\"")] }
}
}
لاستخراج دالة قيمة الحقل تستخدم expression.evaluate("\"prod_deg\"")، الحجة الوحيدة التي تقبلها هي اسم الحقل. يحتوي الرسم البياني للطبقات الإيجابية / السلبية الخاطئة على ثلاثة مؤشرات: الإنتاجية والغطاء الأرضي والكربون العضوي للتربة. كل مؤشر للبرنامج الملحق نسبة إنتاجية لمنطقة المضلع وتحافظ على استقرار ثلاث قيم: مستقرة ومتردية محسّنة. على سبيل المثال، في حالة وجود حقول مؤشر الإنتاجية ستكون:
prod_deg - إنتاجية متردية
prod_stab - إنتاجية مستقرة
prod_imp - إنتاجية محسّنة
يتم تطبيق نفس نهج التسمية على الغطاء الأرضي (land_* fields) والكربون العضوي للتربة (land_* fields).
يتم حساب النسبة المئوية للمنطقة عن طريق استخدام دالة التعبير المخصصة، ومن الممكن العثور على الكود الخاص بها في الملف "charts.py" في المجلد الرئيسي للملحق الإضافي. ولقد تم تحسين هذه الدالة للعمل مع المضلعات الكبيرة، وتستخدم سير العمل التالي: بالنسبة لشكل هندسي معين، يتم تحديد مربع محيط واستخراج مجموعة فرعية من الصورة النقطية من خلال استخدام هذا المربع. وبعد ذلك يتم تحويل الشكل الهندسي إلى صورة نقطية في الذاكرة وتطبيقه كقناع على الصورة النقطية. بعد ذلك، يتم حساب عدد البكسلات التي لها قيمة محددة وحساب النسبة المئوية. وحيث أن عد البكسلات يعتمد على دوال مصفوفات NumPy، فإنه سريع للغاية حتى مع المضلعات الكبيرة.
في المحاولة الأولى لتعديل طبقة vector، سيُعرض على المستخدم مربع حوار حيث يجب عليه تحديد مجموعات البيانات التي سيستخدمها للمؤشرات. ثم سيقوم البرنامج الملحق بإعداد قيم التعبير الافتراضية لجميع حقول المؤشر، لذلك سيتم تحديث القيمة في كل تغيير هندسي.
معالجة البيانات الوصفية لمجموعة البيانات
يتم تخزين البيانات الوصفية لمجموعة البيانات بتنسيق QGIS QMD. يمكن إنشاء ملفات QMD هذه لكل raster على حدة وأيضًا لمجموعة البيانات بأكملها. يتم فتح مربع حوار محرر البيانات الوصفية من قائمة ** Edit metadata ** في Trends.Earth dock.
عندما يتم تصدير مجموعة البيانات إلى ZIP، يتم إجراء التحويل إلى ISO XML باستخدام تحويل XSLT. يوجد التحويل المقابل في الملف الفرعي data\xsl لمجلد تثبيت البرنامج الملحق.
تحديث إطار عمل التقارير
نظرة عامة على إطار عمل إعداد التقارير
تم تصميم إطار عمل التقارير ليكون قابلاً للتوسعة مع توفير التفاعل للمستخدم من خلال عمليات غير محظورة. يمكن عمل رفع ثقيل لإطار العمل من خلال فئات :التعليمات البرمجية: QgsProject و` QgsPrintLayout` والتي ليست موضوع آمن وبالتالي، لذلك استخدم :الكود البرمجي: qgis_process للقيام برفع ثقيل لإنشاء التقارير (والمخططات). يمكنك العثور على مزيد من المعلومات حول: الرمز البرمجي: qgis_process` هنا <https://docs.qgis.org/3.22/en/docs/user_manual/processing/standalone.html> `_.
هناك خطوتان رئيسيتان ينفذهما toolbox عند إنشاء التقارير (والمخططات) للطبقات الافتراضية في وظيفة:
It creates a
ReportTaskContextobject that constitutes aReportConfigurationobject (see تكوين معلمات التقرير) and aJobobject that is represented in the Datasets panel. ThisReportTaskContextobject is serialized to a JSON file and then passed as one of the arguments in aReportProcessHandlerTaskobject (that inherits from QgsTask).يقوم كود
ReportProcessHandlerTaskببدء مثيل منفصل من:code:qgis_process ويمرر المسار إلى ملف JSON كمدخل إلى خوارزمية معالجة:trendsearth:reporttask. هذا غلاف رفيع يقوم بإلغاء تسلسل الملف إلى كودReportTaskContextويمرره إلى كودReportTaskProcessor المسؤول عن إنشاء التقارير ومشروع QGIS للوظيفة. بالنسبة للخوارزميات التي تتطلب مخططات، يقوم كود:code:`ReportTaskProcessorبتمرير كود الوظيفة إلىة كودAlgorithmChartsManagerالذي يتحقق مما إذا كان هناك تكوين مخطط محدد لخوارزمية الوظيفة. إذا تم تعريفه، فإنه ينشئ المخططات المقابلة كملفات PNG. (راجع إضافة تكوينات الرسم البياني للحصول على مزيد من المعلومات حول تكوينات المخططات)
يوفر الرسم البياني أدناه توضيحًا عالي المستوى لهذه العملية:
* اضغط على الصورة للحصول على رؤية مكبرة.
ملاحظة
تم تبسيط بعض أسماء الوظائف في الرسم البياني أعلاه لأغراض التوضيح. يمكن العثور على الفئات المذكورة أعلاه في وحدات LDMP.reports و`LDMP.processing_provider.report <https://github.com/ConservationInternational/trends.earth/tree/master/LDMP/processing_provider/report.py>`_ .
إضافة متغيرات مخطط التقرير
توفر متغيرات التقرير معلومات السياق المتعلقة بوظيفة أو طبقة (أو نطاق) أو:ref:report_settings أثناء عملية تنفيذ التقرير. حاليًا، يدعم toolbox المتغيرات المدرجة في قسم متغيرات تعبير التخطيط
يتم تعريف كل متغير على أنه : code: namedtuple في الوحدة LDMP.reports.expressions ويتم لاحقًا تحديثها وتقييمها من خلال كود ReportTaskProcessor.
اتبع الإرشادات أدناه حول كيفية إضافة وظيفة جديدة أو متغيرات الطبقة الحالية.
متغير الوظيفة
يتيح معلومات حول الوظيفة الحالية - التي يتم تنفيذها - ليتم إضافتها إلى مخطط التقرير. يتم تغليف المعلومات حول كل متغير وظيفة في كود:code:JobAttrVarInfo المكون من أربع سمات:
اسم السمة |
الوصف |
نوع البيانات |
القيمة الافتراضية |
|---|---|---|---|
job_attr |
اسم السمة للكود |
سلسلة |
N/A |
var_name |
اسم متغير مخطط التقرير. يجب أن يكون مسبوق بـ te_job_. |
سلسلة |
N/A |
default_value |
قيمة افتراضية لاستخدامها لـ var_name, يتم تطبيقها غالبًا عند تصميم التخطيطات. |
الكود |
الكود |
fmt_func |
كود الدالة سيتم استخدامه لتحويل قيمة سمة الوظيفة إلى تنسيق متوافق مع تعبيرات QGIS. على سبيل المثال يمكن استخدام |
كود الدالة |
لاشيء |
يوضح كود snippet أدناه كيفية إضافة متغير`te_job_result_name` يتوافق مع job.results.name.
# LDMP/reports/expressions.py
def _job_attr_var_mapping() -> typing.List[JobAttrVarInfo]:
return [
...
JobAttrVarInfo('results.name', 'te_job_result_name', '', str),
...
]
متغير طبقة
يوفر معلومات حول طبقة raster الحالية الجاري تنفيذها. يتم تغليف هذه المعلومات المتغيرة في كود LayerVarInfo المكون من ثلاث سمات:
اسم السمة |
الوصف |
نوع البيانات |
القيمة الافتراضية |
|---|---|---|---|
var_name |
اسم متغير تخطيط التقرير. يجب أن يكون مسبوق بـ te_current_layer_. |
سلسلة |
N/A |
default_value |
قيمة افتراضية لاستخدامها لـ var_name, يتم تطبيقها غالبًا عند تصميم التخطيطات. |
الكود |
الكود |
fmt_func |
كود دالة سيتم استخدامه لاستخراج و/أو تحويل قيمة من كود QgsRasterLayer <https://qgis.org/pyqgis/master/core/QgsRasterLayer.html> _ إلى تنسيق متوافق مع تعبيرات QGIS. يمكنك أيضًا استخدام وظائف lambda هنا. على سبيل المثال |
كود الدالة |
لاشيء |
يوضح كود snippet أدناه كيفية إضافة متغير te_current_layer_height يتوافق مع ارتفاع طبقة raster .
# LDMP/reports/expressions.py
def _current_job_layer_var_mapping() -> typing.List[LayerVarInfo]:
return [
...
LayerVarInfo(
'te_current_layer_height',
'',
lambda layer: layer.height()
)
...
]
ملاحظة
هذه المتغيرات متاحة فقط في نطاق التخطيط.
إضافة تكوينات الرسم البياني
يمكن تجميع المخططات باستخدام كود تكوين مخطط يتوافق مع خوارزمية محددة. تحديد تكوين مخطط جديد هو عملية من ثلاث خطوات:
أنشئ فئة مخطط جديدة تستقبل من code:BaseChart في وحدة LDMP.reports.charts. قم بتنفيذ دالة
exportلتحديد نوع المخطط والخصائص وما إلى ذلك باستخدامPlotlyPython library التي تأتي مع QGIS. أخيرًا ، داخل دالةexportقم باستدعاء دالة :save_imageلكتابة كود PlotlyFigureكملف صورة باستخدام أي من التنسيقات التي تدعمها فئاتQImageWriter. يمكنك أيضًا تحديد المسار بالنسبة إلى ملف الإخراج الأساسي والذي يتوفر أيضًا كسمة في الفئة الأساسية. انظر كود snippet أدناه:# LDMP/reports/charts.py Class MyCustomChart(BaseChart): def export(self) -> typing.Tuple[bool, list]: status = True messages = [] # Create chart Figure using Plotly and set properties fig = go.Figure(...) # Add warning or error messages messages.append('Colour list not supported.') # Set image path in dataset's reports folder img_path = f'{self.root_output_dir}/chart-NDVI.png' # Save image and append its path self.save_image(fig, img_path) self._paths.append(img_path) return status, messages
يمكنك الرجوع إلى فئة
UniqueValuesPieChartللحصول على أمثاله أكثر اكتمالاً.أنشئ فئة تكوين مخطط ترث من:
BaseAlgorithmChartsConfigurationونفِّذ دالة_add_charts. تحدد فئة تكوين المخطط بشكل أساسي المخططات التي سيتم استخدامها لخوارزمية معينة. السمةlayer_band_infos`هي قائمة من التعليمات البرمجية الخاصة بـ :code:`LayerBandInfoالتي تحتوي على بيانات الطبقة ومعلومات النطاق المطلوبة لإنتاج المخططات. يمكنك الرجوع إلى فئةLandCoverChartsConfigurationللحصول على مثال أكثر اكتمالاً.أخيراً، قم بتعيين خوارزمية (name) إلى فئة تكوين المخطط المقابل في
AlgorithmChartsManagerكما هو موضح أدناه:# LDMP/reports/charts.py Class AlgorithmChartsManager: def _set_default_chart_config_types(self): ... self.add_alg_chart_config('land-cover', LandCoverChartsConfiguration) self.add_alg_chart_config('productivity', MyCustomLandProductivityChartsConfiguration) ...
إن فئة
AlgorithmChartsManager، والتي تم إنشاء مثيل لها في كودReportTaskProcessor، ستنشئ كوداً جديدًا لتكوين مخطط لخوارزمية مهمة مقابلة عند إنشاء التقارير.
المساهمة في التوثيق
نظرة عامة
تم إنتاج وثائق Trends.Earth باستخدام Sphinx <http://www.sphinx-doc.org/en/master/> _ ، وهي مكتوبة بتنسيق reStructuredText <http://docutils.sourceforge.net/rst.html> `_. إذا لم تكن معتادًا على أي من هذه الأدوات، فراجع وثائقها للحصول على مزيد من المعلومات حول كيفية استخدامها.
يتم تخزين مستندات Trends.Earth في مجلد "docs" ضمن ملف trends.earth. يوجد داخل هذا المجلد عدد من الملفات والمجلدات الرئيسية التي يجب أن تكون على دراية بها:
الإنشاء: يحتوي على وثائق الإنشاء الخاصة trends.earth (بتنسيق PDF و HTML). لاحظ أنه لن يظهر على جهازك إلا بعد تشغيل مهمة استدعاء
docs-buildi18n: يحتوي على ترجمات للوثائق إلى لغات أخرى. عادةً ما تتم معالجة الملفات الموجودة هنا تلقائيًا باستخدام مهام الاستدعاء، لذلك لن يكون لديك سبب لتعديل أي شيء في هذا المجلد.
الموارد: تحتوي على أي موارد (صور أو ملفات PDF بشكل أساسي) يشار إليها في الوثائق. يوجد حاليًا مجلد واحد فقط ("EN"، للغة الإنجليزية) حيث أن جميع الصور الموجودة في الوثائق مأخوذة من النسخة الإنجليزية من البرنامج الملحق - إذا كان من الممكن إضافة مجلدات إضافية مناسبة ضمن "الموارد" برموز لغة مكونة من حرفين لتضمينها صور خاصة بلغة معينة.
المصدر: يحتوي على ملفات المصدر reStructuredText التي تحدد الوثائق (هذا النص الإنجليزي الفعلي للوثائق، وهذه الملفات التي من المرجح أن تحتاج إلى تعديلها).
تثبيت البرامج الملحقة
ملحقات Python
من أجل العمل بالتوثيق المستندي، تحتاج إلى استدعاء Sphinx و sphinx-intl و sphinx-rtd-theme (سمة موقع Trends.Earth) المثبتة على جهازك. يتم سرد جميع هذه الحزم في ملف متطلبات "dev" الخاص بـ Trends.Earth، بحيث يمكن تثبيتها بالانتقال في موجه الأوامر إلى المجلد الرئيسي للتعليمات البرمجية الخاصة بـ trends.earth واكتب:
pip install -r requirements-dev.txt
LaTeX
يستخدم LaTeX لإنتاج مخرجات PDF لوثائق Trends.Earth.
للتثبيت على Windows، "اتبع العملية الموضحة هنا <https://www.tug.org/protext>`_ لتثبيت توزيع ProTeXt لـ LaTeX من zipfile المتوفر هنا. إن مثبّت LaTeX كبير جدًا (عدة غيغابايت) لذا قد يستغرق تنزيله وتثبيته بعض الوقت.
في نظام MacOS، يعد MacTeX خيارًا جيدًا ويمكن تثبيته "باتباع الإرشادات الواردة هنا في نظام MacOS، يعد MacTeX خيارًا جيدًا ويمكن تثبيته باتباع الإرشادات الواردة هنا.
على Linux، يجب أن يكون تثبيت LaTeX أسهل بكثير - استخدم مدير حزم التوزيع الخاص بك للعثور على أي توزيع LaTeX مضمّن افتراضيًا وتثبيته.
Qt Linguist
هناك حاجة أيضًا إلى Qt Linguist لسحب السلاسل من الكود وGUI للترجمة. يجب أن يكون الأمر "lrelease" متاحًا وفي مسارك. حاول تجربة:
lrelease
داخل نافذة طرفية. إذا لم يتم العثور على الملف، فستحتاج إلى تثبيت Qt Linguist. هذه الصفحة <https://github.com/lelegard/qtlinguist-installers/releases> _ هي أحد مصادر أدوات التثبيت لشركة Qt Linguist. بمجرد تثبيت Qt Linguist، تأكد من إضافة المجلد الذي يحتوي على lrelease إلى المسار الخاص بك حتى يتمكن البرنامج النصي invoke الخاص بـ Trends.Earth من العثور عليه.
تحديث وبناء الوثائق
بمجرد تثبيت متطلبات Sphinx، تكون جاهزًا لبدء تعديل الوثائق. توجد الملفات المراد تعديلها ضمن مجلد "docs\source". بعد إجراء أي تغييرات على هذه الملفات، ستحتاج إلى إنشاء الوثائق لعرض النتائج. يوجد إصداران من وثائق Trends.Earth: إصدار HTML (يُستَخدَم لموقع الويب) ونسخة PDF (للتنزيل دون اتصال بالإنترنت). لإنشاء وثائق لـ Trends.Earth، استخدم مهمة الاستدعاء "docs-build". بشكل افتراضي، ستنشئ هذه المهمة التوثيق الكامل لـ Trends.Earth، بتنسيق HTML وPDF لجميع اللغات المدعومة. قد يستغرق هذا بعض الوقت للتشغيل (حتى بضع ساعات). إذا كنت تقوم فقط باختبار نتائج بعض التغييرات الطفيفة على الوثائق، فمن الأفضل عادةً استخدام الخيار -f (for "fast"). سيؤدي هذا الخيار إلى إنشاء وثائق HTML باللغة الإنجليزية فقط، والتي يجب أن تستغرق بضع ثوانٍ فقط. للبناء باستخدام الخيار السريع، قم بتشغيل
invoke docs-build -f
سيستغرق تشغيل الأمر أعلاه بضع ثوانٍ، ثم إذا نظرت أسفل "docs\build\html\en"، فسترى إصدار HTML من الوثائق. قم بتحميل ملف "index.html" في متصفح الويب لترى كيف يبدو.
لإنشاء التوثيق الكامل، لجميع اللغات، بتنسيق PDF و HTML (تذكر أن هذا قد يستغرق بضع ساعات حتى يكتمل)، قم بتشغيل
invoke docs-build
بعد تشغيل الأمر أعلاه ، سترى (للغة الإنجليزية) وثائق HTML ضمن "docs\build\html\en"، وملفات PDF للوثائق ضمن "docs\build\html\en\pdfs".
إذا كنت ترغب في اختبار لغة معينة (عند اختبار الترجمات، على سبيل المثال)، يمكنك تحديد رمز لغة مكون من حرفين لإنشاء المستندات لتلك اللغة فقط. على سبيل المثال، لإنشاء الوثائق الإسبانية فقط، قم بتشغيل
invoke docs-build -l es
لاحظ أنه يمكن دمج الخيارات، بحيث يمكنك استخدام الخيار السريع لإنشاء إصدار HTML فقط من الوثائق الإسبانية عن طريق تشغيل
invoke docs-build -f -l es
عند إنشاء التوثيق الكامل لموقع الويب، من الأفضل إزالة أي نسخ قديمة من الوثائق أولاً، حيث قد تحتوي على ملفات لم تعد مستخدمة في الوثائق المحدثة. للقيام بذلك، استخدم خيار -c (clean)
invoke docs-build -c
بشكل عام، يجب أن يكتمل بناء المستندات دون أي أخطاء إذا كنت تخطط لمشاركة الوثائق أو نشرها على موقع الويب. ومع ذلك، عند اختبار الأشياء محليًا، قد ترغب في تجاهل أخطاء التوثيق التي تظهر فقط لبعض اللغات (بسبب أخطاء بناء الجملة الناشئة عن أخطاء الترجمة، وما إلى ذلك)، والاستمرار في بناء الوثائق المتبقية بغض النظر عما إذا كانت هناك أية أخطاء. للقيام بذلك، استخدم خيار``-i`` (ignore errors)
invoke docs-build -i
متى قمت بإجراء أي تغييرات على نص الوثائق، فمن الأفضل دفع أحدث السلاسل إلى Transifex حتى يمكن ترجمتها. لتحديث السلاسل على Transifex بأي تغييرات جديدة، قم بتشغيل
invoke translate-push
ملاحظة
لتشغيل الأمر أعلاه بنجاح، يجب أن يكون لديك مفتاح حساب transifex لـ Trends.Earth
بناء وثائق للإصدار
قبل إصدار وثائق جديدة، اسحب دائمًا أحدث الترجمات من Transifex حتى تكون جميع الترجمات محدثة. للقيام بذلك، قم بتشغيل
invoke translate-pull
لإنشاء نسخة من التوثيق للإصدار العام (سواء لموقع الويب أو بتنسيق PDF) ، يجب عليك إنشاء الوثائق بالكامل باستخدام docs-build بدون أي معلمات إضافية:
invoke docs-build
يجب أن تكتمل هذه العملية بنجاح مع عدم وجود أخطاء. في حالة حدوث أي أخطاء أثناء العملية، راجع رسالة الخطأ وقم بإجراء أي تعديلات لازمة للسماح للإنشاء بنجاح تام. بمجرد اكتمال البناء بدون أخطاء، تكون الملفات جاهزة لإصدار على موقع الويب.
ملاحظة
يحتوي كلا الأمرين أعلاه أيضًا على خيارات -f (force) تفرض سحب أو دفع أحدث الترجمات من أو إلى Transifex (على التوالي). استخدم هذه الخيارات فقط إذا كنت متأكدًا تمامًا مما تفعله، حيث يمكنها الكتابة فوق الترجمات تماماً على Transifex، مما يؤدي إلى فقد العمل الذي قام به المترجمون إذا لم يتم الالتزام بأحدث الترجمات في github بعد.
إضافة نص وثائقي جديدة
يجب إضافة أي ملفات .rst جديدة تمت إضافتها إلى الوثائق إلى العديد من ملفات التكوين للتأكد من ظهورها في قائمة التنقل، وترجمتها بشكل صحيح، و (للبرامج التعليمية) لضمان إنشائها في PDF حتى يتمكنوا من ذلك. يمكن تنزيلها للاستخدام في وضع عدم الاتصال.
docs\source\index.rst: أضف ملفات .rst جديدة في المكان المناسب هنا للتأكد من أنها مرتبطة من قائمة التنقل.
.tx\config: قم بإدراج ملفات .rst الجديدة هنا (بنفس تنسيق الملفات الأخرى المضمنة بالفعل) من أجل جعل برنامج الترجمة على علم بها حتى يمكن ترجمتها
docs\source\conf.py: إذا كنت ترغب في إنشاء ملف PDF لصفحة من موقع الويب، فيجب عليك إدراج هذه الصفحة هنا في قائمة
`latex_documents. عادةً ما نقوم بذلك فقط لصفحات البرامج التعليمية التي نريد إتاحتها للمشاركين في ورشة العمل في ملفات PDF فردية. سيتم تضمين كل صفحة على الموقع في نسخة PDF من الموقع ككل، بغض النظر عما إذا كانت مدرجة في قائمةlatex_documents.
إضافة صور جديدة أو موارد أخرى
يجب إضافة أي صور جديدة أو موارد أخرى (ملفات PDF، إلخ) التي تحتاج لها الوثائق ضمن "docs\resources\en". إذا رغبت في ذلك، فمن الممكن تحميل إصدارات مختلفة من الصورة بحيث تظهر الصورة مع الترجمات المناسبة. قد يكون هذا مفيدًا إذا كنت تريد إظهار واجهة GUI باللغة المناسبة، على سبيل المثال. للقيام بذلك، قم أولاً بتحميل نسخة من الصورة إلى "docs\resourcesen" (مع نص باللغة الإنجليزية). بعد ذلك، أنشئ نسخة من الصورة بنص مترجم وضع تلك الصورة تحت المجلد المناسب لتلك اللغة (على سبيل المثال، ستظهر صورة تظهر الترجمات الإسبانية ضمن "docs\resources\es"). سيتم استخدام النسخة الإنجليزية من الصورة كإصدار افتراضي لجميع اللغات التي لم يتم توفير نسخة أصلية من الصورة لها، بينما سيتم استخدام النسخة المترجمة عند توفرها.
ملاحظة
يوجد هناك مجلد آخر، "docs\source\static"، يتم استخدامه من أجل حفظ الموارد بشكلٍ مؤقت خلال عملية تشغيل البرامج النصية التي تُنشئ وثائق Trends.Earth. من الممكن أن تجد صورًا مُدرجة ضمن هذا المجلد في حال سبق لك إنشاء الوثائق على هذا الجهاز. برجاء عدم استخدام هذا المجلد لإضافة موارد جديدة - ينبغي دومًا وضع الموارد الجديدة ضمن "docs\resources\en"، أو، بالنسبة للصور المترجمة، في المجلد الخاص باللغة المُناسبة ضمن "docs\resources".
المساهمة كمترجم
تتم إدارة الترجمات لكل من البرنامج الملحق QGIS وكذلك لهذا الموقع بواسطة transifex <http://www.transifex.com> _. إذا كنت ترغب في المساهمة في ترجمة البرنامج الملحق والوثائق (ونرغب في الحصول على مساعدتك!) يمكنك طلب الانضمام إلى فريقنا من خلال transifex <https://www.transifex.com/conservation-international/trendsearth> _ ، أو عن طريق مراسلتنا عبر البريد الإلكتروني على `trends.earth@conservation.org.
إصدار نسخة جديدة من الملحق الإضافي
نظرة عامة
يتضمن إصدار نسخة جديدة من Trends.Earth تحديث أرقام الإصدارات، وإنشاء مؤشرات git tags، وبناء حزمة الملحق الإضافي، ونشرها على كلٍ من GitHub ومستودع ملحقات QGIS. ويتم تبسيط هذه العملية من خلال تنفيذ المهام التي تُؤتمت معظم هذه الخطوات.
سير عمل الإصدار
اتبع الخطوات التالية من أجل إنشاء إصدار عام جديد:
1. تحديث سجل التغييرات
أولًا، قم بتحديث سجل التغييرات في الملف "LDMPmetadata.txt" بتفاصيل التغييرات في ذلك الإصدار. قم بإضافة رقم الإصدار وتاريخه، متبوعًا بنقاط توضح الميزات الجديدة، وإصلاحات الأخطاء، وغيرها من التغييرات.
2. تعيين رقم الإصدار
قم بالقيام بمهمة "set-version" لتحديث أرقام الإصدارات في كل أنحاء قاعدة التعليمات البرمجية:
invoke set-version -v X.Y.Z -m
حيث X.Y.Z هو رقم الإصدار الجديد (مثلاً، 2.1.20). فإن الخيار "-m" يضمن تحديث أرقام الإصدارات كذلك في الوحدات التابعة ("trends.earth-schemas" و"trends.earth-algorithms").
- سيقوم هذا الأمر بالتالي:
تحديث ملف "LDMP/metadata.txt" بالإصدار الجديد
إنشاء ملف "LDMP/_version.py" بمعلومات git
تحديث الإصدار في التوثيق ("docs/source/conf.py")
تعيين علامة "تجريبي" بناءً على أرقام الإصدارات الزوجية/الفردية (زوجي = مستقر، فردي = تطوير)
تحديث مراجع التبعيات في ملفات المتطلبات
ملاحظة
بالنسبة للإصدارات المستقرة (أرقام الإصدارات الزوجية مثل 2.1.18)، سوف تقوم مهمة "set-version"بتحديث مراجع التبعيات لاستخدام الإصدارات الموسومة. أما بالنسبة لإصدارات التطوير (أرقام الإصدارات الفردية مثل 2.1.19)، فسوف يتم استخدام الفرع الرئيسي.
3. تحديث نصوص GEE (إن وُجدت)
في حال قمت بإجراء تغييرات على نصوص محرك جوجل إيرث (في مجلد "gee") أو على ملفي "trends.earth-schemas" أو "trends.earth-algorithms"، فأضف الخيار "-g" عند تشغيل الأمر "set-version".
invoke set-version -v X.Y.Z -m -g
سوف يؤدي هذا إلى تحديث أرقام الإصدارات في كل ملفات تهيئة نصوص GEE البرمجية. قبل النشر، قم بإنشاء وسوم إصدار للمستودعات التابعة لكي تتمكن نصوص GEE البرمجية من تحديد الإصدارات الصحيحة.
# In trends.earth-schemas (where x.y.z is the new version number
invoke set-tag -v x.y.z
# In trends.earth-algorithms (where x.y.z is the new version number)
invoke set-tag -v x.y.z
بمجرد وضع علامات على كلا التبعيتين، انشر البرامج النصية المحدثة على خادم واجهة برمجة تطبيقات Trends.Earth:
invoke tecli-publish
سوف يؤدي هذا إلى تحميل كل نصوص GEE إلى api.trends.earth لتكون متاحة لمستخدمي الملحق الإضافي. يلزم أن تكون مسؤولًا لتنفيذ ذلك الأمر بنجاح.
4. حفظ كل التغييرات
تأكد من حفظ كل الملفات المُعدَّلة في git:
git add -A
git commit -m "Release version X.Y.Z"
5. إنشاء git tags ودفعها
بعد الالتزام بتغييرات الإصدار في هذا المستودع، قم بتشغيل "invoke set-tag":
invoke set-tag -v x.y.z # (where x.y.z is the new version number
يؤدي ذلك إلى إنشاء git tag مُعَلَّمة للملحق (مثلاً، "v2.1.20") ودفعها إلى GitHub. في حال كانت لديك تغييرات غير مُلتزم بها، فسوف تطلب منك المهمة الالتزام بها أولاً.
6. إنشاء إصدار GitHub
قم بتشغيل مهمة "release-github" من أجل إنشاء إصدار على GitHub مع إرفاق ملف ZIP الخاص بالملحق الإضافي:
invoke release-github
سيقوم هذا الأمر بالتالي:
قم بإنشاء ملف ZIP نظيفًا للملحق الإضافي (مثلاً، "LDMP_2.1.20.zip") مع كل التبعيات
احذف كل ملفات ".pyc" للامتثال لمتطلبات أمان مستودع QGIS.
قم بإنشاء إصدارًا على GitHub مع إرفاق ملف zip الخاص بالملحق الإضافي كملف قابل للتنزيل.
ملاحظة
سوف تحتاج إلى كود وصول شخصي على GitHub بنطاق "repo" مُهيأ في ملف "invoke.yaml" لكي يتم إجراء هذا الأمر. اطلع على رسائل الخطأ في حال فشلت عملية المصادقة وذلك من أجل الحصول على إرشادات بخصوص إنشاء كود الوصول.
7. انشر في مستودع QGIS
أخيرًا، ارفع الملحق يدويًا إلى مستودع ملحقات QGIS:
قم بتنزيل ملف zip الخاص بالملحق الإضافي (على سبيل المثال، "LDMP_2.1.20.zip") من إصدار GitHub الذي أنشأته للتو (سيظهر ضمن "الأصول").
قم بتسجيل الدخول إلى"مستودع ملحقات QGIS <https://plugins.qgis.org/plugins/>"_.
انتقل إلى صفحة إدارة الملحقات الإضافية.
قم برفع الإصدار الجديد باستخدام ملف zip.
سوف يتحقق مستودع QGIS من صحة الملف zip المضغوط، وسوف يوفره للمستخدمين عبر مدير ملحقات QGIS.
اصطلاحات ترقيم الإصدارات
يتبع برنامج Trends.Earth قواعد ترقيم الإصدارات التالية:
الأرقام الزوجية (مثلاً: 2.1.18، 2.1.20): إصدارات مستقرة مخصصة من أجل الاستخدام العام
الأرقام الفردية (مثلاً: 2.1.19، 2.1.21): إصدارات التطوير التجريبية لاختبار الميزات الجديدة
لا يتم نشر الإصدارات التجريبية مطلقًا في مستودع QGIS، ويستخدمها فريق التطوير فقط لأغراض الاختبار.