أكثر

الوصول إلى "المعالجة" باستخدام بايثون؟

الوصول إلى


أريد الوصول إلى وظيفة خطوط التفجير في Python خارج QGIS من برنامج نصي مستقل.

ما هي الوحدة التي يجب علي تحميلها لاستخدامها؟

كيف يمكنني الوصوليتم المعالجة?

من qgis.core import * layerInput = QgsVectorLayer ('test.shp'، 'test'، 'ogr') Processing.runalg ('qgis: explodelines'، layerInput، 'temp.shp')

تحديث 24.04.2018: شاهد كيفية القيام بذلك في QGIS v3.x هنا.


بالنسبة إلى QGIS v2.x

وجدت أخيرًا الطريقة الصحيحة لتشغيل خوارزميات المعالجة عبر نصوص PyQGIS المستقلة.

باستخدام معالجة الإصدار 2.2.0-2 ، يمكنك تجربة البرنامج النصي التالي:

# تحضير بيئة استيراد sys من qgis.core import * من PyQt4.QtGui import * app = QApplication ([]) QgsApplication.setPrefixPath ("/ usr"، True) QgsApplication.initQgis () # Prepare Processing framework sys.path.append ('/home/user/.qgis2/python/plugins') # المجلد حيث توجد المعالجة من Processing.core.Processing import Processing Processing.initialize () from process.tools import * # تشغيل طبقة الخوارزمية Input = QgsVectorLayer ('test .shp '،' test '،' ogr ') general.runalg (' qgis: explodelines '، layerInput،' temp.shp ') # الخروج من التطبيقات QgsApplication.exitQgis () QApplication.exit ()

يمكن أن توجد إصدارات المعالجة الأحدث على/ usr / share / qgis / python / plugins، لذلك قد تحتاج إلى استخدامsys.path.append ('/ usr / share / qgis / python / plugins')وفقا لذلك.

لقد وجدت مثال العمل في الخطأ: لم يتم العثور على الخوارزمية ، والتي بدورها تستند إلى مناقشة القائمة البريدية لـ Qgis-dev.


حتى أعمل بالطريقة العامة للقيام بذلك ، سأخبرك بحل بديل.

أستخدم الإصدار 2.2.0-2 من المكوّن الإضافي Processing (أقترح عليك استخدام هذا الإصدار) ، المثبت في/home/germap/.qgis2/python/plugins/على حاسوبي. تحتاج إلى معرفة موقع المجلد هذا ، لأنك تستورد وحدة المعالجة من هناك.

بما أنك تعرف المزود (qgis) والخوارزمية (انفجارات) ، يمكنك إلقاء نظرة على/home/germap/.qgis2/python/plugins/processing/algs/qgis/لأخذ اسم البرنامج النصي لخطوط الإنفجار:تنفجرتتيح لك هذه المعلومات استيراد الخوارزمية مباشرة إلى نص Python النصي المستقل.

لذلك ، افتح وحدة تحكم Python وانسخ النص البرمجي التالي (أنا أستخدم GNU / Linux ، لذلك يتم تعيين متغيرات البيئة افتراضيًا ، مما يسمح لي باستيراد مكتبات qgis و PyQt4 بنسيم):

# إعداد نظام استيراد البيئة من PyQt4.QtGui استيراد * من qgis.core import * app = QApplication ([]) QgsApplication.setPrefixPath ("/ usr"، True) QgsApplication.initQgis () # أخبر Python من أين ستحصل على المعالجة من sys.path.append ('/ home / germap / .qgis2 / python / plugins') # قم بالإشارة إلى الخوارزمية التي تريد تشغيلها من process.algs.qgis.Explode import * alg = Explode () # Set input and output inLayer = QgsVectorLayer ('/ home / user / data / in.shp'، 'input'، 'ogr') outLayer = '/home/user/data/out.shp' alg.setParameterValue ('INPUT'، inLayer) alg.setOutputValue ('الإخراج' ، الطبقة الخارجية) # تشغيل الخوارزمية من المعالجة .core.SilentProgress استيراد SilentProgress التقدم = SilentProgress () alg.processAlgorithm (progress)

إذا لم تحصل على رسائل خطأ ، فهذا كل شيء. تم حفظ طبقة الإخراج في مسار الإخراج الذي حددته (/home/user/data/out.shp)

ملاحظة: فيما يتعلق بطريقة عامة (أي استدعاء الخوارزميات بالاسم) ، وجدت بعض المشكلات التي أحتاج إلى حلها قبل نشرها. بمجرد تشغيله ، سأقوم بنشره.