Skip to content

Commit 9ecf823

Browse files
committedMar 6, 2013
[sextante] improvements in test tools
1 parent d628c2c commit 9ecf823

26 files changed

+271
-0
lines changed
 
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
diff --git a/gdal/warp.py b/gdal/warp.py
2+
index 5dac040..b4f1eee 100644
3+
--- a/gdal/warp.py
4+
+++ b/gdal/warp.py
5+
@@ -23,14 +23,16 @@
6+
# This will get replaced with a git SHA1 when you do a git archive
7+
__revision__ = '$Format:%H$'
8+
9+
+import os
10+
+from qgis.core import *
11+
from PyQt4 import QtGui
12+
from sextante.core.GeoAlgorithm import GeoAlgorithm
13+
from sextante.parameters.ParameterRaster import ParameterRaster
14+
from sextante.outputs.OutputRaster import OutputRaster
15+
-import os
16+
-from qgis.core import *
17+
from sextante.parameters.ParameterSelection import ParameterSelection
18+
from sextante.parameters.ParameterCrs import ParameterCrs
19+
+from sextante.parameters.ParameterString import ParameterString
20+
+from sextante.parameters.ParameterNumber import ParameterNumber
21+
from sextante.gdal.GdalUtils import GdalUtils
22+
23+
class warp(GeoAlgorithm):
24+
@@ -41,6 +43,8 @@
25+
DEST_SRS = "DEST_SRS "
26+
METHOD = "METHOD"
27+
METHOD_OPTIONS = ["near", "bilinear", "cubic", "cubicspline", "lanczos"]
28+
+ EXTRA = "EXTRA"
29+
+ TR = "TR"
30+
31+
def getIcon(self):
32+
filepath = os.path.dirname(__file__) + "/icons/warp.png"
33+
@@ -52,7 +56,9 @@
34+
self.addParameter(ParameterRaster(warp.INPUT, "Input layer", False))
35+
self.addParameter(ParameterCrs(warp.SOURCE_SRS, "Source SRS (EPSG Code)", "4326"))
36+
self.addParameter(ParameterCrs(warp.DEST_SRS, "Destination SRS (EPSG Code)", "4326"))
37+
+ self.addParameter(ParameterNumber(warp.TR, "Output file resolution in target georeferenced units (leave 0 for no change)", 0.0, None, 0.0))
38+
self.addParameter(ParameterSelection(warp.METHOD, "Resampling method", warp.METHOD_OPTIONS))
39+
+ self.addParameter(ParameterString(warp.EXTRA, "Additional creation parameters"))
40+
self.addOutput(OutputRaster(warp.OUTPUT, "Output layer"))
41+
42+
def processAlgorithm(self, progress):
43+
@@ -68,6 +74,10 @@
44+
commands.append("-of")
45+
out = self.getOutputValue(warp.OUTPUT)
46+
commands.append(GdalUtils.getFormatShortNameFromFilename(out))
47+
+ if str(self.getParameterValue(warp.TR)) != "0":
48+
+ trStr = "-tr "+str(self.getParameterValue(warp.TR))+" "+str(self.getParameterValue(warp.TR))
49+
+ commands.append(trStr)
50+
+ commands.append(str(self.getParameterValue(warp.EXTRA)))
51+
commands.append(self.getParameterValue(warp.INPUT))
52+
commands.append(out)
53+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/r/RAlgorithm.py b/r/RAlgorithm.py
2+
index 8b2ea4b..b8e9b35 100644
3+
--- a/r/RAlgorithm.py
4+
+++ b/r/RAlgorithm.py
5+
@@ -276,6 +276,7 @@
6+
commands.append('options("repos"="http://cran.us.r-project.org")')
7+
rLibDir = "%s/rlibs" % SextanteUtils.userFolder().replace("\\","/")
8+
if not os.path.isdir(rLibDir): os.mkdir(rLibDir)
9+
+ commands.append('.libPaths("%s")' % rLibDir )
10+
commands.append(
11+
'tryCatch(find.package("rgdal"), error=function(e) install.packages("rgdal", lib="%s"))' % rLibDir)
12+
commands.append("library(\"rgdal\")");
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from sextante.core.Sextante import Sextante
2+
from sextante.modeler.ModelerAlgorithm import ModelerAlgorithm
3+
4+
def testAlg(algname, *args):
5+
6+
#test simple execution
7+
alg = Sextante.runAlgorithm(algname, None, *args)
8+
assert alg is not None
9+
10+
out = alg.getOutputValuesAsDictionary()
11+
12+
return out
13+
14+
#test execution in a model
15+
16+
#===========================================================================
17+
# model = ModelerAlgorithm()
18+
# model.addAlgorithm(alg, parametersMap, valuesMap, outputsMap, dependencies)
19+
#===========================================================================
20+
21+
#test

