Skip to content

Commit cd2f975

Browse files
author
volayaf
committed
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
1 parent c80371a commit cd2f975

File tree

6 files changed

+57
-6
lines changed

6 files changed

+57
-6
lines changed

src/sextante/fusion/FusionAlgorithmProvider.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
from sextante.fusion.ClipData import ClipData
1212
from sextante.fusion.Cover import Cover
1313
from sextante.fusion.FilterData import FilterData
14+
from sextante.fusion.GridMetrics import GridMetrics
1415

1516

1617
class FusionAlgorithmProvider(AlgorithmProvider):
1718

1819
def __init__(self):
1920
AlgorithmProvider.__init__(self)
2021
self.actions.append(OpenViewerAction())
21-
self.algsList = [CloudMetrics(), CanopyMaxima(), CanopyModel(), ClipData(), Cover(), FilterData()]
22+
self.algsList = [CloudMetrics(), CanopyMaxima(), CanopyModel(), ClipData(), Cover(), FilterData(), GridMetrics()]
2223

2324
def initializeSettings(self):
2425
AlgorithmProvider.initializeSettings(self)

src/sextante/fusion/GridMetrics.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import os
2+
from sextante.parameters.ParameterFile import ParameterFile
3+
from sextante.outputs.OutputTable import OutputTable
4+
from sextante.fusion.FusionUtils import FusionUtils
5+
from sextante.fusion.FusionAlgorithm import FusionAlgorithm
6+
from sextante.parameters.ParameterNumber import ParameterNumber
7+
8+
class GridMetrics(FusionAlgorithm):
9+
10+
INPUT = "INPUT"
11+
OUTPUT = "OUTPUT"
12+
GROUND = "GROUND"
13+
HEIGHT = "HEIGHT"
14+
CELLSIZE = "CELLSIZE"
15+
16+
def defineCharacteristics(self):
17+
self.name = "Grid Metrics"
18+
self.group = "Points"
19+
self.addParameter(ParameterFile(self.INPUT, "Input las layer"))
20+
self.addParameter(ParameterFile(self.GROUND, "Input ground DTM layer"))
21+
self.addParameter(ParameterNumber(self.HEIGHT, "Height break"))
22+
self.addParameter(ParameterNumber(self.CELLSIZE, "Cellsize"))
23+
self.addOutput(OutputTable(self.OUTPUT, "Output table with grid metrics"))
24+
self.addAdvancedModifiers()
25+
26+
def processAlgorithm(self, progress):
27+
commands = [os.path.join(FusionUtils.FusionPath(), "GridMetrics.exe")]
28+
commands.append("/verbose")
29+
self.addAdvancedModifiersToCommand(commands)
30+
commands.append(self.getParameterValue(self.GROUND))
31+
commands.append(str(self.getParameterValue(self.HEIGHT)))
32+
commands.append(str(self.getParameterValue(self.CELLSIZE)))
33+
commands.append(self.getOutputValue(self.OUTPUT))
34+
files = self.getParameterValue(self.INPUT).split(";")
35+
if len(files) == 1:
36+
commands.append(self.getParameterValue(self.INPUT))
37+
else:
38+
FusionUtils.createFileList(files)
39+
commands.append(FusionUtils.tempFileListFilepath())
40+
41+
FusionUtils.runFusion(commands, progress)

src/sextante/gui/AlgorithmExecutor.py

+4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from sextante.core.QGisLayers import QGisLayers
66
from sextante.core.SextanteUtils import SextanteUtils
77
from sextante.gui.SextantePostprocessing import SextantePostprocessing
8+
import traceback
89

910
class AlgorithmExecutor:
1011

@@ -19,6 +20,9 @@ def runalg(alg, progress):
1920
except GeoAlgorithmExecutionException, e :
2021
QMessageBox.critical(None, "Error", e.msg)
2122
return False
23+
except Exception:
24+
QMessageBox.critical(None, "Error", traceback.format_exc())
25+
return False
2226

2327
@staticmethod
2428
def runalgIterating(alg,paramToIter,progress):

src/sextante/modeler/ModelerDialog.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,15 @@ def runModel(self):
183183
fout.write(text)
184184
fout.close()
185185
self.alg.provider = Providers.providers["model"]
186-
alg = self.alg.getCopy()#copy.deepcopy(self.alg)
186+
alg = self.alg.getCopy()
187+
dlg = ParametersDialog(alg)
188+
dlg.exec_()
187189
self.alg.descriptionFile = None
188190
alg.descriptionFile = None
189191
else:
190-
alg = self.alg.getCopy()#copy.deepcopy(self.alg)
191-
dlg = ParametersDialog(alg)
192-
dlg.exec_()
192+
alg = self.alg.getCopy()
193+
dlg = ParametersDialog(alg)
194+
dlg.exec_()
193195

194196
def saveModel(self):
195197
if str(self.textGroup.text()).strip() == "" or str(self.textName.text()).strip() == "":
@@ -205,7 +207,7 @@ def saveModel(self):
205207
if filename:
206208
if not filename.endswith(".model"):
207209
filename += ".model"
208-
self.alg.descriptionFile = filename
210+
self.alg.descriptionFile = filename
209211
if filename:
210212
text = self.alg.serialize()
211213
fout = open(filename, "w")

src/sextante/r/EditRScriptDialog.py

+2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ def saveAlgorithm(self):
4646
filename = self.alg.descriptionFile
4747
else:
4848
filename = QtGui.QFileDialog.getSaveFileName(self, "Save Script", RUtils.RScriptsFolder(), "R-SEXTANTE scripts (*.rsx)")
49+
4950
if filename:
51+
self.alg.descriptionFile = filename
5052
text = self.text.toPlainText()
5153
fout = open(filename, "w")
5254
fout.write(text)

src/sextante/script/EditScriptDialog.py

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def saveAlgorithm(self):
5959
filename = QtGui.QFileDialog.getSaveFileName(self, "Save Script", ScriptUtils.scriptsFolder(), "Python scripts (*.py)")
6060

6161
if filename:
62+
self.alg.descriptionFile = filename
6263
text = self.text.toPlainText()
6364
fout = open(filename, "w")
6465
fout.write(text)

0 commit comments

Comments
 (0)