示例#1
0
    def initAlgorithm(self, config):
        #분석지역
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_SITE,
                '❖ ' + self.tr('Analysis Site'),
                [QgsProcessing.TypeVectorPolygon],
                optional=False)
        )

        # 기존 SOC 시설 레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_CURSOC,
                '❖ ' + self.tr('Located Neighborhood Facility'),
                [QgsProcessing.TypeVectorPoint],
                optional=False)
        )

        # 인구 레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_POP,
                '❖ ' + self.tr('Resident Population'),
                [QgsProcessing.TypeVectorPoint],
                optional=False)
        )

        # 인구 필드
        self.addParameter(
            QgsProcessingParameterField(
                self.IN_POP_CNTFID,
                self.tr('Population Field'),
                None,
                self.IN_POP,
                QgsProcessingParameterField.Numeric,
                optional=False)
        )



        # 분석 최소단위(잠재적 위치 격자 사이즈)
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_GRID_SIZE,
                '❖ ' + self.tr('Analysis Unit(Cell size : m)'),
                QgsProcessingParameterNumber.Integer,
                1000, False, 100, 10000)        #디폴트, 옵션, 미니멈, 맥시멈
        )

        paramUsrgridlyr = QgsProcessingParameterFeatureSource(
                name=self.IN_USERGRID,
                description=self.tr('New Facility Location Review Area(Point)'),
                types=[QgsProcessing.TypeVectorPoint],
                defaultValue='',
                optional=True
        )
        paramUsrgridlyr.setFlags(paramUsrgridlyr.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(paramUsrgridlyr)



        # 거리 조락
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_LIMIT_DIST,
                # "❖ " + self.tr('Facility Effective Service Coverage : If you input 0, it is regarded as the whole area'),
                "❖ " + self.tr('Facility Effective Service Coverage'),
                QgsProcessingParameterNumber.Integer,
                1000, False, 0, 1000000)        #디폴트, 옵션, 미니멈, 맥시멈
        )

        # 기존 SOC 서비스 중인 인구 제외 비율
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_POP_EXCLUSION,
                '❖ ' + self.tr('Population Exclusion Ratio(%)'),
                QgsProcessingParameterNumber.Integer,
                100, False, 0, 100)  # 디폴트, 옵션, 미니멈, 맥시멈
        )

        # 등급
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_CALSSIFYNUM,
                '❖ ' + self.tr('Analysis result grade number of sections: configurable range (2 ~ 100)'),
                QgsProcessingParameterNumber.Integer,
                10, False, 2, 100)  # 디폴트, 옵션, 미니멈, 맥시멈
        )

        # 최종 결과
        self.addParameter(
            QgsProcessingParameterVectorDestination(
                self.OUTPUT,
                self.tr('Efficiency Analysis Results(Euclidean)')
            )
        )
