def initAlgorithm(self, config=None):
        # パラメータの定義を行う

        # QgsProcessingParameterFooBar クラスがたくさん用意されている
        # パラメータオブジェクトを self.addParameter(param) すると
        # 自動的にウィジェットが設定される

        self.addParameter(
            QgsProcessingParameterPoint(self.POINT1, self.tr('Start point')))

        self.addParameter(
            QgsProcessingParameterPoint(self.POINT2, self.tr('End point')))

        segdist_param = QgsProcessingParameterDistance(
            self.SEGMENT_DIST,
            self.tr('Segment Distance'),
            defaultValue=100,
            # パラメータ定義時の minValue は単位に関わらず適用されるため
            # 最低値のチェック及び適用はあとで行う
            # とはいえウィジットレベルで最低0以上の制約は行う
            minValue=0)
        segdist_param.setDefaultUnit(QgsUnitTypes.DistanceKilometers)
        # 高度なパラメータフラグ
        segdist_param.setFlags(QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(segdist_param)

        # 結果の出力
        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Output layer')))
Beispiel #2
0
    def initAlgorithm(self, config=None):
        """
        Here we define the inputs and outputs of the tool.
        """

        self.predicates = [
            (ls_type.value, self.tr(ls_type.value)) for ls_type in LsType
        ]
        self.INPUT = "INPUT"  # recommended name for the main input parameter
        self.FIELDS = "FIELDS"
        self.RESULT_TYPE = "RESULT_TYPE"
        self.DISTANCE_TRESHOLD = "DISTANCE_TRESHOLD"
        self.OUTPUT = "OUTPUT"  # recommended name for the main output parameter

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT,
                self.tr("Input point layer"),
                types=[QgsProcessing.TypeVectorPoint],
            )
        )
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT, self.tr("Output point layer")
            )
        )
        self.addParameter(
            QgsProcessingParameterString(
                self.FIELDS,
                self.tr("Fields (comma seperated list)"),
                defaultValue="weergavenaam",
                optional=False,
            )
        )
        self.addParameter(
            QgsProcessingParameterEnum(
                self.RESULT_TYPE,
                self.tr("Result type to query"),
                options=[p[1] for p in self.predicates],
                defaultValue=0,
                optional=False,
            )
        )
        dist_param = QgsProcessingParameterDistance(
            self.DISTANCE_TRESHOLD,
            self.tr("Score treshold"),
            defaultValue=None,
            optional=True,
            minValue=0,
        )
        dist_param.setDefaultUnit(QgsUnitTypes.DistanceMeters)
        self.addParameter(dist_param)
Beispiel #3
0
def test_distance_input():
    param = QgsProcessingParameterDistance("TEST",
                                           "LiteralDistance",
                                           defaultValue=2.0,
                                           minValue=1.0,
                                           maxValue=100.0)
    param.setDefaultUnit(QgsUnitTypes.DistanceMeters)
    inp = parse_input_definition(param)

    assert isinstance(inp, LiteralInput)
    assert inp.identifier == "TEST"
    assert inp.data_type == "length"
    assert len(inp.allowed_values) == 1
    assert inp.default == param.defaultValue()
    assert inp.allowed_values[0].allowed_type == ALLOWEDVALUETYPE.RANGE
    assert inp.allowed_values[0].minval == param.minimum()
    assert inp.allowed_values[0].maxval == param.maximum()
    assert get_metadata(
        inp, 'processing:defaultUnit')[0].href == QgsUnitTypes.toString(
            param.defaultUnit())