def defineCharacteristics(self): self.name = "Points layer from table" self.group = "Vector creation tools" self.addParameter(ParameterTable(self.INPUT, "Input layer")) self.addParameter(ParameterTableField(self.XFIELD, "X field", self.INPUT, ParameterTableField.DATA_TYPE_ANY)) self.addParameter(ParameterTableField(self.YFIELD, "Y field", self.INPUT, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputVector(self.OUTPUT, "Output layer"))
def defineCharacteristics(self): self.name = "Mean and standard deviation plot" self.group = "Graphics" self.addParameter(ParameterTable(self.INPUT, "Input table")) self.addParameter(ParameterTableField(self.NAME_FIELD, "Category name field", self.INPUT,ParameterTableField.DATA_TYPE_ANY)) self.addParameter(ParameterTableField(self.MEAN_FIELD, "Mean field", self.INPUT)) self.addParameter(ParameterTableField(self.STDDEV_FIELD, "StdDev field", self.INPUT)) self.addOutput(OutputHTML(self.OUTPUT, "Output"))
def defineCharacteristics(self): self.name = "Bar plot" self.group = "Graphics" self.addParameter(ParameterTable(self.INPUT, "Input table")) self.addParameter( ParameterTableField(self.NAME_FIELD, "Category name field", self.INPUT)) self.addParameter( ParameterTableField(self.VALUE_FIELD, "Value field", self.INPUT)) self.addOutput(OutputHTML(self.OUTPUT, "Output"))
def okPressed(self): description = unicode(self.nameTextBox.text()) if description.strip() == "": QMessageBox.critical(self, "Unable to define parameter", "Invalid parameter name") return if self.param is None: validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" safeName = ''.join(c for c in description if c in validChars) name = self.paramType.upper().replace(" ","") + "_" + safeName.upper() else: name = self.param.name if self.paramType == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN or isinstance(self.param, ParameterBoolean): self.param = ParameterBoolean(name, description, self.yesNoCombo.currentIndex() == 0) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD or isinstance(self.param, ParameterTableField): if self.parentCombo.currentIndex() < 0: QMessageBox.critical(self, "Unable to define parameter", "Wrong or missing parameter values") return parent = self.parentCombo.itemData(self.parentCombo.currentIndex()) self.param = ParameterTableField(name, description, parent) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_RASTER or isinstance(self.param, ParameterRaster): self.param = ParameterRaster(name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE or isinstance(self.param, ParameterTable): self.param = ParameterTable(name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_VECTOR or isinstance(self.param, ParameterVector): self.param = ParameterVector(name, description, self.shapetypeCombo.currentIndex()-1, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE or isinstance(self.param, ParameterMultipleInput): self.param = ParameterMultipleInput(name, description, self.datatypeCombo.currentIndex()-1, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_NUMBER or isinstance(self.param, ParameterNumber): try: vmin = str(self.minTextBox.text()).strip() if vmin == "": vmin = None else: vmin = float(vmin) vmax = str(self.maxTextBox.text()).strip() if vmax == "": vmax = None else: vmax = float(vmax) self.param = ParameterNumber(name, description, vmin, vmax, float(str(self.defaultTextBox.text()))) except: QMessageBox.critical(self, "Unable to define parameter", "Wrong or missing parameter values") return elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_STRING or isinstance(self.param, ParameterString): self.param = ParameterString(name, description, str(self.defaultTextBox.text())) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_EXTENT or isinstance(self.param, ParameterExtent): self.param = ParameterExtent(name, description) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_FILE or isinstance(self.param, ParameterFile): self.param = ParameterFile(name, description) self.close()
def defineCharacteristics(self): self.name = "Geocode using Google" self.group = "Vector general tools" self.addParameter(ParameterTable(self.CSVNAME, "Input table", False)) self.addParameter( ParameterTableField(self.ADDRESS, "Address", self.CSVNAME)) self.addParameter(ParameterTableField(self.CITY, "City", self.CSVNAME)) self.addParameter( ParameterTableField(self.STATE, "State", self.CSVNAME)) self.addParameter( ParameterTableField(self.COUNTRY, "Country", self.CSVNAME)) self.addOutput(OutputVector(self.SHAPEFILENAME, "Output")) self.addOutput(OutputTable(self.NOTFOUNDFILE, "Not found output list"))
def defineCharacteristics(self): self.name = "Geocode Google" self.group = "Transfer" self.addParameter(ParameterTable(self.CSVNAME, "Input CSV File", False)) self.addParameter( ParameterTableField(self.ADDRESS, "Address", self.CSVNAME)) self.addParameter(ParameterTableField(self.CITY, "City", self.CSVNAME)) self.addParameter( ParameterTableField(self.STATE, "State", self.CSVNAME)) self.addParameter( ParameterTableField(self.COUNTRY, "Country", self.CSVNAME)) self.addOutput(OutputVector(self.SHAPEFILENAME, "Output Shapefile")) self.addOutput( OutputTable(self.NOTFOUNDFILE, "Not Found CSV Output List"))
def defineCharacteristics(self): self.name = "Attribute Join" self.group = "Transfer" self.addParameter( ParameterTable(self.INFILENAME, "Input CSV File", False)) self.addParameter( ParameterTableField(self.JOINFIELD, "CSV File Field", self.INFILENAME)) self.addParameter( ParameterVector(self.LAYERNAME, "Join Layer", ParameterVector.VECTOR_TYPE_ANY)) self.addParameter( ParameterTableField(self.JOINATTRIBUTE, "Join Layer Attribute", mmqgisx_attribute_join_dialog.LAYERNAME)) self.addOutput(OutputVector(self.OUTFILENAME, "Output Shapefile")) self.addOutput( OutputTable(self.NOTFOUNDNAME, "Not Found CSV Output List"))
def defineCharacteristics(self): self.name = "Attribute join" self.group = "Vector table tools" self.addParameter( ParameterVector(self.LAYERNAME, "Input layer", ParameterVector.VECTOR_TYPE_ANY)) self.addParameter( ParameterTableField(self.JOINATTRIBUTE, "Layer attribute field", mmqgisx_attribute_join_algorithm.LAYERNAME)) self.addParameter( ParameterTable(self.INFILENAME, "Table to join", False)) self.addParameter( ParameterTableField(self.JOINFIELD, "Table field", self.INFILENAME)) self.addOutput(OutputVector(self.OUTFILENAME, "Output")) self.addOutput( OutputTable(self.NOTFOUNDNAME, "Not Found CSV Output List"))
def defineCharacteristics(self): self.name = "Geometry Import" self.group = "Transfer" self.addParameter( ParameterTable(self.NODEFILENAME, "Input CSV Nodes File", False)) self.addParameter( ParameterTableField(self.LONGITUDE, "Longitude Column", self.NODEFILENAME)) self.addParameter( ParameterTableField(self.LATITUDE, "Latitude Column", self.NODEFILENAME)) self.addParameter( ParameterTableField(self.SHAPEID, "Shape ID COlumn", self.NODEFILENAME)) self.geotypes = ['Point', 'Polyline', 'Polygon'] self.addParameter( ParameterSelection(self.GEOMETRYTYPE, "Geometry Type", self.geotypes, default=0)) self.addOutput(OutputVector(self.SHAPEFILENAME, "Output Shapefile"))
def defineCharacteristics(self): self.name = "Create from table" self.group = "Vector creation tools" self.addParameter( ParameterTable(self.NODEFILENAME, "Input table", False)) self.addParameter( ParameterTableField(self.LONGITUDE, "Longitude column", self.NODEFILENAME)) self.addParameter( ParameterTableField(self.LATITUDE, "Latitude column", self.NODEFILENAME)) self.addParameter( ParameterTableField(self.SHAPEID, "Shape ID column", self.NODEFILENAME)) self.geotypes = ['Point', 'Polyline', 'Polygon'] self.addParameter( ParameterSelection(self.GEOMETRYTYPE, "Geometry type", self.geotypes, default=0)) self.addOutput(OutputVector(self.SHAPEFILENAME, "Output"))
def processParameterLine(self,line): param = None out = None line = line.replace("#", ""); # If the line is in the format of the text description files for normal algorithms, # then process it using parameter and output factories if '|' in line: self.processDescriptionParameterLine(line) return tokens = line.split("="); desc = self.createDescriptiveName(tokens[0]) if tokens[1].lower().strip() == "group": self.group = tokens[0] return if tokens[1].lower().strip() == "name": self.name = tokens[0] return if tokens[1].lower().strip() == "raster": param = ParameterRaster(tokens[0], desc, False) elif tokens[1].lower().strip() == "vector": param = ParameterVector(tokens[0], desc,ParameterVector.VECTOR_TYPE_ANY) elif tokens[1].lower().strip() == "table": param = ParameterTable(tokens[0], desc, False) elif tokens[1].lower().strip() == "multiple raster": param = ParameterMultipleInput(tokens[0], desc, ParameterMultipleInput.TYPE_RASTER) param.optional = False elif tokens[1].lower().strip() == "multiple vector": param = ParameterMultipleInput(tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY) param.optional = False elif tokens[1].lower().strip().startswith("selection"): options = tokens[1].strip()[len("selection"):].split(";") param = ParameterSelection(tokens[0], desc, options); elif tokens[1].lower().strip().startswith("boolean"): default = tokens[1].strip()[len("boolean")+1:] param = ParameterBoolean(tokens[0], desc, default) elif tokens[1].lower().strip() == "extent": param = ParameterExtent(tokens[0], desc) elif tokens[1].lower().strip() == "file": param = ParameterFile(tokens[0], desc, False) elif tokens[1].lower().strip() == "folder": param = ParameterFile(tokens[0], desc, True) elif tokens[ 1].lower().strip().startswith("number"): default = tokens[1].strip()[len("number")+1:] param = ParameterNumber(tokens[0], desc, default=default) elif tokens[1].lower().strip().startswith("field"): field = tokens[1].strip()[len("field")+1:] found = False for p in self.parameters: if p.name == field: found = True break if found: param = ParameterTableField(tokens[0], tokens[0], field) elif tokens[1].lower().strip().startswith("string"): default = tokens[1].strip()[len("string")+1:] param = ParameterString(tokens[0], desc, default) elif tokens[1].lower().strip().startswith("output raster"): out = OutputRaster() elif tokens[1].lower().strip().startswith("output vector"): out = OutputVector() elif tokens[1].lower().strip().startswith("output table"): out = OutputTable() elif tokens[1].lower().strip().startswith("output html"): out = OutputHTML() elif tokens[1].lower().strip().startswith("output file"): out = OutputFile() elif tokens[1].lower().strip().startswith("output number"): out = OutputNumber() elif tokens[1].lower().strip().startswith("output string"): out = OutputString() if param != None: self.addParameter(param) elif out != None: out.name = tokens[0] out.description = tokens[0] self.addOutput(out) else: raise WrongScriptException("Could not load script:" + self.descriptionFile + ".\n Problem with line \"" + line + "\"")
def processParameterLine(self, line): param = None out = None line = line.replace("#", "") if line.lower().strip().startswith("showplots"): self.showPlots = True self.addOutput(OutputHTML(RAlgorithm.RPLOTS, "R Plots")) return if line.lower().strip().startswith("dontuserasterpackage"): self.useRasterPackage = False return if line.lower().strip().startswith("passfilenames"): self.passFileNames = True return tokens = line.split("=") desc = self.createDescriptiveName(tokens[0]) if tokens[1].lower().strip() == "group": self.group = tokens[0] return if tokens[1].lower().strip().startswith("raster"): param = ParameterRaster(tokens[0], desc, False) elif tokens[1].lower().strip() == "vector": param = ParameterVector(tokens[0], desc, ParameterVector.VECTOR_TYPE_ANY) elif tokens[1].lower().strip() == "table": param = ParameterTable(tokens[0], desc, False) elif tokens[1].lower().strip().startswith("multiple raster"): param = ParameterMultipleInput(tokens[0], desc, ParameterMultipleInput.TYPE_RASTER) param.optional = False elif tokens[1].lower().strip() == "multiple vector": param = ParameterMultipleInput( tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY) param.optional = False elif tokens[1].lower().strip().startswith("selection"): options = tokens[1].strip()[len("selection"):].split(";") param = ParameterSelection(tokens[0], desc, options) elif tokens[1].lower().strip().startswith("boolean"): default = tokens[1].strip()[len("boolean") + 1:] param = ParameterBoolean(tokens[0], desc, default) elif tokens[1].lower().strip().startswith("number"): try: default = float(tokens[1].strip()[len("number") + 1:]) param = ParameterNumber(tokens[0], desc, default=default) except: raise WrongScriptException("Could not load R script:" + self.descriptionFile + ".\n Problem with line \"" + line + "\"") elif tokens[1].lower().strip().startswith("field"): field = tokens[1].strip()[len("field") + 1:] found = False for p in self.parameters: if p.name == field: found = True break if found: param = ParameterTableField(tokens[0], tokens[0], field) elif tokens[1].lower().strip() == "extent": param = ParameterExtent(tokens[0], desc) elif tokens[1].lower().strip() == "file": param = ParameterFile(tokens[0], desc, False) elif tokens[1].lower().strip() == "folder": param = ParameterFile(tokens[0], desc, True) elif tokens[1].lower().strip().startswith("string"): default = tokens[1].strip()[len("string") + 1:] param = ParameterString(tokens[0], desc, default) elif tokens[1].lower().strip().startswith("output raster"): out = OutputRaster() elif tokens[1].lower().strip().startswith("output vector"): out = OutputVector() elif tokens[1].lower().strip().startswith("output table"): out = OutputTable() elif tokens[1].lower().strip().startswith("output file"): out = OutputFile() if param != None: self.addParameter(param) elif out != None: out.name = tokens[0] out.description = tokens[0] self.addOutput(out) else: raise WrongScriptException("Could not load R script:" + self.descriptionFile + ".\n Problem with line \"" + line + "\"")