示例#2
0
    def initAlgorithm(self, config):

        #분석지역
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_SITE,
                '❖ ' + self.tr('Analysis Site'),
                [QgsProcessing.TypeVectorPolygon],
                optional=False))

        # 기존 SOC 시설 레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_CURSOC,
                '❖ ' + self.tr('Located Neighborhood Facility'),
                [QgsProcessing.TypeVectorPoint],
                optional=False))

        # 인구 레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_POP,
                '❖ ' + self.tr('Resident Population'),
                [QgsProcessing.TypeVectorPoint],
                optional=False))

        # 인구 필드
        self.addParameter(
            QgsProcessingParameterField(self.IN_POP_CNTFID,
                                        self.tr('Population Field'),
                                        None,
                                        self.IN_POP,
                                        QgsProcessingParameterField.Numeric,
                                        optional=False))

        # 분석 최소단위(잠재적 위치 격자 사이즈)
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_GRID_SIZE,
                '❖ ' + self.tr('Analysis Unit(Cell size : m)'),
                QgsProcessingParameterNumber.Integer, 1000, False, 100,
                10000)  #디폴트, 옵션, 미니멈, 맥시멈
        )
        # QgsProcessingParameterDefinition : 사용자 레이어 추가하여 잠재적 위치로 사용

        paramUsrgridlyr = QgsProcessingParameterFeatureSource(
            name=self.IN_USERGRID,
            description=self.tr('New Facility Location Review Area(Point)'),
            types=[QgsProcessing.TypeVectorPoint],
            defaultValue='',
            optional=True)
        paramUsrgridlyr.setFlags(
            paramUsrgridlyr.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(paramUsrgridlyr)

        # 거리 조락
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_LIMIT_DIST,
                # "❖ " + self.tr('Facility Effective Service Coverage : If you input 0, it is regarded as the whole area'),
                "❖ " + self.tr('Facility Effective Service Coverage'),
                QgsProcessingParameterNumber.Integer,
                1000,
                False,
                0,
                1000000)  #디폴트, 옵션, 미니멈, 맥시멈
        )

        # 노드레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.IN_NODE,
                '❖ ' + self.tr('Node Layer'), [QgsProcessing.TypeVectorPoint],
                optional=False))
        # 노드레이어 PK
        self.addParameter(
            QgsProcessingParameterField(self.IN_NODE_ID,
                                        self.tr('Node ID FIELD'),
                                        None,
                                        self.IN_NODE,
                                        QgsProcessingParameterField.Any,
                                        optional=False))

        # 링크레이어
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.IN_LINK,
                                                '❖ ' + self.tr('Link Layer'),
                                                [QgsProcessing.TypeVectorLine],
                                                optional=False))

        self.addParameter(
            QgsProcessingParameterEnum(
                self.IN_LINK_TYPE,
                self.tr('Network direction'),
                options=[self.tr('One-way'),
                         self.tr('Bidirectional')],
                defaultValue=1,
                optional=False))

        # 기점 노드 필드
        self.addParameter(
            QgsProcessingParameterField(self.IN_LINK_FNODE,
                                        self.tr('Origin field'),
                                        None,
                                        self.IN_LINK,
                                        QgsProcessingParameterField.Any,
                                        optional=False))

        self.addParameter(
            QgsProcessingParameterField(self.IN_LINK_TNODE,
                                        self.tr('Destination'),
                                        None,
                                        self.IN_LINK,
                                        QgsProcessingParameterField.Any,
                                        optional=False))

        self.addParameter(
            QgsProcessingParameterField(self.IN_LINK_LENGTH,
                                        self.tr('Link Length Field'),
                                        None,
                                        self.IN_LINK,
                                        QgsProcessingParameterField.Numeric,
                                        optional=False))
        self.addParameter(
            QgsProcessingParameterField(
                self.IN_LINK_SPEED,
                self.
                tr('Speed Field : If the speed value is zero, it is replaced by the minimum value'
                   ),
                None,
                self.IN_LINK,
                QgsProcessingParameterField.Numeric,
                optional=True))

        # 기존 SOC 서비스 중인 인구 제외 비율
        self.addParameter(
            QgsProcessingParameterNumber(
                self.IN_POP_EXCLUSION,
                '❖ ' + self.tr('Population Exclusion Ratio(%)'),
                QgsProcessingParameterNumber.Integer, 100, False, 0,
                100)  # 디폴트, 옵션, 미니멈, 맥시멈
        )

        # 등급
        self.addParameter(
            QgsProcessingParameterNumber(self.IN_CALSSIFYNUM, '❖' + self.tr(
                'Analysis result grade number of sections: configurable range (2 ~ 100)'
            ), QgsProcessingParameterNumber.Integer, 10, False, 2,
                                         100)  # 디폴트, 옵션, 미니멈, 맥시멈
        )

        # 최종 결과
        self.addParameter(
            QgsProcessingParameterVectorDestination(
                self.OUTPUT, self.tr('Efficiency Analysis Results(Network)')))
    def initAlgorithm(self, config=None):

        self.addParameter(
            QgsProcessingParameterVectorLayer(
                "areaboundary",
                "Area Boundary",
                types=[QgsProcessing.TypeVectorPolygon],
                defaultValue=None,
            ))
        param = QgsProcessingParameterFeatureSource(
            "cnlookup",
            "CN_Lookup.csv",
            optional=True,
            types=[QgsProcessing.TypeVector],
            defaultValue="",
        )
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)
        param = QgsProcessingParameterBoolean(
            "drainedsoilsleaveuncheckedifnotsure",
            "Drained Soils? [leave unchecked if not sure]",
            defaultValue=False,
        )
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)
        self.addParameter(
            QgsProcessingParameterBoolean(
                "OutputNLCDLandCoverRaster",
                "Output NLCD Land Cover Raster",
                defaultValue=False,
            ))
        self.addParameter(
            QgsProcessingParameterBoolean(
                "OutputNLCDLandCoverVector",
                "Output NLCD Land Cover Vector",
                defaultValue=False,
            ))
        self.addParameter(
            QgsProcessingParameterBoolean(
                "OutputNLCDImperviousRaster",
                "Output NLCD Impervious Surface Raster",
                defaultValue=False,
            ))
        self.addParameter(
            QgsProcessingParameterBoolean("OutputSoilLayer",
                                          "Output Soil Layer",
                                          defaultValue=False))
        self.addParameter(
            QgsProcessingParameterBoolean(
                "OutputCurveNumberLayer",
                "Output Curve Number Layer",
                defaultValue=False,
            ))

        # read usage
        with open(os.path.join(cmd_folder, "usage_counter.log"), "r+") as f:
            counter = int(f.readline())

        # check if counter is milestone
        if (counter + 1) % 25 == 0:
            self.addOutput(
                QgsProcessingOutputHtml("Message", "Curve Number Generator"))

        # check if new version is available of the plugin
        try:  # try except because this is not a critical part
            avail_version = check_avail_plugin_version(
                "Curve Number Generator")
            if avail_version != curr_version:
                upgradeMessage()
        except:
            pass