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')))
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)
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())