‎python/plugins/sextante/tests/OutputsTest.py

Whitespace-only changes.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import unittest
2+
from sextante.parameters.ParameterNumber import ParameterNumber
3+
from sextante.parameters.ParameterCrs import ParameterCrs
4+
5+
class ParametersTest(unittest.TestCase):
6+
7+
def testParameterNumbert(self):
8+
param = ParameterNumber("name", "desc", 0, 10)
9+
assert not param.setValue("wrongvalue")
10+
assert param.value is None
11+
assert not param.setValue(25)
12+
assert param.value is None
13+
assert param.setValue(5)
14+
assert param.value == 5
15+
assert param.setValue(None)
16+
assert param.value == param.default
17+
s = param.serialize()
Code has comments. Press enter to view.
18+
param2 = ParameterNumber()
19+
param2.deserialize(s)
20+
assert param.default == param2.default
21+
assert param.max == param2.max
22+
assert param.min == param2.min
23+
assert param.description == param2.description
24+
assert param.name == param2.name
25+
26+
def testParameterCRS(self):
27+
param = ParameterCrs("name", "desc")
28+
assert not param.setValue("EPSG:12003")
29+
assert param.value == "EPSG:12003"
30+
assert param.setValue(None)
31+
assert param.value == param.default
32+
s = param.serialize()
33+
param2 = ParameterCrs()
34+
param2.deserialize(s)
35+
assert param.default == param2.default
36+
assert param.description == param2.description
37+
assert param.name == param2.name
38+
39+
def testParameterExtent(self):
40+
param = ParameterCrs("name", "desc")
41+
assert not param.setValue("EPSG:12003")
42+
assert param.value == "EPSG:12003"
43+
assert param.setValue(None)
44+
assert param.value == param.default
45+
s = param.serialize()
46+
param2 = ParameterCrs()
47+
param2.deserialize(s)
48+
assert param.default == param2.default
49+
assert param.description == param2.description
50+
assert param.name == param2.name
51+
52+
53+
54+
if __name__ == '__main__':
55+
unittest.main()
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import os.path
2+
3+
dataFolder = os.path.join(os.path.dirname(__file__), 'data')
4+
raster = os.path.join(dataFolder, "raster.tif")
5+
points = os.path.join(dataFolder, "points.shp")
6+
lines = os.path.join(dataFolder, "lines.shp")
7+
polygons = os.path.join(dataFolder, "polygons.shp")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'''
2+
Created on 08/02/2013
3+
4+
@author: Volaya
5+
'''
98 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50_UTM_zone_30N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50 / UTM zone 30N",GEOGCS["ED50",DATUM["European_Datum_1950",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY["EPSG","6230"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4230"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","23030"]]
716 Bytes
Binary file not shown.
124 Bytes
Binary file not shown.
98 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50_UTM_zone_30N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50 / UTM zone 30N",GEOGCS["ED50",DATUM["European_Datum_1950",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY["EPSG","6230"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4230"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","23030"]]
184 Bytes
Binary file not shown.
124 Bytes
Binary file not shown.
87 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50_UTM_zone_30N",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PROJCS["ED50 / UTM zone 30N",GEOGCS["ED50",DATUM["European_Datum_1950",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY["EPSG","6230"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4230"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","23030"]]
532 Bytes
Binary file not shown.
116 Bytes
Binary file not shown.
456 Bytes
Binary file not shown.

