fixed bug when running unsaved models

added gridmetrics to FUSION

git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@172 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
This commit is contained in:
volayaf 2012-05-08 12:15:15 +00:00
parent c80371a727
commit cd2f975ae9
6 changed files with 57 additions and 6 deletions

View File

@ -11,6 +11,7 @@ from sextante.fusion.CanopyModel import CanopyModel
from sextante.fusion.ClipData import ClipData
from sextante.fusion.Cover import Cover
from sextante.fusion.FilterData import FilterData
from sextante.fusion.GridMetrics import GridMetrics
class FusionAlgorithmProvider(AlgorithmProvider):
@ -18,7 +19,7 @@ class FusionAlgorithmProvider(AlgorithmProvider):
def __init__(self):
AlgorithmProvider.__init__(self)
self.actions.append(OpenViewerAction())
self.algsList = [CloudMetrics(), CanopyMaxima(), CanopyModel(), ClipData(), Cover(), FilterData()]
self.algsList = [CloudMetrics(), CanopyMaxima(), CanopyModel(), ClipData(), Cover(), FilterData(), GridMetrics()]
def initializeSettings(self):
AlgorithmProvider.initializeSettings(self)

View File

@ -0,0 +1,41 @@
import os
from sextante.parameters.ParameterFile import ParameterFile
from sextante.outputs.OutputTable import OutputTable
from sextante.fusion.FusionUtils import FusionUtils
from sextante.fusion.FusionAlgorithm import FusionAlgorithm
from sextante.parameters.ParameterNumber import ParameterNumber
class GridMetrics(FusionAlgorithm):
INPUT = "INPUT"
OUTPUT = "OUTPUT"
GROUND = "GROUND"
HEIGHT = "HEIGHT"
CELLSIZE = "CELLSIZE"
def defineCharacteristics(self):
self.name = "Grid Metrics"
self.group = "Points"
self.addParameter(ParameterFile(self.INPUT, "Input las layer"))
self.addParameter(ParameterFile(self.GROUND, "Input ground DTM layer"))
self.addParameter(ParameterNumber(self.HEIGHT, "Height break"))
self.addParameter(ParameterNumber(self.CELLSIZE, "Cellsize"))
self.addOutput(OutputTable(self.OUTPUT, "Output table with grid metrics"))
self.addAdvancedModifiers()
def processAlgorithm(self, progress):
commands = [os.path.join(FusionUtils.FusionPath(), "GridMetrics.exe")]
commands.append("/verbose")
self.addAdvancedModifiersToCommand(commands)
commands.append(self.getParameterValue(self.GROUND))
commands.append(str(self.getParameterValue(self.HEIGHT)))
commands.append(str(self.getParameterValue(self.CELLSIZE)))
commands.append(self.getOutputValue(self.OUTPUT))
files = self.getParameterValue(self.INPUT).split(";")
if len(files) == 1:
commands.append(self.getParameterValue(self.INPUT))
else:
FusionUtils.createFileList(files)
commands.append(FusionUtils.tempFileListFilepath())
FusionUtils.runFusion(commands, progress)

View File

@ -5,6 +5,7 @@ from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionEx
from sextante.core.QGisLayers import QGisLayers
from sextante.core.SextanteUtils import SextanteUtils
from sextante.gui.SextantePostprocessing import SextantePostprocessing
import traceback
class AlgorithmExecutor:
@ -19,6 +20,9 @@ class AlgorithmExecutor:
except GeoAlgorithmExecutionException, e :
QMessageBox.critical(None, "Error", e.msg)
return False
except Exception:
QMessageBox.critical(None, "Error", traceback.format_exc())
return False
@staticmethod
def runalgIterating(alg,paramToIter,progress):

View File

@ -183,11 +183,13 @@ class ModelerDialog(QtGui.QDialog):
fout.write(text)
fout.close()
self.alg.provider = Providers.providers["model"]
alg = self.alg.getCopy()#copy.deepcopy(self.alg)
alg = self.alg.getCopy()
dlg = ParametersDialog(alg)
dlg.exec_()
self.alg.descriptionFile = None
alg.descriptionFile = None
else:
alg = self.alg.getCopy()#copy.deepcopy(self.alg)
alg = self.alg.getCopy()
dlg = ParametersDialog(alg)
dlg.exec_()

View File

@ -46,7 +46,9 @@ class EditRScriptDialog(QtGui.QDialog):
filename = self.alg.descriptionFile
else:
filename = QtGui.QFileDialog.getSaveFileName(self, "Save Script", RUtils.RScriptsFolder(), "R-SEXTANTE scripts (*.rsx)")
if filename:
self.alg.descriptionFile = filename
text = self.text.toPlainText()
fout = open(filename, "w")
fout.write(text)

View File

@ -59,6 +59,7 @@ class EditScriptDialog(QtGui.QDialog):
filename = QtGui.QFileDialog.getSaveFileName(self, "Save Script", ScriptUtils.scriptsFolder(), "Python scripts (*.py)")
if filename:
self.alg.descriptionFile = filename
text = self.text.toPlainText()
fout = open(filename, "w")
fout.write(text)