From 2a6847e03080e7f11fd2180b34a064baeb2db184 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 20 Aug 2017 01:00:59 +1000 Subject: [PATCH] Port define projection to new API --- .../processing/algs/qgis/DefineProjection.py | 31 ++++++++----------- .../algs/qgis/QGISAlgorithmProvider.py | 4 +-- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/python/plugins/processing/algs/qgis/DefineProjection.py b/python/plugins/processing/algs/qgis/DefineProjection.py index 492e6a38395..520ef50fd49 100644 --- a/python/plugins/processing/algs/qgis/DefineProjection.py +++ b/python/plugins/processing/algs/qgis/DefineProjection.py @@ -28,15 +28,12 @@ __revision__ = '$Format:%H$' import os import re -from qgis.core import (QgsCoordinateReferenceSystem, - QgsApplication, - QgsProcessingUtils) -from qgis.utils import iface +from qgis.core import (QgsProcessing, + QgsProcessingParameterVectorLayer, + QgsProcessingParameterCrs, + QgsProcessingOutputVectorLayer) from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm -from processing.core.parameters import ParameterVector -from processing.core.parameters import ParameterCrs -from processing.core.outputs import OutputVector pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0] @@ -45,7 +42,6 @@ class DefineProjection(QgisAlgorithm): INPUT = 'INPUT' CRS = 'CRS' - OUTPUT = 'OUTPUT' def group(self): return self.tr('Vector general tools') @@ -54,11 +50,11 @@ class DefineProjection(QgisAlgorithm): super().__init__() def initAlgorithm(self, config=None): - self.addParameter(ParameterVector(self.INPUT, - self.tr('Input Layer'))) - self.addParameter(ParameterCrs(self.CRS, 'Output CRS')) - self.addOutput(OutputVector(self.OUTPUT, - self.tr('Layer with projection'), True)) + self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT, + self.tr('Input Layer'), types=[QgsProcessing.TypeVectorAnyGeometry])) + self.addParameter(QgsProcessingParameterCrs(self.CRS, 'Output CRS')) + self.addOutput(QgsProcessingOutputVectorLayer(self.INPUT, + self.tr('Layer with projection'))) def name(self): return 'definecurrentprojection' @@ -67,9 +63,8 @@ class DefineProjection(QgisAlgorithm): return self.tr('Define current projection') def processAlgorithm(self, parameters, context, feedback): - fileName = self.getParameterValue(self.INPUT) - layer = QgsProcessingUtils.mapLayerFromString(fileName, context) - crs = QgsCoordinateReferenceSystem(self.getParameterValue(self.CRS)) + layer = self.parameterAsVectorLayer(parameters, self.INPUT, context) + crs = self.parameterAsCrs(parameters, self.CRS, context) provider = layer.dataProvider() ds = provider.dataSourceUri() @@ -89,6 +84,6 @@ class DefineProjection(QgisAlgorithm): f.write(wkt) layer.setCrs(crs) - iface.mapCanvas().refresh() + layer.triggerRepaint() - self.setOutputValue(self.OUTPUT, fileName) + return {self.INPUT: layer} diff --git a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py index f8291c73e1a..ce6817fbd35 100644 --- a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py +++ b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py @@ -53,6 +53,7 @@ from .ConvexHull import ConvexHull from .CreateAttributeIndex import CreateAttributeIndex from .CreateConstantRaster import CreateConstantRaster from .Datasources2Vrt import Datasources2Vrt +from .DefineProjection import DefineProjection from .Delaunay import Delaunay from .DeleteColumn import DeleteColumn from .DeleteDuplicateGeometries import DeleteDuplicateGeometries @@ -170,7 +171,6 @@ from .ZonalStatistics import ZonalStatistics # from .SpatialJoin import SpatialJoin # from .GeometryConvert import GeometryConvert # from .SelectByAttributeSum import SelectByAttributeSum -# from .DefineProjection import DefineProjection # from .RasterCalculator import RasterCalculator # from .ExecuteSQL import ExecuteSQL @@ -192,7 +192,6 @@ class QGISAlgorithmProvider(QgsProcessingProvider): # SpatialJoin(), # GeometryConvert(), # SelectByAttributeSum() - # DefineProjection(), # RasterCalculator(), # ExecuteSQL(), # ] @@ -209,6 +208,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider): CreateAttributeIndex(), CreateConstantRaster(), Datasources2Vrt(), + DefineProjection(), Delaunay(), DeleteColumn(), DeleteDuplicateGeometries(),