‎python/plugins/sextante/tools/help.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
from sextante.core.Sextante import Sextante
2+
import os
3+
from sextante.core.SextanteUtils import mkdir
4+
from sextante.parameters.ParameterSelection import ParameterSelection
5+
6+
def createBaseHelpFile(alg, folder):
7+
folder = os.path.join(folder, alg.provider.getName().lower())
8+
mkdir(folder)
9+
cmdLineName = alg.commandLineName()[alg.commandLineName().find(":") + 1:].lower()
10+
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
11+
safeFilename = ''.join(c for c in cmdLineName if c in validChars)
12+
filepath = os.path.join(folder, safeFilename + ".rst")
13+
file = open(filepath, "w")
14+
file.write(alg.name.upper())
15+
file.write("\n")
16+
file.write("=" * len(alg.name))
17+
file.write("\n\n")
18+
file.write("Description\n")
19+
file.write("-----------\n\n")
20+
file.write("Parameters\n")
21+
file.write("----------\n\n")
22+
for param in alg.parameters:
23+
file.write("- ``" + param.description + "[" + param.parameterName()[9:] + "]``:\n")
24+
file.write("\nOutputs\n")
25+
file.write("-------\n\n")
26+
for out in alg.outputs:
27+
file.write("- ``" + out.description + "[" + out.outputTypeName()[6:] + "]``:\n")
28+
file.write("\nSee also\n")
29+
file.write("---------\n\n")
30+
file.write("\nConsole usage\n")
31+
file.write("-------------\n\n")
32+
file.write("\n::\n\n")
33+
s = "\tsextante.runalg('" + alg.commandLineName() + "', "
34+
for param in alg.parameters:
35+
s+= str(param.name.lower().strip()) + ", "
36+
for out in alg.outputs:
37+
if not out.hidden:
38+
s+=str(out.name.lower().strip()) + ", "
39+
s = s[:-2] +")\n"
40+
file.write(s)
41+
42+
s =""
43+
hasSelection = False
44+
for param in alg.parameters:
45+
if isinstance(param, ParameterSelection):
46+
hasSelection = True
47+
s+="\n\t" + param.name.lower() + "(" + param.description + ")\n"
48+
i=0
49+
for option in param.options:
50+
s+= "\t\t" + str(i) + " - " + str(option) + "\n"
51+
i+=1
52+
if hasSelection:
53+
file.write("\n\tAvailable options for selection parameters:\n")
54+
file.write(s)
55+
file.close()
56+
57+
58+
def createBaseHelpFiles(folder):
59+
for provider in Sextante.providers:
60+
for alg in provider.algs:
61+
createBaseHelpFile(alg, folder)
62+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file 'DlgConfig.ui'
4+
#
5+
# Created: Tue Dec 04 00:31:31 2012
6+
# by: PyQt4 UI code generator 4.9.1
7+
#
8+
# WARNING! All changes made in this file will be lost!
9+
10+
from PyQt4 import QtCore, QtGui
11+
12+
try:
13+
_fromUtf8 = QtCore.QString.fromUtf8
14+
except AttributeError:
15+
_fromUtf8 = lambda s: s
16+
17+
class Ui_DlgConfig(object):
18+
def setupUi(self, DlgConfig):
19+
DlgConfig.setObjectName(_fromUtf8("DlgConfig"))
20+
DlgConfig.resize(640, 450)
21+
self.verticalLayout = QtGui.QVBoxLayout(DlgConfig)
22+
self.verticalLayout.setSpacing(2)
23+
self.verticalLayout.setMargin(0)
24+
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
25+
self.searchBox = QgsFilterLineEdit(DlgConfig)
26+
self.searchBox.setObjectName(_fromUtf8("searchBox"))
27+
self.verticalLayout.addWidget(self.searchBox)
28+
self.tree = QtGui.QTreeWidget(DlgConfig)
29+
self.tree.setAlternatingRowColors(True)
30+
self.tree.setObjectName(_fromUtf8("tree"))
31+
self.verticalLayout.addWidget(self.tree)
32+
self.buttonBox = QtGui.QDialogButtonBox(DlgConfig)
33+
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
34+
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
35+
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
36+
self.verticalLayout.addWidget(self.buttonBox)
37+
38+
self.retranslateUi(DlgConfig)
39+
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), DlgConfig.accept)
40+
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), DlgConfig.reject)
41+
QtCore.QMetaObject.connectSlotsByName(DlgConfig)
42+
43+
def retranslateUi(self, DlgConfig):
44+
DlgConfig.setWindowTitle(QtGui.QApplication.translate("DlgConfig", "SEXTANTE options", None, QtGui.QApplication.UnicodeUTF8))
45+
self.searchBox.setToolTip(QtGui.QApplication.translate("DlgConfig", "Enter setting name to filter list", None, QtGui.QApplication.UnicodeUTF8))
46+
self.tree.headerItem().setText(0, QtGui.QApplication.translate("DlgConfig", "Setting", None, QtGui.QApplication.UnicodeUTF8))
47+
self.tree.headerItem().setText(1, QtGui.QApplication.translate("DlgConfig", "Value", None, QtGui.QApplication.UnicodeUTF8))
48+
49+
from qgis.gui import QgsFilterLineEdit

‎python/plugins/sextante/ui/pyuic4.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@"C:\Python27\python" "C:\Python27\Lib\site-packages\PyQt4\uic\pyuic.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

0 commit comments

Comments
 (0)
Please sign in to comment.