From 8cfcf5754113fff862c4ca13f17aa7df2b2bfc0b Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 30 Jun 2017 12:42:18 +1000 Subject: [PATCH] Fix tests --- python/plugins/processing/algs/qgis/Aspect.py | 2 +- .../algs/qgis/PointsLayerFromTable.py | 65 ++++++++++--------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/python/plugins/processing/algs/qgis/Aspect.py b/python/plugins/processing/algs/qgis/Aspect.py index 6167c696530..5de4b860d20 100644 --- a/python/plugins/processing/algs/qgis/Aspect.py +++ b/python/plugins/processing/algs/qgis/Aspect.py @@ -49,7 +49,7 @@ class Aspect(QgisAlgorithm): INPUT = 'INPUT' Z_FACTOR = 'Z_FACTOR' - OUTPUT_LAYER = 'OUTPUT_LAYER' + OUTPUT = 'OUTPUT' def icon(self): return QIcon(os.path.join(pluginPath, 'images', 'dem.png')) diff --git a/python/plugins/processing/algs/qgis/PointsLayerFromTable.py b/python/plugins/processing/algs/qgis/PointsLayerFromTable.py index d50d15135b1..69a737293a9 100644 --- a/python/plugins/processing/algs/qgis/PointsLayerFromTable.py +++ b/python/plugins/processing/algs/qgis/PointsLayerFromTable.py @@ -28,10 +28,8 @@ __revision__ = '$Format:%H$' from qgis.core import (QgsApplication, QgsWkbTypes, QgsPoint, - QgsCoordinateReferenceSystem, QgsFeatureRequest, QgsGeometry, - QgsProcessingUtils, QgsProcessingParameterDefinition, QgsProcessingParameterFeatureSink, QgsProcessingParameterFeatureSource, @@ -39,11 +37,6 @@ from qgis.core import (QgsApplication, QgsProcessingOutputVectorLayer, QgsProcessingParameterField) from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm -from processing.core.parameters import ParameterTable -from processing.core.parameters import ParameterTableField -from processing.core.parameters import ParameterCrs -from processing.core.outputs import OutputVector -from processing.tools import dataobjects class PointsLayerFromTable(QgisAlgorithm): @@ -87,39 +80,49 @@ class PointsLayerFromTable(QgisAlgorithm): self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Points from table'), type=QgsProcessingParameterDefinition.TypeVectorPoint)) self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Points from table'), type=QgsProcessingParameterDefinition.TypeVectorPoint)) + self.source = None + self.x_field_index = None + self.y_field_index = None + self.z_field_index = None + self.m_field_index = None + self.sink = None + self.dest_id = None + def name(self): return 'createpointslayerfromtable' def displayName(self): return self.tr('Create points layer from table') - def processAlgorithm(self, parameters, context, feedback): - source = self.parameterAsSource(parameters, self.INPUT, context) + def prepareAlgorithm(self, parameters, context, feedback): + self.source = self.parameterAsSource(parameters, self.INPUT, context) - fields = source.fields() - x_field_index = fields.lookupField(self.parameterAsString(parameters, self.XFIELD, context)) - y_field_index = fields.lookupField(self.parameterAsString(parameters, self.YFIELD, context)) - z_field_index = -1 + fields = self.source.fields() + self.x_field_index = fields.lookupField(self.parameterAsString(parameters, self.XFIELD, context)) + self.y_field_index = fields.lookupField(self.parameterAsString(parameters, self.YFIELD, context)) + self.z_field_index = -1 if self.parameterAsString(parameters, self.ZFIELD, context): - z_field_index = fields.lookupField(self.parameterAsString(parameters, self.ZFIELD, context)) - m_field_index = -1 + self.z_field_index = fields.lookupField(self.parameterAsString(parameters, self.ZFIELD, context)) + self.m_field_index = -1 if self.parameterAsString(parameters, self.MFIELD, context): - m_field_index = fields.lookupField(self.parameterAsString(parameters, self.MFIELD, context)) + self.m_field_index = fields.lookupField(self.parameterAsString(parameters, self.MFIELD, context)) wkb_type = QgsWkbTypes.Point - if z_field_index >= 0: + if self.z_field_index >= 0: wkb_type = QgsWkbTypes.addZ(wkb_type) - if m_field_index >= 0: + if self.m_field_index >= 0: wkb_type = QgsWkbTypes.addM(wkb_type) target_crs = self.parameterAsCrs(parameters, self.TARGET_CRS, context) - (sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context, - fields, wkb_type, target_crs) + (self.sink, self.dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context, + fields, wkb_type, target_crs) + return True + def processAlgorithm(self, context, feedback): request = QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry) - features = source.getFeatures() - total = 100.0 / source.featureCount() if source.featureCount() else 0 + features = self.source.getFeatures(request) + total = 100.0 / self.source.featureCount() if self.source.featureCount() else 0 for current, feature in enumerate(features): if feedback.isCanceled(): @@ -129,20 +132,20 @@ class PointsLayerFromTable(QgisAlgorithm): attrs = feature.attributes() try: - x = float(attrs[x_field_index]) - y = float(attrs[y_field_index]) + x = float(attrs[self.x_field_index]) + y = float(attrs[self.y_field_index]) point = QgsPoint(x, y) - if z_field_index >= 0: + if self.z_field_index >= 0: try: - point.addZValue(float(attrs[z_field_index])) + point.addZValue(float(attrs[self.z_field_index])) except: point.addZValue(0.0) - if m_field_index >= 0: + if self.m_field_index >= 0: try: - point.addMValue(float(attrs[m_field_index])) + point.addMValue(float(attrs[self.m_field_index])) except: point.addMValue(0.0) @@ -150,6 +153,8 @@ class PointsLayerFromTable(QgisAlgorithm): except: pass # no geometry - sink.addFeature(feature) + self.sink.addFeature(feature) + return True - return {self.OUTPUT: dest_id} + def postProcessAlgorithm(self, context, feedback): + return {self.OUTPUT: self.dest_id}