Skip to content

Commit c4c3fec

Browse files
committed
Several patches contributed by Rado Guzinski:
-New OTB descriptions an help -Update OTB descriptions -More responsive MultipleInputPanel.py -Minor bug fixes
1 parent 5afd739 commit c4c3fec

File tree

82 files changed

+11720
-36
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+11720
-36
lines changed

python/plugins/sextante/core/Sextante.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
***************************************************************************
1818
"""
1919

20+
2021
__author__ = 'Victor Olaya'
2122
__date__ = 'August 2012'
2223
__copyright__ = '(C) 2012, Victor Olaya'
@@ -25,6 +26,7 @@
2526

2627
from PyQt4.QtCore import *
2728
from PyQt4.QtGui import *
29+
from sextante.wps.WPSAlgorithmProvider import WPSAlgorithmProvider
2830
from sextante.saga.SagaAlgorithmProvider import SagaAlgorithmProvider
2931
from sextante.script.ScriptAlgorithmProvider import ScriptAlgorithmProvider
3032
from sextante.core.QGisLayers import QGisLayers
@@ -121,6 +123,7 @@ def initialize():
121123
Sextante.addProvider(SagaAlgorithmProvider())
122124
Sextante.addProvider(GrassAlgorithmProvider())
123125
Sextante.addProvider(ScriptAlgorithmProvider())
126+
Sextante.addProvider(WPSAlgorithmProvider())
124127
Sextante.modeler.initializeSettings();
125128
#and initialize
126129
SextanteLog.startLogging()

python/plugins/sextante/gdal/warp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from qgis.core import *
3232
from sextante.parameters.ParameterSelection import ParameterSelection
3333
from sextante.parameters.ParameterCrs import ParameterCrs
34+
from sextante.gdal.GdalUtils import GdalUtils
3435

3536
class warp(GeoAlgorithm):
3637

python/plugins/sextante/grass/GrassAlgorithm.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,31 @@ def defineCharacteristicsFromFile(self):
129129
lines.close()
130130

131131
self.addParameter(ParameterExtent(self.GRASS_REGION_EXTENT_PARAMETER, "GRASS region extent"))
132-
self.addParameter(ParameterNumber(self.GRASS_REGION_CELLSIZE_PARAMETER, "GRASS region cellsize", 0, None, 1))
132+
self.addParameter(ParameterNumber(self.GRASS_REGION_CELLSIZE_PARAMETER, "GRASS region cellsize (leave 0 for default)", 0, None, 0.0))
133133

134134

135+
def getDefaultCellsize(self):
136+
cellsize = 0
137+
for param in self.parameters:
138+
if param.value:
139+
if isinstance(param, ParameterRaster):
140+
if isinstance(param.value, QgsRasterLayer):
141+
layer = param.value
142+
else:
143+
layer = QGisLayers.getObjectFromUri(param.value)
144+
cellsize = max(cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())
145+
146+
elif isinstance(param, ParameterMultipleInput):
147+
layers = param.value.split(";")
148+
for layername in layers:
149+
layer = QGisLayers.getObjectFromUri(layername)
150+
if isinstance(layer, QgsRasterLayer):
151+
cellsize = max(cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())
152+
153+
if cellsize == 0:
154+
cellsize = 1
155+
return cellsize
156+
135157
def processAlgorithm(self, progress):
136158
if SextanteUtils.isWindows():
137159
path = GrassUtils.grassPath()
@@ -151,7 +173,10 @@ def processAlgorithm(self, progress):
151173
command +=" s=" + str(regionCoords[2])
152174
command +=" e=" + str(regionCoords[1])
153175
command +=" w=" + str(regionCoords[0])
154-
command +=" res=" + str(self.getParameterValue(self.GRASS_REGION_CELLSIZE_PARAMETER));
176+
if self.getParameterValue(self.GRASS_REGION_CELLSIZE_PARAMETER) == 0:
177+
command +=" res=" + str(self.getDefaultCellsize())
178+
else:
179+
command +=" res=" + str(self.getParameterValue(self.GRASS_REGION_CELLSIZE_PARAMETER));
155180
commands.append(command)
156181

157182
#1: Export layer to grass mapset
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
r.series
2+
r.series - Makes each output cell value a function of the values assigned to the corresponding cells in the input raster map layers.
3+
Raster (r.*)
4+
ParameterMultipleInput|input|Name of input raster map(s)|3.0|False
5+
ParameterBoolean|-n|Propagate NULLs|True
6+
ParameterSelection|method|Aggregate operation|average;count;median;mode;minimum;min_raster;maximum;max_raster;stddev;range;sum;threshold;variance;diversity;slope;offset;detcoeff;quart1;quart3;perc90;quantile;skewness;kurtosis
7+
ParameterNumber|quantile|Quantile to calculate for method=quantile|0.0|1.0|0.0
8+
ParameterNumber|threshold|Threshold to calculate for method=threshold|None|None|0.0
9+
ParameterString|range|Ignore values outside this range (lo,hi)|-10000000000,10000000000
10+
OutputRaster|output|Name for output raster map

python/plugins/sextante/gui/BatchProcessingDialog.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
from sextante.gui.BatchInputSelectionPanel import BatchInputSelectionPanel
3333
from sextante.gui.AlgorithmExecutionDialog import AlgorithmExecutionDialog
3434

35+
from sextante.parameters.ParameterExtent import ParameterExtent
36+
from sextante.parameters.ParameterNumber import ParameterNumber
37+
from sextante.parameters.ParameterFile import ParameterFile
38+
from sextante.parameters.ParameterCrs import ParameterCrs
39+
from sextante.gui.ExtentSelectionPanel import ExtentSelectionPanel
40+
3541
from sextante.parameters.ParameterBoolean import ParameterBoolean
3642
from sextante.parameters.ParameterSelection import ParameterSelection
3743
from sextante.parameters.ParameterFixedTable import ParameterFixedTable
@@ -52,7 +58,8 @@ def __init__(self, alg):
5258
self.algs = None
5359
self.table = QtGui.QTableWidget(None)
5460
AlgorithmExecutionDialog.__init__(self, alg, self.table)
55-
self.setModal(True)
61+
#self.setModal(True)
62+
self.setWindowModality(1)
5663
self.algEx = None
5764
self.resize(800, 500)
5865
self.setWindowTitle("Batch Processing - " + self.alg.name)
@@ -93,7 +100,7 @@ def accept(self):
93100
col = 0
94101
for param in alg.parameters:
95102
widget = self.table.cellWidget(row, col)
96-
if not self.setParameterValueFromWidget(param, widget):
103+
if not self.setParameterValueFromWidget(param, widget, alg):
97104
QMessageBox.critical(self.dialog, "Unable to execute batch process", "Wrong or missing parameter values")
98105
self.algs = None
99106
return
@@ -176,7 +183,7 @@ def finishAll(self):
176183
QMessageBox.information(self, "Batch processing", "Batch processing successfully completed!")
177184
self.close()
178185

179-
def setParameterValueFromWidget(self, param, widget):
186+
def setParameterValueFromWidget(self, param, widget, alg = None):
180187
if isinstance(param, (ParameterRaster, ParameterVector, ParameterTable, ParameterMultipleInput)):
181188
return param.setValue(widget.getText())
182189
elif isinstance(param, ParameterBoolean):
@@ -185,6 +192,10 @@ def setParameterValueFromWidget(self, param, widget):
185192
return param.setValue(widget.currentIndex())
186193
elif isinstance(param, ParameterFixedTable):
187194
return param.setValue(widget.table)
195+
elif isinstance(param, (ParameterExtent)):
196+
if alg != None:
197+
widget.useNewAlg(alg)
198+
return param.setValue(widget.getValue())
188199
else:
189200
return param.setValue(widget.text())
190201

@@ -204,6 +215,8 @@ def getWidgetFromParameter(self, param, row, col):
204215
item.addItems(param.options)
205216
elif isinstance(param, ParameterFixedTable):
206217
item = FixedTablePanel(param)
218+
elif isinstance(param, ParameterExtent):
219+
item = ExtentSelectionPanel(self, self.alg, param.default)
207220
else:
208221
item = QtGui.QLineEdit()
209222
try:

python/plugins/sextante/gui/ExtentSelectionPanel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ def getMinCoveringExtent(self):
112112
else:
113113
return None
114114

115-
115+
def useNewAlg(self, alg):
116+
self.params = alg.parameters
116117

117118
def addToRegion(self, layer, first):
118119
if first:

python/plugins/sextante/gui/MultipleInputPanel.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
from PyQt4 import QtCore, QtGui
2727
from sextante.gui.MultipleInputDialog import MultipleInputDialog
28+
from sextante.parameters.ParameterMultipleInput import ParameterMultipleInput
29+
from sextante.core.QGisLayers import QGisLayers
2830

2931
try:
3032
_fromUtf8 = QtCore.QString.fromUtf8
@@ -33,9 +35,10 @@
3335

3436
class MultipleInputPanel(QtGui.QWidget):
3537

36-
def __init__(self, options, parent = None):
38+
def __init__(self, options, datatype, parent = None):
3739
super(MultipleInputPanel, self).__init__(parent)
3840
self.options = options
41+
self.datatype = datatype
3942
self.selectedoptions = []
4043
self.horizontalLayout = QtGui.QHBoxLayout(self)
4144
self.horizontalLayout.setSpacing(2)
@@ -51,6 +54,17 @@ def __init__(self, options, parent = None):
5154
self.setLayout(self.horizontalLayout)
5255

5356
def showSelectionDialog(self):
57+
if self.datatype == ParameterMultipleInput.TYPE_RASTER:
58+
options = QGisLayers.getRasterLayers()
59+
elif self.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
60+
options = QGisLayers.getVectorLayers()
61+
else:
62+
options = QGisLayers.getVectorLayers(self.datatype)
63+
opts = []
64+
for opt in options:
65+
opts.append(opt.name())
66+
self.options = opts
67+
5468
dlg = MultipleInputDialog(self.options, self.selectedoptions)
5569
dlg.exec_()
5670
if dlg.selectedoptions != None:

python/plugins/sextante/gui/ParametersPanel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ def getWidgetFromParameter(self, param):
276276
opts = []
277277
for opt in options:
278278
opts.append(opt.name())
279-
item = MultipleInputPanel(opts)
279+
item = MultipleInputPanel(opts, param.datatype)
280280
elif isinstance(param, ParameterNumber):
281281
item = NumberInputPanel(param.default, param.isInteger)
282282
elif isinstance(param, ParameterExtent):

python/plugins/sextante/modeler/ModelerParametersDialog.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def setupUi(self):
119119
for output in self.alg.outputs:
120120
if output.hidden:
121121
continue
122-
if isinstance(output, (OutputRaster, OutputVector, OutputTable, OutputHTML)):
122+
if isinstance(output, (OutputRaster, OutputVector, OutputTable, OutputHTML, OutputFile)):
123123
label = QtGui.QLabel(output.description + "<" + output.__module__.split(".")[-1] + ">")
124124
item = QLineEdit()
125125
if hasattr(item, 'setPlaceholderText'):
@@ -170,6 +170,17 @@ def setupUi(self):
170170
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.cancelPressed)
171171
QtCore.QMetaObject.connectSlotsByName(self)
172172

173+
def showAdvancedParametersClicked(self):
174+
self.showAdvanced = not self.showAdvanced
175+
if self.showAdvanced:
176+
self.advancedButton.setText("Hide advanced parameters")
177+
else:
178+
self.advancedButton.setText("Show advanced parameters")
179+
for param in self.alg.parameters:
180+
if param.isAdvanced:
181+
self.labels[param.name].setVisible(self.showAdvanced)
182+
self.widgets[param.name].setVisible(self.showAdvanced)
183+
173184
def getRasterLayers(self):
174185
layers = []
175186
params = self.model.parameters

python/plugins/sextante/otb/OTBAlgorithm.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
3939
from sextante.core.SextanteLog import SextanteLog
4040
from sextante.core.SextanteUtils import SextanteUtils
41+
from sextante.core.WrongHelpFileException import WrongHelpFileException
4142
from sextante.parameters.ParameterFactory import ParameterFactory
4243
from sextante.outputs.OutputFactory import OutputFactory
4344
from sextante.otb.OTBUtils import OTBUtils
@@ -65,10 +66,11 @@ def getIcon(self):
6566

6667
def helpFile(self):
6768
folder = os.path.join( OTBUtils.otbDescriptionPath(), 'doc' )
68-
if str(folder).strip() != "":
69-
helpfile = os.path.join( str(folder), self.appkey + ".html")
69+
helpfile = os.path.join( str(folder), self.appkey + ".html")
70+
if os.path.exists(helpfile):
7071
return helpfile
71-
return None
72+
else:
73+
raise WrongHelpFileException("Could not find help file for this algorithm. \nIf you have it put it in: \n"+str(folder))
7274

7375
def defineCharacteristicsFromFile(self):
7476
lines = open(self.descriptionFile)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
BlockMatching
2+
otbcli_BlockMatching
3+
Pixel-wise Block-Matching
4+
Stereo
5+
ParameterRaster|-io.inleft|Left input image|False
6+
ParameterRaster|-io.inright|Right input image|False
7+
OutputRaster|-io.out|The output disparity map
8+
OutputRaster|-io.outmask|The output mask corresponding to all criterions
9+
ParameterBoolean|-io.outmetric|Output optimal metric values as well|
10+
ParameterRaster|-mask.inleft|Discard left pixels from mask image|True
11+
ParameterRaster|-mask.inright|Discard right pixels from mask image|True
12+
ParameterNumber|-mask.nodata|Discard pixels with no-data value|None|None|0.0
13+
ParameterNumber|-mask.variancet|Discard pixels with low local variance|None|None|100.0
14+
ParameterSelection|-bm.metric|Block-matching metric|ssd;ncc;lp|0
15+
ParameterNumber|-bm.metric.lp.p|p value|None|None|1.0
16+
ParameterNumber|-bm.radius|Radius of blocks|None|None|3
17+
ParameterNumber|-bm.minhd|Minimum horizontal disparity|None|None|0
18+
ParameterNumber|-bm.maxhd|Maximum horizontal disparity|None|None|0
19+
ParameterNumber|-bm.minvd|Minimum vertical disparity|None|None|0
20+
ParameterNumber|-bm.maxvd|Maximum vertical disparity|None|None|0
21+
ParameterSelection|-bm.subpixel|Sub-pixel interpolation|none;parabolic;triangular;dichotomy|0
22+
ParameterNumber|-bm.medianfilter.radius|Radius|None|None|0
23+
ParameterNumber|-bm.medianfilter.incoherence|Incoherence threshold|None|None|0.0
24+
ParameterSelection|-bm.initdisp|Initial disparities|none;uniform;maps|0
25+
ParameterNumber|-bm.initdisp.uniform.hdisp|Horizontal initial disparity|None|None|0
26+
ParameterNumber|-bm.initdisp.uniform.vdisp|Vertical initial disparity|None|None|0
27+
ParameterNumber|-bm.initdisp.uniform.hrad|Horizontal exploration radius|None|None|0
28+
ParameterNumber|-bm.initdisp.uniform.vrad|Vertical exploration radius|None|None|0
29+
ParameterRaster|-bm.initdisp.maps.hmap|Horizontal initial disparity map|False
30+
ParameterRaster|-bm.initdisp.maps.vmap|Vertical initial disparity map|False
31+
ParameterNumber|-bm.initdisp.maps.hrad|Horizontal exploration radius|None|None|0
32+
ParameterNumber|-bm.initdisp.maps.vrad|Vertical exploration radius|None|None|0
33+
ParameterNumber|-ram|Available RAM (Mb)|None|None|128

python/plugins/sextante/otb/description/ColorMapping.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ColorMapping
22
otbcli_ColorMapping
33
Color Mapping
4-
Learning
4+
Image Manipulation
55
ParameterRaster|-in|Input Image|False
66
OutputRaster|-out|Output Image
77
ParameterNumber|-ram|Available RAM (Mb)|None|None|128

python/plugins/sextante/otb/description/ConvertCartoToGeoPoint.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@ Cartographic to geographic coordinates conversion
44
Geometry
55
ParameterNumber|-carto.x|X cartographic coordinates|None|None|0.0
66
ParameterNumber|-carto.y|Y cartographic coordinates|None|None|0.0
7-
ParameterSelection|-mapproj|Output Cartographic Map Projection|utm;lambert2;lambert93;transmercator;wgs;epsg|5
8-
ParameterNumber|-mapproj.utm.zone|Zone number|None|None|0
7+
ParameterSelection|-mapproj|Output Cartographic Map Projection|utm;lambert2;lambert93;wgs;epsg|4
8+
ParameterNumber|-mapproj.utm.zone|Zone number|None|None|31
99
ParameterBoolean|-mapproj.utm.northhem|Northern Hemisphere|
10-
ParameterNumber|-mapproj.transmercator.falseeasting|False easting|None|None|0.0
11-
ParameterNumber|-mapproj.transmercator.falsenorthing|False northing|None|None|0.0
12-
ParameterNumber|-mapproj.transmercator.scale|Scale factor|None|None|1.0
1310
ParameterNumber|-mapproj.epsg.code|EPSG Code|None|None|32631
1411
ParameterNumber|-long|Output long|None|None|0.0
1512
ParameterNumber|-lat|Output lat|None|None|0.0
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
DimensionalityReduction
2+
otbcli_DimensionalityReduction
3+
Dimensionality reduction application
4+
Image Filtering
5+
ParameterRaster|-in|Input Image|False
6+
OutputRaster|-out|Output Image
7+
ParameterNumber|-rescale.outmin|Output min value|None|None|0.0
8+
ParameterNumber|-rescale.outmax|Output max value|None|None|255.0
9+
OutputRaster|-outinv| Inverse Output Image
10+
ParameterSelection|-method|Algorithm|pca;napca;maf;ica|0
11+
ParameterNumber|-method.napca.radiusx|Set the x radius of the sliding window.|None|None|1
12+
ParameterNumber|-method.napca.radiusy|Set the y radius of the sliding window.|None|None|1
13+
ParameterNumber|-method.ica.iter|number of iterations |None|None|20
14+
ParameterNumber|-method.ica.mu|Give the increment weight of W in [0, 1]|None|None|1.0
15+
ParameterNumber|-nbcomp|Number of Components.|None|None|0
16+
ParameterBoolean|-normalize|Normalize.|
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
DisparityMapToElevationMap
2+
otbcli_DisparityMapToElevationMap
3+
Disparity map to elevation map
4+
Stereo
5+
ParameterRaster|-io.in|Input disparity map|False
6+
ParameterRaster|-io.left|Left sensor image|False
7+
ParameterRaster|-io.right|Right sensor image|False
8+
ParameterRaster|-io.lgrid|Left Grid|False
9+
ParameterRaster|-io.rgrid|Right Grid|False
10+
OutputRaster|-io.out|Output elevation map
11+
ParameterRaster|-io.mask|Disparity mask|True
12+
ParameterNumber|-step|DEM step|None|None|5.0
13+
ParameterNumber|-hmin|Minimum elevation expected|None|None|0.0
14+
ParameterNumber|-hmax|Maximum elevation expected|None|None|100.0
15+
ParameterSelection|-elev|Elevation management|dem;average|1
16+
ParameterFile|-elev.dem.path|DEM directory|
17+
ParameterFile|-elev.dem.geoid|Geoid File||
18+
ParameterNumber|-elev.average.value|Average Elevation|None|None|0.0
19+
ParameterNumber|-ram|Available RAM (Mb)|None|None|128

python/plugins/sextante/otb/description/ImageEnvelope.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Image Envelope
44
Geometry
55
ParameterRaster|-in|Input Image|False
66
OutputVector|-out|Output Vector Data
7+
ParameterNumber|-sr|Sampling Rate|None|None|0
78
ParameterSelection|-elev|Elevation management|dem;average|1
89
ParameterFile|-elev.dem.path|DEM directory|
910
ParameterFile|-elev.dem.geoid|Geoid File||
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
MeanShiftSmoothing
2+
otbcli_MeanShiftSmoothing
3+
Mean Shift filtering
4+
Image Filtering
5+
ParameterRaster|-in|Input Image|False
6+
OutputRaster|-fout|Filtered output
7+
ParameterNumber|-spatialr|Spatial radius|None|None|5
8+
ParameterNumber|-ranger|Range radius|None|None|15.0
9+
ParameterNumber|-thres|Mode convergence threshold|None|None|0.10000000149
10+
ParameterNumber|-maxiter|Maximum number of iterations|None|None|100
11+
ParameterBoolean|-modesearch|Mode search.|True

python/plugins/sextante/otb/description/OpticalCalibration.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ ParameterNumber|-atmo.wa|Water Vapor Amount|None|None|2.5
1414
ParameterNumber|-atmo.pressure|Atmospheric Pressure|None|None|1030.0
1515
ParameterNumber|-atmo.opt|Aerosol Optical Thickness|None|None|0.20000000298
1616
ParameterFile|-atmo.aeronet|Aeronet File||
17+
ParameterNumber|-radius|Window radius|None|None|2

python/plugins/sextante/otb/description/OrthoRectification.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@ Ortho-rectification
44
Geometry
55
ParameterRaster|-io.in|Input Image|False
66
OutputRaster|-io.out|Output Image
7-
ParameterSelection|-map|Output Cartographic Map Projection|utm;lambert2;lambert93;transmercator;wgs;epsg|5
8-
ParameterNumber|-map.utm.zone|Zone number|None|None|0
7+
ParameterSelection|-map|Output Cartographic Map Projection|utm;lambert2;lambert93;wgs;epsg|4
8+
ParameterNumber|-map.utm.zone|Zone number|None|None|31
99
ParameterBoolean|-map.utm.northhem|Northern Hemisphere|
10-
ParameterNumber|-map.transmercator.falseeasting|False easting|None|None|0.0
11-
ParameterNumber|-map.transmercator.falsenorthing|False northing|None|None|0.0
12-
ParameterNumber|-map.transmercator.scale|Scale factor|None|None|1.0
1310
ParameterNumber|-map.epsg.code|EPSG Code|None|None|32631
1411
ParameterSelection|-outputs.mode|Parameters estimation modes|auto;autosize;autospacing|0
1512
ParameterNumber|-outputs.ulx|Upper Left X|None|None|0.0

0 commit comments

Comments
 (0)