ساخت یک پلاگین پردازش (QGIS3)
در آموزش قبلی ساخت پلاگین پایتون (QGIS3) ، یاد گرفتید که چگونه یک پلاگین پایتون ایجاد کنید – از جمله رابط کاربری و منطق سفارشی برای پردازش داده ها. در حالی که این نوع افزونه ها مفید هستند، بار طراحی رابط کاربری را بر عهده نویسنده افزونه می گذارد. این باعث می شود هر افزونه راه های مختلفی برای تعامل با آن داشته باشد – که برای کاربران گیج کننده است. همچنین پلاگین های معمولی با سایر بخش های QGIS تعامل ندارند. به عنوان مثال، شما نمی توانید از عملکرد افزونه از الگوریتم دیگری استفاده کنید. اگر افزونه ای که می خواهید بنویسید در درجه اول برای تجزیه و تحلیل است، و تعامل کاربر مورد نظر شما محدود به این است که به کاربر اجازه دهید ورودی ها و خروجی ها را انتخاب کند، راه بسیار ساده تر و ترجیحی برای نوشتن افزونه ها با استفاده از چارچوب پردازش وجود دارد. نیاز به طراحی رابط کاربری را از بین می برد – فرآیند را ساده می کند. کتابخانه پردازش داخلی بسته به ورودی های شما یک رابط پردازش استاندارد ایجاد می کند که دقیقاً مانند هر الگوریتم پردازش دیگری در QGIS به نظر می رسد و رفتار می کند. همچنین به طور یکپارچه با سایر چارچوب پردازش ادغام می شود – بنابراین الگوریتم های افزونه شما می توانند در پردازش دسته ای، مدل سازی گرافیکی، فراخوانی از کنسول پایتون و غیره استفاده شوند.
مروری بر وظیفه
ما یک پلاگین ساده از آموزش ساخت پلاگین پایتون (QGIS3) را به عنوان یک افزونه پردازشی دوباره پیاده سازی خواهیم کرد. این منجر به ارائهدهنده پردازش جدیدی به نام و الگوریتمی میشود که به کاربران اجازه میدهد یک لایه برداری را انتخاب کنند و ویژگیهای آن را در یک فایل CSV بنویسند.Save AttributesSave Attributes as CSV
ابزارها را دریافت کنید
یک ویرایشگر متن یا یک IDE پایتون
هر نوع توسعه نرم افزاری نیاز به یک ویرایشگر متن خوب دارد. اگر قبلاً یک ویرایشگر متن مورد علاقه یا یک IDE (محیط توسعه یکپارچه) دارید، می توانید از آن برای این آموزش استفاده کنید. در غیر این صورت، هر پلتفرم طیف گسترده ای از گزینه های رایگان یا پولی را برای ویرایشگرهای متن ارائه می دهد. یکی را انتخاب کنید که متناسب با نیاز شما باشد.
این آموزش از ویرایشگر Notepad++ در ویندوز استفاده می کند.
ویندوز
Notepad++ یک ویرایشگر رایگان خوب برای ویندوز است. ویرایشگر Notepad++ را دانلود و نصب کنید .
توجه داشته باشید
اگر از Notepad++ استفاده میکنید، حتماً به بروید و جایگزینی با فاصله را فعال کنید . پایتون در مورد فضای سفید بسیار حساس است و این تنظیم باعث می شود که برگه ها و فضاها به درستی رفتار شوند.
افزونه افزونه ساز
یک پلاگین مفید QGIS به نام وجود دارد که تمام فایل های لازم و کد دیگ بخار را برای یک پلاگین ایجاد می کند. افزونه را پیدا و نصب کنید . برای جزئیات بیشتر در مورد نحوه نصب افزونه ها به استفاده از افزونه ها مراجعه کنید .Plugin BuilderPlugin Builder
افزونه Plugins Reloader
این افزونه کمکی دیگری است که امکان توسعه تکراری پلاگین ها را فراهم می کند. با استفاده از این افزونه، می توانید کد پلاگین خود را تغییر دهید و بدون نیاز به راه اندازی مجدد QGIS هر بار، آن را در QGIS منعکس کنید. افزونه را پیدا و نصب کنید . برای جزئیات بیشتر در مورد نحوه نصب افزونه ها به استفاده از افزونه ها مراجعه کنید .Plugin Reloader
توجه داشته باشید
Plugin Reloader یک افزونه آزمایشی است. اگر نمی توانید آن را پیدا کنید، مطمئن شوید که نمایش افزونه های آزمایشی را در تنظیمات مدیر پلاگین علامت زده اید.
- QGIS را باز کنید. به بروید .
- گفتگوی QGIS Plugin Builder را با یک فرم خواهید دید . می توانید فرم را با جزئیات مربوط به افزونه ما پر کنید. نام کلاس، نام کلاس پایتون خواهد بود که حاوی منطق پلاگین است. این نام پوشه حاوی تمام فایل های افزونه نیز خواهد بود.
SaveAttributesبه عنوان نام کلاس وارد کنید . نام افزونه نامی است که پلاگین شما تحت آن در مدیریت پلاگین ظاهر می شود . نام را به عنوان وارد کنید . در قسمت توضیحات توضیحات اضافه کنید . نام ماژول، نام فایل پایتون اصلی افزونه خواهد بود. آن را به عنوان وارد کنید . شماره نسخه ها را همانطور که هستند بگذارید و نام و آدرس ایمیل خود را در قسمت های مربوطه وارد کنید. روی Next کلیک کنید .Save Attributes (Processing)save_attributes_processing
- توضیح مختصری از افزونه را برای گفتگوی About وارد کنید و روی Next کلیک کنید .
- را از انتخابگر الگو انتخاب کنید . مقدار نام الگوریتم نحوه یافتن الگوریتم پردازش توسط کاربران در Processing Toolox خواهد بود. آن را به عنوان وارد کنید . گروه الگوریتم را خالی بگذارید . نام ارائه دهنده را به عنوان وارد کنید . در قسمت توضیحات ارائه دهنده توضیحاتی را وارد کنید . روی Next کلیک کنید .
Processing ProviderSave Attributes as CSVSave Attributes
- پلاگین ساز از شما می خواهد که نوع فایل هایی را که باید تولید کنید. انتخاب پیش فرض را نگه دارید و روی Next کلیک کنید .
- از آنجایی که قصد انتشار افزونه را نداریم، میتوانید مقادیر ردیاب اشکال ، مخزن و صفحه اصلی را بهطور پیشفرض رها کنید. کادر پرچم گذاری افزونه به عنوان آزمایشی را در پایین علامت بزنید و روی Next کلیک کنید .
- از شما خواسته می شود که یک دایرکتوری برای افزونه خود انتخاب کنید. در حال حاضر، آن را در فهرستی که به راحتی میتوانید در رایانه خود پیدا کنید ذخیره کنید و روی Generate کلیک کنید .
- در مرحله بعد، دکمه تولید را فشار دهید . پس از ایجاد الگوی افزونه شما یک گفتگوی تایید را مشاهده خواهید کرد.
توجه داشته باشید
ممکن است پیامی دریافت کنید که می گوید pyrcc5 در مسیر یافت نمی شود. می توانید این پیام را نادیده بگیرید.
- پلاگین ها در QGIS در یک پوشه خاص ذخیره می شوند. ما باید دایرکتوری پلاگین خود را در آن پوشه کپی کنیم تا بتوان از آن استفاده کرد. در QGIS، با رفتن به را پیدا کنید .
- در پوشه پروفایل، پوشه پلاگین را در زیر پوشه کپی کنید .
- اکنون ما آماده ایم تا نگاهی به پلاگین کاملاً جدیدی که ایجاد کرده ایم داشته باشیم. QGIS را ببندید و دوباره راه اندازی کنید. به بروید و افزونه را در تب Installed فعال کنید .
Save Attributes (Processing)
- به بروید . متوجه خواهید شد که یک ارائه دهنده جدید در پایین وجود دارد به نام . آن را گسترش دهید تا الگوریتمی به نام پیدا کنید . برای راه اندازی آن دوبار کلیک کنید.
Save AttributesSave Attributes as CSV
- شما متوجه یک گفتگوی الگوریتم پردازش آشنا خواهید شد که دارای یک کشویی برای یک لایه ورودی و یک انتخابگر برای یک لایه خروجی است. اکنون این گفتگو را مطابق با نیازهای خود سفارشی می کنیم. این گفتگو را ببندید.
- به فهرست پلاگین بروید و فایل را
save_attributes_processing_algorithm.pyدر یک ویرایشگر متن بارگذاری کنید. برای پلاگین خود، یک لایه برداری را به عنوان ورودی می گیریم و یک فایل CSV را به عنوان خروجی می نویسیم. بنابراین به جای وارد کردنQgsProcessingParameterFeatureSinkبه عنوان خروجی – که برای لایه برداری است –QgsProcessingParameterFileDestinationآن را برای یک فایل اضافه کنید.from qgis.core import (QgsProcessing, QgsFeatureSink, QgsProcessingAlgorithm, QgsProcessingParameterFeatureSource, QgsProcessingParameterFileDestination)
سپس به پایین اسکرول کنید و پارامتر خروجی را
initAlgorithm()با کد زیر تعریف کنید.self.addParameter( QgsProcessingParameterFileDestination( self.OUTPUT, self.tr('Output File'), 'CSV files (*.csv)', ) )
- بیایید افزونه خود را دوباره بارگذاری کنیم تا بتوانیم تغییرات را در پنجره گفتگو مشاهده کنیم. به .
save_attributes_processingدر گفتگوی Configure Plugin Reloader را انتخاب کنید .
- برای بارگیری آخرین نسخه افزونه، روی دکمه Reload پلاگین کلیک کنید . برای آزمایش این قابلیت جدید، باید چند لایه در QGIS بارگذاری کنیم. پس از بارگیری چند لایه، الگوریتم را اجرا کنید . خواهید دید که خروجی به جای یک لایه به یک فایل تبدیل شده است.
- بیایید مقداری منطق به الگوریتم اضافه کنیم که لایه برداری انتخاب شده را می گیرد و ویژگی ها را در یک فایل CSV می نویسد. توضیح این کد را می توان در شروع با برنامه نویسی پایتون (QGIS3) یافت . تفاوت قابل توجه در اینجا شمارنده است که به نشان دادن پیشرفت پردازش کمک می کند. کد زیر را به
processAlgorithmروش اضافه کنید و فایل را ذخیره کنید.def processAlgorithm(self, parameters, context, feedback): """ Here is where the processing itself takes place. """ source = self.parameterAsSource(parameters, self.INPUT, context) csv = self.parameterAsFileOutput(parameters, self.OUTPUT, context) fieldnames = [field.name() for field in source.fields()] # Compute the number of steps to display within the progress bar and # get features from source total = 100.0 / source.featureCount() if source.featureCount() else 0 features = source.getFeatures() with open(csv, 'w') as output_file: # write header line = ','.join(name for name in fieldnames) + '\n' output_file.write(line) for current, f in enumerate(features): # Stop the algorithm if cancel button has been clicked if feedback.isCanceled(): break # Add a feature in the sink line = ','.join(str(f[name]) for name in fieldnames) + '\n' output_file.write(line) # Update the progress bar feedback.setProgress(int(current * total)) return {self.OUTPUT: csv}
- به پنجره اصلی QGIS بازگردید، با کلیک بر روی دکمه بارگذاری مجدد افزونه، افزونه را بارگیری مجدد کنید . الگوریتم را اجرا کنید . یک لایه برای لایه ورودی انتخاب کنید . سپس روی دکمه … کنار فایل خروجی کلیک کنید .
- فایل خروجی را نامگذاری کنید
test.csvو روی Run کلیک کنید . الگوریتم اجرا می شود و یک فایل CSV در محل انتخاب شده تولید می کند.
- همانطور که قبلا ذکر شد، اگرچه این الگوریتم از یک افزونه می آید، اما به خوبی با ابزارهای پردازش داخلی ادغام می شود. برای نشان دادن این موضوع، اجازه دهید این الگوریتم را با استفاده از رابط پردازش دسته ای داخلی اجرا کنیم. روی الگوریتم کلیک راست کرده و Execute as Batch Process را انتخاب کنید.. .
- می توانید چندین ورودی را انتخاب کنید و این الگوریتم را به صورت دسته ای اجرا کنید تا چندین فایل CSV را در یک اجرا تولید کنید. اگر با رابط پردازش دسته ای آشنایی ندارید، برای دستورالعمل های گام به گام به پردازش دسته ای با استفاده از چارچوب پردازش (QGIS3) مراجعه کنید.
- افزونه آماده است و می توانید آن را به شکل فعلی ارسال کنید. اما ما میتوانیم با ایجاد رفتار افزونه پردازشی مانند یک افزونه معمولی، تجربه کاربر را بهبود ببخشیم. با استفاده از رویکرد ترکیبی که در زیر مشخص شده است، می توانید یک آیتم منو و یک دکمه نوار ابزار اضافه کنید. به این ترتیب، به کاربران راه آسان تری برای کشف و راه اندازی ابزارهایی که به عنوان بخشی از افزونه نصب شده اند، می دهید. ما به یک آیکون برای افزونه نیاز داریم. logo.png را دانلود کرده و در فهرست پلاگین کپی کنید.
- فایل را باز کنید
save_attributes_processing.py. واردات زیر را در بالای فایل اضافه کنید.from qgis.PyQt.QtWidgets import QAction from qgis.PyQt.QtGui import QIcon from qgis.core import QgsProcessingAlgorithm, QgsApplication import processing
به پایین اسکرول کنید و
__init__()روش را برای مقداردهی اولیه iface تغییر دهید.def __init__(self, iface): self.provider = None self.iface = iface
بیشتر به پایین اسکرول کنید و
initGuiروش را پیدا کنید. فقط حاوی کدی برای مقداردهی اولیه ارائه دهنده پردازش است. ما کد اضافه کردن یک دکمه نوار ابزار و یک آیتم منو را اضافه می کنیم. همچنین باید کدی را بهunloadمتد اضافه کنیم تا این عناصر در هنگام حذف افزونه حذف شوند.def initGui(self): self.initProcessing() icon = os.path.join(os.path.join(cmd_folder, 'logo.png')) self.action = QAction( QIcon(icon), u"Save Attributes as CSV", self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addPluginToMenu(u"&SaveAttributes", self.action) self.iface.addToolBarIcon(self.action) def unload(self): QgsApplication.processingRegistry().removeProvider(self.provider) self.iface.removePluginMenu(u"&SaveAttributes", self.action) self.iface.removeToolBarIcon(self.action)
ما دکمه و آیتم منو را به هم وصل کردهایم تا
runبا کلیک روی آن روش فعال شود. یک روش جدید در پایین اضافه کنید که از روش کمکیexecAlgorithmDialogبرای راه اندازی الگوریتم پردازش استفاده می کند.def run(self): processing.execAlgorithmDialog("Save Attributes:Save Attributes as CSV")
- در مرحله بعد، ما به یک اصلاح جزئی برای
__init__.pyفایل موجود در فهرست پلاگین نیاز داریم. فایل را باز کنید وifaceبه عبارت return اضافه کنید، بنابراین ارجاع به رابط QGIS به افزونه منتقل می شود.
- به پنجره اصلی QGIS بازگردید، با کلیک بر روی دکمه بارگذاری مجدد افزونه، افزونه را بارگیری مجدد کنید . یک نماد نوار ابزار جدید و یک آیتم منو را در زیر مشاهده خواهید کرد . برای راه اندازی الگوریتم می توانید روی آنها کلیک کنید . متوجه خواهید شد که ارائه دهنده پردازش و الگوریتم موجود در نوار ابزار همچنان آیکون های پیش فرض را دارند. بیایید آن را درست کنیم.
Save Attributes as CSV
save_attributes_processing_provider.pyفایل را از دایرکتوری افزونه باز کنید . واردات را در بالا به صورت زیر اضافه کنید.import os import inspect from qgis.PyQt.QtGui import QIcon
روش را به صورت زیر تغییر دهید
iconتا نماد دلخواه را اضافه کنید.def icon(self): cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0] icon = QIcon(os.path.join(os.path.join(cmd_folder, 'logo.png'))) return icon
- بعد،
save_attributes_processing_algorithm.pyفایل را باز کنید. واردات را در بالا به صورت زیر اضافه کنید.import os import inspect from qgis.PyQt.QtGui import QIcon
یک
iconمتد جدید با کد زیر اضافه کنید.def icon(self): cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0] icon = QIcon(os.path.join(os.path.join(cmd_folder, 'logo.png'))) return icon
- افزونه را بارگیری مجدد کنید و خواهید دید که ارائه دهنده و الگوریتم هر دو نماد سفارشی ما را دارند.
- می توانید دایرکتوری افزونه را فشرده کرده و با کاربران خود به اشتراک بگذارید. آنها می توانند محتویات را در فهرست پلاگین خود باز کرده و افزونه شما را امتحان کنند. اگر این یک افزونه واقعی بود، آن را در مخزن پلاگین QGIS آپلود می کردید تا همه کاربران QGIS بتوانند افزونه شما را پیدا و دانلود کنند.
توجه داشته باشید
این افزونه فقط برای نمایش است. این افزونه را منتشر نکنید و آن را در مخزن افزونه QGIS آپلود نکنید.
در زیر فایل منبع کامل به عنوان مرجع آمده است.
__init__.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
SaveAttributes
A QGIS plugin
This plugin adds an algorithm to save attributes of selected layer as a CSV file
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/
-------------------
begin : 2019-09-18
copyright : (C) 2019 by Ujaval Gandhi
email : ujaval@spatialthoughts.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
This script initializes the plugin, making it known to QGIS.
"""
__author__ = 'Ujaval Gandhi'
__date__ = '2019-09-18'
__copyright__ = '(C) 2019 by Ujaval Gandhi'
# noinspection PyPep8Naming
def classFactory(iface): # pylint: disable=invalid-name
"""Load SaveAttributes class from file SaveAttributes.
:param iface: A QGIS interface instance.
:type iface: QgsInterface
"""
#
from .save_attributes_processing import SaveAttributesPlugin
return SaveAttributesPlugin(iface)
save_attributes_processing.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
SaveAttributes
A QGIS plugin
This plugin adds an algorithm to save attributes of selected layer as a CSV file
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/
-------------------
begin : 2019-09-18
copyright : (C) 2019 by Ujaval Gandhi
email : ujaval@spatialthoughts.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
__author__ = 'Ujaval Gandhi'
__date__ = '2019-09-18'
__copyright__ = '(C) 2019 by Ujaval Gandhi'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
import os
import sys
import inspect
from qgis.PyQt.QtWidgets import QAction
from qgis.PyQt.QtGui import QIcon
from qgis.core import QgsProcessingAlgorithm, QgsApplication
import processing
from .save_attributes_processing_provider import SaveAttributesProvider
cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]
if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder)
class SaveAttributesPlugin(object):
def __init__(self, iface):
self.provider = None
self.iface = iface
def initProcessing(self):
"""Init Processing provider for QGIS >= 3.8."""
self.provider = SaveAttributesProvider()
QgsApplication.processingRegistry().addProvider(self.provider)
def initGui(self):
self.initProcessing()
icon = os.path.join(os.path.join(cmd_folder, 'logo.png'))
self.action = QAction(
QIcon(icon),
u"Save Attributes as CSV", self.iface.mainWindow())
self.action.triggered.connect(self.run)
self.iface.addPluginToMenu(u"&SaveAttributes", self.action)
self.iface.addToolBarIcon(self.action)
def unload(self):
QgsApplication.processingRegistry().removeProvider(self.provider)
self.iface.removePluginMenu(u"&SaveAttributes", self.action)
self.iface.removeToolBarIcon(self.action)
def run(self):
processing.execAlgorithmDialog("Save Attributes:Save Attributes as CSV")
save_attributes_processing_algorithm.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
SaveAttributes
A QGIS plugin
This plugin adds an algorithm to save attributes of selected layer as a CSV file
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/
-------------------
begin : 2019-09-18
copyright : (C) 2019 by Ujaval Gandhi
email : ujaval@spatialthoughts.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
__author__ = 'Ujaval Gandhi'
__date__ = '2019-09-18'
__copyright__ = '(C) 2019 by Ujaval Gandhi'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
import os
import inspect
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing,
QgsFeatureSink,
QgsProcessingAlgorithm,
QgsProcessingParameterFeatureSource,
QgsProcessingParameterFileDestination)
class SaveAttributesAlgorithm(QgsProcessingAlgorithm):
"""
This is an example algorithm that takes a vector layer and
creates a new identical one.
It is meant to be used as an example of how to create your own
algorithms and explain methods and variables used to do it. An
algorithm like this will be available in all elements, and there
is not need for additional work.
All Processing algorithms should extend the QgsProcessingAlgorithm
class.
"""
# Constants used to refer to parameters and outputs. They will be
# used when calling the algorithm from another algorithm, or when
# calling from the QGIS console.
OUTPUT = 'OUTPUT'
INPUT = 'INPUT'
def initAlgorithm(self, config):
"""
Here we define the inputs and output of the algorithm, along
with some other properties.
"""
# We add the input vector features source. It can have any kind of
# geometry.
self.addParameter(
QgsProcessingParameterFeatureSource(
self.INPUT,
self.tr('Input layer'),
[QgsProcessing.TypeVectorAnyGeometry]
)
)
# We add a file output of type CSV.
self.addParameter(
QgsProcessingParameterFileDestination(
self.OUTPUT,
self.tr('Output File'),
'CSV files (*.csv)',
)
)
def processAlgorithm(self, parameters, context, feedback):
"""
Here is where the processing itself takes place.
"""
source = self.parameterAsSource(parameters, self.INPUT, context)
csv = self.parameterAsFileOutput(parameters, self.OUTPUT, context)
fieldnames = [field.name() for field in source.fields()]
# Compute the number of steps to display within the progress bar and
# get features from source
total = 100.0 / source.featureCount() if source.featureCount() else 0
features = source.getFeatures()
with open(csv, 'w') as output_file:
# write header
line = ','.join(name for name in fieldnames) + '\n'
output_file.write(line)
for current, f in enumerate(features):
# Stop the algorithm if cancel button has been clicked
if feedback.isCanceled():
break
# Add a feature in the sink
line = ','.join(str(f[name]) for name in fieldnames) + '\n'
output_file.write(line)
# Update the progress bar
feedback.setProgress(int(current * total))
return {self.OUTPUT: csv}
def name(self):
"""
Returns the algorithm name, used for identifying the algorithm. This
string should be fixed for the algorithm, and must not be localised.
The name should be unique within each provider. Names should contain
lowercase alphanumeric characters only and no spaces or other
formatting characters.
"""
return 'Save Attributes as CSV'
def displayName(self):
"""
Returns the translated algorithm name, which should be used for any
user-visible display of the algorithm name.
"""
return self.tr(self.name())
def group(self):
"""
Returns the name of the group this algorithm belongs to. This string
should be localised.
"""
return self.tr(self.groupId())
def groupId(self):
"""
Returns the unique ID of the group this algorithm belongs to. This
string should be fixed for the algorithm, and must not be localised.
The group id should be unique within each provider. Group id should
contain lowercase alphanumeric characters only and no spaces or other
formatting characters.
"""
return ''
def tr(self, string):
return QCoreApplication.translate('Processing', string)
def icon(self):
"""
Should return a QIcon which is used for your provider inside
the Processing toolbox.
"""
cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]
icon = QIcon(os.path.join(os.path.join(cmd_folder, 'logo.png')))
return icon
def createInstance(self):
return SaveAttributesAlgorithm()
save_attributes_processing_provider.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
SaveAttributes
A QGIS plugin
This plugin adds an algorithm to save attributes of selected layer as a CSV file
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/
-------------------
begin : 2019-09-18
copyright : (C) 2019 by Ujaval Gandhi
email : ujaval@spatialthoughts.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
__author__ = 'Ujaval Gandhi'
__date__ = '2019-09-18'
__copyright__ = '(C) 2019 by Ujaval Gandhi'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
import os
import inspect
from qgis.PyQt.QtGui import QIcon
from qgis.core import QgsProcessingProvider
from .save_attributes_processing_algorithm import SaveAttributesAlgorithm
class SaveAttributesProvider(QgsProcessingProvider):
def __init__(self):
"""
Default constructor.
"""
QgsProcessingProvider.__init__(self)
def unload(self):
"""
Unloads the provider. Any tear-down steps required by the provider
should be implemented here.
"""
pass
def loadAlgorithms(self):
"""
Loads all algorithms belonging to this provider.
"""
self.addAlgorithm(SaveAttributesAlgorithm())
# add additional algorithms here
# self.addAlgorithm(MyOtherAlgorithm())
def id(self):
"""
Returns the unique provider id, used for identifying the provider. This
string should be a unique, short, character only string, eg "qgis" or
"gdal". This string should not be localised.
"""
return 'Save Attributes'
def name(self):
"""
Returns the provider name, which is used to describe the provider
within the GUI.
This string should be short (e.g. "Lastools") and localised.
"""
return self.tr('Save Attributes')
def icon(self):
"""
Should return a QIcon which is used for your provider inside
the Processing toolbox.
"""
cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]
icon = QIcon(os.path.join(os.path.join(cmd_folder, 'logo.png')))
return icon
def longName(self):
"""
Returns the a longer version of the provider name, which can include
extra details such as version numbers. E.g. "Lastools LIDAR tools
(version 2.2.1)". This string should be localised. The default
implementation returns the same string as name().
"""
return self.name()


































اگر می خواهید بازخورد بدهید یا تجربه خود را در مورد این آموزش به اشتراک بگذارید، لطفاً در زیر نظر دهید. (به حساب GitHub نیاز دارد)