Created
April 25, 2018 10:37
-
-
Save ghtmtt/cd6ee99f69ce87298f9eb3466129306f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from PyQt5.QtCore import QCoreApplication | |
from qgis.core import (QgsProcessing, | |
QgsFeatureSink, | |
QgsProcessingAlgorithm, | |
QgsProcessingParameterFeatureSource, | |
QgsProcessingParameterFeatureSink) | |
import processing | |
class Example2ProcessingAlgorithm(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. | |
INPUT = 'INPUT' | |
OUTPUT = 'OUTPUT' | |
def tr(self, string): | |
""" | |
Returns a translatable string with the self.tr() function. | |
""" | |
return QCoreApplication.translate('Processing', string) | |
def createInstance(self): | |
return Example2ProcessingAlgorithm() | |
def name(self): | |
return 'myscript2' | |
def displayName(self): | |
return self.tr('My Script') | |
def group(self): | |
return self.tr('Example scripts') | |
def groupId(self): | |
return 'examplescripts' | |
def initAlgorithm(self, config=None): | |
self.addParameter( | |
QgsProcessingParameterFeatureSource( | |
self.INPUT, | |
self.tr('Input layer'), | |
[QgsProcessing.TypeVectorAnyGeometry] | |
) | |
) | |
self.addParameter( | |
QgsProcessingParameterFeatureSink( | |
self.OUTPUT, | |
self.tr('Output layer') | |
) | |
) | |
def processAlgorithm(self, parameters, context, feedback): | |
source = self.parameterAsSource( | |
parameters, | |
self.INPUT, | |
context | |
) | |
(sink, dest_id) = self.parameterAsSink( | |
parameters, | |
self.OUTPUT, | |
context, | |
source.fields(), | |
source.wkbType(), | |
source.sourceCrs() | |
) | |
param = { | |
'INPUT': source, | |
'OUTPUT': dest_id | |
} | |
processing.run("native:saveselectedfeatures", param) | |
return {self.OUTPUT: dest_id} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment