def getValue(self): key = None if self.use_temporary and isinstance( self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' elif self.use_temporary and not self.default_selection: key = self.parameter.generateTemporaryDestination() else: key = self.leText.text() if not key and self.parameter.flags( ) & QgsProcessingParameterDefinition.FlagOptional: return None if key and not key.startswith('memory:') \ and not key.startswith('ogr:') \ and not key.startswith('postgres:') \ and not key.startswith('postgis:'): # output should be a file path folder = QFileInfo(key).path() if folder == '.': # output name does not include a folder - use default default_folder = ProcessingConfig.getSetting( ProcessingConfig.OUTPUT_FOLDER) key = QDir(default_folder).filePath(key) if isinstance(self.parameter, QgsProcessingParameterFolderDestination): return key if isinstance(self.parameter, QgsProcessingParameterFileDestination): return key value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def getValue(self): key = None if self.use_temporary and isinstance(self.parameter, QgsProcessingParameterFeatureSink): key = QgsProcessing.TEMPORARY_OUTPUT elif self.use_temporary and not self.default_selection: key = QgsProcessing.TEMPORARY_OUTPUT else: key = self.leText.text() if not key and self.parameter.flags() & QgsProcessingParameterDefinition.FlagOptional: return None if key and not key == QgsProcessing.TEMPORARY_OUTPUT \ and not key.startswith('memory:') \ and not key.startswith('ogr:') \ and not key.startswith('postgres:') \ and not key.startswith('postgis:'): # output should be a file path folder = QFileInfo(key).path() if folder == '.': # output name does not include a folder - use default default_folder = ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER) key = QDir(default_folder).filePath(key) if isinstance(self.parameter, QgsProcessingParameterFolderDestination): return key if isinstance(self.parameter, QgsProcessingParameterFileDestination): return key value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def getValue(self): key = None if not self.leText.text(): if isinstance(self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' else: key = self.leText.text() value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def test_output_layer_definition(self): """ Test that QgsProcessingOutputLayerDefinition values are correctly loaded and written """ doc = QDomDocument("properties") definition = QgsProcessingOutputLayerDefinition(QgsProperty.fromValue('my sink')) definition.createOptions = {'opt': 1, 'opt2': 2} elem = QgsXmlUtils.writeVariant(definition, doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c.sink.staticValue(), 'my sink') self.assertEqual(c.createOptions, {'opt': 1, 'opt2': 2})
def getValue(self): key = None if self.use_temporary and isinstance(self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' else: key = self.leText.text() if not key and self.parameter.flags() & QgsProcessingParameterDefinition.FlagOptional: return None value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def getValue(self): key = None if self.use_temporary and isinstance( self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' else: key = self.leText.text() if not key and self.parameter.flags( ) & QgsProcessingParameterDefinition.FlagOptional: return None value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def getValue(self): key = None if self.use_temporary and isinstance(self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' elif self.use_temporary and not self.default_selection: key = self.parameter.generateTemporaryDestination() else: key = self.leText.text() if not key and self.parameter.flags() & QgsProcessingParameterDefinition.FlagOptional: return None if isinstance(self.parameter, QgsProcessingParameterFolderDestination): return key if isinstance(self.parameter, QgsProcessingParameterFileDestination): return key value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def getValue(self): key = None if self.use_temporary and isinstance(self.parameter, QgsProcessingParameterFeatureSink): key = 'memory:' elif self.use_temporary and not self.default_selection: key = self.parameter.generateTemporaryDestination() else: key = self.leText.text() if not key and self.parameter.flags() & QgsProcessingParameterDefinition.FlagOptional: return None if isinstance(self.parameter, QgsProcessingParameterFolderDestination): return key if isinstance(self.parameter, QgsProcessingParameterFileDestination): return key value = QgsProcessingOutputLayerDefinition(key) value.createOptions = {'fileEncoding': self.encoding} return value
def __init__( self, algorithm_id: str, artifact_parameter_name: str, output_name: str, negate_output: bool, artifact_path: typing.Union[str, Path], model: QtCore.QAbstractItemModel, validated_idx: QtCore.QModelIndex, notes_idx: QtCore.QModelIndex, execution_params: typing.Optional[typing.Dict] = None, context: typing.Optional[QgsProcessingContext] = None, feedback: typing.Optional[QgsProcessingFeedback] = None, ): self.context = context or QgsProcessingContext() self.feedback = feedback or QgsProcessingFeedback() registry = QgsApplication.processingRegistry() algorithm = registry.createAlgorithmById(algorithm_id) if algorithm is None: raise RuntimeError(f"Invalid algorithm_id: {algorithm_id!r}") self.algorithm = algorithm self.output_name = output_name self.negate_output = negate_output self.model = model self.validated_idx = validated_idx self.notes_idx = notes_idx self.params = dict(execution_params) if execution_params else {} if isinstance(artifact_path, Path): input_ = str(artifact_path) else: input_ = artifact_path self.params.update({artifact_parameter_name: input_}) for param_def in self.algorithm.parameterDefinitions(): if isinstance(param_def, self._OUTPUT_TYPES): out_layer_definition = QgsProcessingOutputLayerDefinition( "memory:") out_layer_definition.createOptions = {"fileEncoding": "utf-8"} self.params[param_def.name()] = out_layer_definition