def getPostProcessingErrorMessage(self, wrongLayers): html = GeoAlgorithm.getPostProcessingErrorMessage(self, wrongLayers) msg = RUtils.checkRIsInstalled(True) html += ("<p>This algorithm requires R to be run. A test to check if R is correctly installed " "and configured in your system has been performed, with the following result:</p><ul><i>") if msg is None: html += "GRASS seems to be correctly installed and configured</i></li></ul>" html += "<p>The script you have executed needs the following packages:</p><ul>" packages = RUtils.getRequiredPackages(self.script) for p in packages: html += '<li>' + p + '</li>' html += "</ul><p>Make sure they are installed in your R environment before trying to execute this script.</p>" else: html += msg + "</i></li></ul>" html += '<p><a href= "http://docs.qgis.org/2.0/html/en/docs/user_manual/sextante/3rdParty.html">Click here</a> to know more about how to install and configure R to be used with SEXTANTE</p>' return html
def getPostProcessingErrorMessage(self, wrongLayers): html = GeoAlgorithm.getPostProcessingErrorMessage(self, wrongLayers) msg = RUtils.checkRIsInstalled(True) html += ( "<p>This algorithm requires R to be run. A test to check if R is correctly installed " "and configured in your system has been performed, with the following result:</p><ul><i>" ) if msg is None: html += "GRASS seems to be correctly installed and configured</i></li></ul>" html += "<p>The script you have executed needs the following packages:</p><ul>" packages = RUtils.getRequiredPackages(self.script) for p in packages: html += '<li>' + p + '</li>' html += "</ul><p>Make sure they are installed in your R environment before trying to execute this script.</p>" else: html += msg + "</i></li></ul>" html += '<p><a href= "http://docs.qgis.org/2.0/html/en/docs/user_manual/sextante/3rdParty.html">Click here</a> to know more about how to install and configure R to be used with SEXTANTE</p>' return html
def getImportCommands(self): commands = [] # just use main mirror commands.append('options("repos"="http://cran.at.r-project.org/")') # try to install packages if needed packages = RUtils.getRequiredPackages(self.script) packages.extend(['rgdal', 'raster']) for p in packages: commands.append( 'tryCatch(find.package("' + p + '"), error=function(e) install.packages("' + p +'", dependencies=TRUE))') commands.append('library("raster")') commands.append('library("rgdal")') for param in self.parameters: if isinstance(param, ParameterRaster): value = param.value value = value.replace("\\", "/") if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") elif self.useRasterPackage: commands.append(param.name + " = " + "brick(\"" + value + "\")") else: commands.append(param.name + " = " + "readGDAL(\"" + value + "\")") if isinstance(param, ParameterVector): value = param.getSafeExportedLayer() value = value.replace("\\", "/") filename = os.path.basename(value) filename = filename[:-4] folder = os.path.dirname(value) if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") else: commands.append(param.name + " = readOGR(\"" + folder + "\",layer=\"" + filename + "\")") if isinstance(param, ParameterTable): value = param.value if not value.lower().endswith("csv"): raise GeoAlgorithmExecutionException("Unsupported input file format.\n" + value) if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") else: commands.append(param.name + " <- read.csv(\"" + value + "\", head=TRUE, sep=\",\")") elif isinstance(param, (ParameterTableField, ParameterString, ParameterFile)): commands.append(param.name + "=\"" + param.value + "\"") elif isinstance(param, (ParameterNumber, ParameterSelection)): commands.append(param.name + "=" + str(param.value)) elif isinstance(param, ParameterBoolean): if param.value: commands.append(param.name + "=TRUE") else: commands.append(param.name + "=FALSE") elif isinstance(param, ParameterMultipleInput): iLayer = 0; if param.datatype == ParameterMultipleInput.TYPE_RASTER: layers = param.value.split(";") for layer in layers: #if not layer.lower().endswith("asc") and not layer.lower().endswith("tif") and not self.passFileNames: #raise GeoAlgorithmExecutionException("Unsupported input file format.\n" + layer) layer = layer.replace("\\", "/") if self.passFileNames: commands.append("tempvar" + str(iLayer)+ " <- \"" + layer + "\"") elif self.useRasterPackage: commands.append("tempvar" + str(iLayer)+ " <- " + "brick(\"" + layer + "\")") else: commands.append("tempvar" + str(iLayer)+ " <- " + "readGDAL(\"" + layer + "\")") iLayer+=1 else: exported = param.getSafeExportedLayers() layers = exported.split(";") for layer in layers: if not layer.lower().endswith("shp") and not self.passFileNames: raise GeoAlgorithmExecutionException("Unsupported input file format.\n" + layer) layer = layer.replace("\\", "/") filename = os.path.basename(layer) filename = filename[:-4] if self.passFileNames: commands.append("tempvar" + str(iLayer)+ " <- \"" + layer + "\"") else: commands.append("tempvar" + str(iLayer) + " <- " + "readOGR(\"" + layer + "\",layer=\"" + filename + "\")") iLayer+=1 s = "" s += param.name s += (" = c(") iLayer = 0 for layer in layers: if iLayer != 0: s +="," s += "tempvar" + str(iLayer) iLayer += 1 s+=")\n" commands.append(s) if self.showPlots: htmlfilename = self.getOutputValue(RAlgorithm.RPLOTS) self.plotsFilename = htmlfilename +".png" self.plotsFilename = self.plotsFilename.replace("\\", "/"); commands.append("png(\"" + self.plotsFilename + "\")"); return commands
def getImportCommands(self): commands = [] # just use main mirror commands.append('options("repos"="http://cran.at.r-project.org/")') # try to install packages if needed packages = RUtils.getRequiredPackages(self.script) packages.extend(['rgdal', 'raster']) for p in packages: commands.append('tryCatch(find.package("' + p + '"), error=function(e) install.packages("' + p + '", dependencies=TRUE))') commands.append('library("raster")') commands.append('library("rgdal")') for param in self.parameters: if isinstance(param, ParameterRaster): value = param.value value = value.replace("\\", "/") if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") elif self.useRasterPackage: commands.append(param.name + " = " + "brick(\"" + value + "\")") else: commands.append(param.name + " = " + "readGDAL(\"" + value + "\")") if isinstance(param, ParameterVector): value = param.getSafeExportedLayer() value = value.replace("\\", "/") filename = os.path.basename(value) filename = filename[:-4] folder = os.path.dirname(value) if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") else: commands.append(param.name + " = readOGR(\"" + folder + "\",layer=\"" + filename + "\")") if isinstance(param, ParameterTable): value = param.value if not value.lower().endswith("csv"): raise GeoAlgorithmExecutionException( "Unsupported input file format.\n" + value) if self.passFileNames: commands.append(param.name + " = \"" + value + "\"") else: commands.append(param.name + " <- read.csv(\"" + value + "\", head=TRUE, sep=\",\")") elif isinstance( param, (ParameterTableField, ParameterString, ParameterFile)): commands.append(param.name + "=\"" + param.value + "\"") elif isinstance(param, (ParameterNumber, ParameterSelection)): commands.append(param.name + "=" + str(param.value)) elif isinstance(param, ParameterBoolean): if param.value: commands.append(param.name + "=TRUE") else: commands.append(param.name + "=FALSE") elif isinstance(param, ParameterMultipleInput): iLayer = 0 if param.datatype == ParameterMultipleInput.TYPE_RASTER: layers = param.value.split(";") for layer in layers: #if not layer.lower().endswith("asc") and not layer.lower().endswith("tif") and not self.passFileNames: #raise GeoAlgorithmExecutionException("Unsupported input file format.\n" + layer) layer = layer.replace("\\", "/") if self.passFileNames: commands.append("tempvar" + str(iLayer) + " <- \"" + layer + "\"") elif self.useRasterPackage: commands.append("tempvar" + str(iLayer) + " <- " + "brick(\"" + layer + "\")") else: commands.append("tempvar" + str(iLayer) + " <- " + "readGDAL(\"" + layer + "\")") iLayer += 1 else: exported = param.getSafeExportedLayers() layers = exported.split(";") for layer in layers: if not layer.lower().endswith( "shp") and not self.passFileNames: raise GeoAlgorithmExecutionException( "Unsupported input file format.\n" + layer) layer = layer.replace("\\", "/") filename = os.path.basename(layer) filename = filename[:-4] if self.passFileNames: commands.append("tempvar" + str(iLayer) + " <- \"" + layer + "\"") else: commands.append("tempvar" + str(iLayer) + " <- " + "readOGR(\"" + layer + "\",layer=\"" + filename + "\")") iLayer += 1 s = "" s += param.name s += (" = c(") iLayer = 0 for layer in layers: if iLayer != 0: s += "," s += "tempvar" + str(iLayer) iLayer += 1 s += ")\n" commands.append(s) if self.showPlots: htmlfilename = self.getOutputValue(RAlgorithm.RPLOTS) self.plotsFilename = htmlfilename + ".png" self.plotsFilename = self.plotsFilename.replace("\\", "/") commands.append("png(\"" + self.plotsFilename + "\")") return commands