Beispiel #1
0
    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
Beispiel #3
0
 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
Beispiel #4
0
    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