Showing with 762 additions and 842 deletions.
  1. +1 −1 python/plugins/sextante/__init__.py
  2. +7 −1 python/plugins/sextante/admintools/AdminToolsAlgorithmProvider.py
  3. +1 −1 python/plugins/sextante/algs/AddTableField.py
  4. +1 −1 python/plugins/sextante/algs/AutoincrementalField.py
  5. +1 −1 python/plugins/sextante/algs/EquivalentNumField.py
  6. +1 −1 python/plugins/sextante/algs/Explode.py
  7. +1 −1 python/plugins/sextante/algs/FieldPyculator.py
  8. +1 −2 python/plugins/sextante/algs/FieldsCalculator.py
  9. +1 −1 python/plugins/sextante/algs/JoinAttributes.py
  10. +0 −1 python/plugins/sextante/algs/PointsLayerFromTable.py
  11. +5 −6 python/plugins/sextante/algs/QGISAlgorithmProvider.py
  12. +1 −1 python/plugins/sextante/algs/SaveSelectedFeatures.py
  13. +47 −14 python/plugins/sextante/algs/StatisticsByCategories.py
  14. +1 −1 python/plugins/sextante/algs/ftools/Centroids.py
  15. +1 −1 python/plugins/sextante/algs/ftools/Delaunay.py
  16. +1 −1 python/plugins/sextante/algs/ftools/ExportGeometryInfo.py
  17. +1 −1 python/plugins/sextante/algs/ftools/ExtractNodes.py
  18. +1 −1 python/plugins/sextante/algs/ftools/FixedDistanceBuffer.py
  19. +1 −1 python/plugins/sextante/algs/ftools/LinesToPolygons.py
  20. +1 −1 python/plugins/sextante/algs/ftools/MeanCoords.py
  21. +1 −1 python/plugins/sextante/algs/ftools/MultipartToSingleparts.py
  22. +1 −1 python/plugins/sextante/algs/ftools/SimplifyGeometries.py
  23. +1 −1 python/plugins/sextante/algs/ftools/SinglePartsToMultiparts.py
  24. +1 −4 python/plugins/sextante/algs/ftools/Union.py
  25. +0 −364 python/plugins/sextante/algs/ftools/ftools_utils.py
  26. +1 −1 python/plugins/sextante/algs/mmqgisx/MMQGISXAlgorithms.py
  27. +2 −1 python/plugins/sextante/core/GeoAlgorithm.py
  28. +3 −7 python/plugins/sextante/core/LayerExporter.py
  29. +6 −4 python/plugins/sextante/core/QGisLayers.py
  30. +9 −11 python/plugins/sextante/core/Sextante.py
  31. +6 −5 python/plugins/sextante/core/SextanteVectorWriter.py
  32. +3 −3 python/plugins/sextante/gdal/GdalUtils.py
  33. +1 −1 python/plugins/sextante/gdal/scripts/sieve.py
  34. +7 −7 python/plugins/sextante/gdal/translate.py
  35. +12 −2 python/plugins/sextante/gdal/warp.py
  36. +2 −1 python/plugins/sextante/grass/description/r.kappa.txt
  37. +5 −2 python/plugins/sextante/gui/AlgorithmClassification.py
  38. +1 −1 python/plugins/sextante/gui/AlgorithmExecutor.py
  39. +2 −1 python/plugins/sextante/gui/BatchOutputSelectionPanel.py
  40. +57 −10 python/plugins/sextante/gui/BatchProcessingDialog.py
  41. +7 −2 python/plugins/sextante/gui/CrsSelectionPanel.py
  42. +16 −19 python/plugins/sextante/gui/SextanteToolbox.py
  43. +1 −1 python/plugins/sextante/gui/UnthreadedAlgorithmExecutor.py
  44. +276 −262 python/plugins/sextante/gui/help/algclasssification.txt
  45. +1 −0 python/plugins/sextante/modeler/CalculatorModelerParametersDialog.py
  46. +1 −2 python/plugins/sextante/modeler/ModelerAlgorithm.py
  47. +8 −7 python/plugins/sextante/modeler/ModelerDialog.py
  48. +4 −3 python/plugins/sextante/modeler/ModelerOnlyAlgorithmProvider.py
  49. +16 −2 python/plugins/sextante/modeler/ModelerParametersDialog.py
  50. +57 −0 python/plugins/sextante/modeler/RasterLayerBoundsAlgorithm.py
  51. +56 −0 python/plugins/sextante/modeler/VectorLayerBoundsAlgorithm.py
  52. +4 −1 python/plugins/sextante/parameters/ParameterCrs.py
  53. +40 −33 python/plugins/sextante/r/RAlgorithm.py
  54. +2 −0 python/plugins/sextante/r/RAlgorithmProvider.py
  55. +6 −1 python/plugins/sextante/r/RUtils.py
  56. +3 −2 python/plugins/sextante/r/scripts/Advanced_Raster_histogram.rsx
  57. +10 −17 python/plugins/sextante/saga/SagaAlgorithm.py
  58. +49 −4 python/plugins/sextante/saga/SagaUtils.py
  59. +0 −9 python/plugins/sextante/saga/description/DecisionTree.txt
  60. +0 −1 python/plugins/sextante/saga/description/Merging.txt
  61. +5 −5 python/plugins/sextante/script/scripts/Number_of_unique_values_in_classes.py
  62. +1 −1 python/plugins/sextante/script/scripts/Save_selected_features.py
  63. +3 −3 python/plugins/sextante/script/scripts/Split_vector_layer_by_attribute.py
2 changes: 1 addition & 1 deletion python/plugins/sextante/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
***************************************************************************
"""

from sextante.core.Sextante import runalg, runandload, alghelp, alglist, algoptions, load, loadFromAlg, \
from sextante.core.Sextante import runalg, runandload, alghelp, alglist, algoptions, load, \
extent, getObjectFromName, getObjectFromUri, getobject, getfeatures

__author__ = 'Victor Olaya'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,13 @@ def __init__(self):
AlgorithmProvider.__init__(self)
self.alglist = [ImportVectorIntoGeoServer(), ImportRasterIntoGeoServer(),
CreateWorkspace(), DeleteWorkspace(), DeleteDatastore(),
CreateStyleGeoServer(), ImportIntoPostGIS(), PostGISExecuteSQL()]#, TruncateSeedGWC()]
CreateStyleGeoServer()]

try:
self.alglist.append(ImportIntoPostGIS())
self.alglist.append(PostGISExecuteSQL())
except:
pass

def initializeSettings(self):
AlgorithmProvider.initializeSettings(self)
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/AddTableField.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def processAlgorithm(self, progress):
vprovider = vlayer.dataProvider()
fields = vprovider.fields()
fields.append(QgsField(fieldname, self.TYPES[fieldtype]))
writer = output.getVectorWriter(fields, vprovider.geometryType(), vprovider.crs() )
writer = output.getVectorWriter(fields, vprovider.geometryType(), vlayer.crs() )
outFeat = QgsFeature()
inGeom = QgsGeometry()
nElement = 0
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/AutoincrementalField.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def processAlgorithm(self, progress):
vprovider = vlayer.dataProvider()
fields = vprovider.fields()
fields[len(fields)] = QgsField("AUTO", QVariant.Int)
writer = output.getVectorWriter(fields, vprovider.geometryType(), vprovider.crs() )
writer = output.getVectorWriter(fields, vprovider.geometryType(), vlayer.crs() )
inFeat = QgsFeature()
outFeat = QgsFeature()
inGeom = QgsGeometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/EquivalentNumField.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def processAlgorithm(self, progress):
fieldindex = vlayer.fieldNameIndex(fieldname)
fields = vprovider.fields()
fields.append(QgsField("NUM_FIELD", QVariant.Int))
writer = output.getVectorWriter(fields, vprovider.geometryType(), vprovider.crs() )
writer = output.getVectorWriter(fields, vprovider.geometryType(), vlayer.crs() )
outFeat = QgsFeature()
inGeom = QgsGeometry()
nElement = 0
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/Explode.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def processAlgorithm(self, progress):
output = self.getOutputFromName(self.OUTPUT)
vprovider = vlayer.dataProvider()
fields = vprovider.fields()
writer = output.getVectorWriter(fields, QGis.WKBLineString, vprovider.crs() )
writer = output.getVectorWriter(fields, QGis.WKBLineString, vlayer.crs() )
outFeat = QgsFeature()
inGeom = QgsGeometry()
nElement = 0
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/FieldPyculator.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def processAlgorithm(self, progress):
vprovider = layer.dataProvider()
fields = vprovider.fields()
fields.append(QgsField(fieldname, QVariant.Double))
writer = output.getVectorWriter(fields, vprovider.geometryType(), vprovider.crs() )
writer = output.getVectorWriter(fields, vprovider.geometryType(), layer.crs() )
outFeat = QgsFeature()
new_ns = {}

Expand Down
3 changes: 1 addition & 2 deletions python/plugins/sextante/algs/FieldsCalculator.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
from PyQt4.QtGui import *
from sextante.parameters.ParameterString import ParameterString
from sextante.core.QGisLayers import QGisLayers
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException


class FieldsCalculator(GeoAlgorithm):
Expand Down Expand Up @@ -62,7 +61,7 @@ def processAlgorithm(self, progress):
vprovider = vlayer.dataProvider()
fields = vprovider.fields()
fields.append(QgsField(fieldname, QVariant.Double))
writer = output.getVectorWriter(fields, vprovider.geometryType(), vprovider.crs())
writer = output.getVectorWriter(fields, vprovider.geometryType(), vlayer.crs())
outFeat = QgsFeature()
inGeom = QgsGeometry()
nFeat = vprovider.featureCount()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/JoinAttributes.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def processAlgorithm(self, progress):
outFields.extend(provider.fields())
outFields.extend(provider2.fields())

writer = output.getVectorWriter(outFields, provider.geometryType(), provider.crs())
writer = output.getVectorWriter(outFields, provider.geometryType(), layer.crs())

inFeat = QgsFeature()
inFeat2 = QgsFeature()
Expand Down
1 change: 0 additions & 1 deletion python/plugins/sextante/algs/PointsLayerFromTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"""
from sextante.parameters.ParameterTable import ParameterTable
from sextante.parameters.ParameterTableField import ParameterTableField
from sextante.core.SextanteLog import SextanteLog

__author__ = 'Victor Olaya'
__date__ = 'August 2013'
Expand Down
11 changes: 5 additions & 6 deletions python/plugins/sextante/algs/QGISAlgorithmProvider.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
* *
***************************************************************************
"""
from sextante.algs.MeanAndStdDevPlot import MeanAndStdDevPlot
from sextante.algs.BarPlot import BarPlot
from sextante.algs.PolarPlot import PolarPlot
#from sextante.algs.MeanAndStdDevPlot import MeanAndStdDevPlot
#from sextante.algs.BarPlot import BarPlot
#from sextante.algs.PolarPlot import PolarPlot
from sextante.algs.RasterLayerStatistics import RasterLayerStatistics

__author__ = 'Victor Olaya'
Expand All @@ -30,7 +30,7 @@
import os
from PyQt4 import QtGui
#from sextante.algs.RasterLayerHistogram import RasterLayerHistogram
#from sextante.algs.StatisticsByCategories import StatisticsByCategories
from sextante.algs.StatisticsByCategories import StatisticsByCategories
from sextante.algs.ftools.PointsInPolygon import PointsInPolygon
from sextante.algs.ftools.PointsInPolygonUnique import PointsInPolygonUnique
from sextante.algs.ftools.PointsInPolygonWeighted import PointsInPolygonWeighted
Expand Down Expand Up @@ -97,8 +97,7 @@ def __init__(self):
SumLines(), PointsInPolygon(), PointsInPolygonWeighted(), PointsInPolygonUnique(),
BasicStatisticsStrings(), BasicStatisticsNumbers(), NearestNeighbourAnalysis(),
MeanCoords(), LinesIntersection(), UniqueValues(), PointDistance(), PointsLayerFromTable(),
#StatisticsByCategories(),
ReprojectLayer(),
StatisticsByCategories(),ReprojectLayer(),
ExportGeometryInfo(), Centroids(), Delaunay(), VoronoiPolygons(),
SimplifyGeometries(), DensifyGeometries(), DensifyGeometriesInterval(),
MultipartToSingleparts(), SinglePartsToMultiparts(), PolygonsToLines(),
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/SaveSelectedFeatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def processAlgorithm(self, progress):
#To do so, we call the getVectorWriter method in the Output object.
#That will give as a SextanteVectorWriter, that we can later use to add features.
provider = vectorLayer.dataProvider()
writer = output.getVectorWriter( provider.fields(), provider.geometryType(), provider.crs() )
writer = output.getVectorWriter( provider.fields(), provider.geometryType(), vectorLayer.crs() )

#Now we take the selected features and add them to the output layer
features = QGisLayers.features(vectorLayer)
Expand Down
61 changes: 47 additions & 14 deletions python/plugins/sextante/algs/StatisticsByCategories.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,16 @@
* *
***************************************************************************
"""
import math

__author__ = 'Victor Olaya'
__date__ = 'September 2012'
__copyright__ = '(C) 2012, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

import math
from PyQt4.QtCore import *
from qgis.core import *
from scipy import stats
from sextante.outputs.OutputTable import OutputTable
from sextante.core.GeoAlgorithm import GeoAlgorithm
from sextante.core.QGisLayers import QGisLayers
Expand All @@ -50,7 +49,7 @@ def defineCharacteristics(self):
self.addParameter(ParameterTableField(self.CATEGORIES_FIELD_NAME, "Field with categories",
self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY))

self.addOutput(OutputTable(self.OUTPUT, "Statistics for numeric field"))
self.addOutput(OutputTable(self.OUTPUT, "Statistics"))

def processAlgorithm(self, progress):
layer = QGisLayers.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER))
Expand All @@ -62,21 +61,55 @@ def processAlgorithm(self, progress):
categoriesField = layer.fieldNameIndex(categoriesFieldName)

features = QGisLayers.features(layer)
nFeat = len(features)
nFeats = len(features)
values = {}
nFeat = 0
for feat in features:
nFeat += 1
progress.setPercentage(int((100 * nFeats) / nFeat))
attrs = feat.attributes()
value = float(attrs[valuesField].toDouble()[0])
cat = unicode(attrs[categoriesField].toString())
if cat not in values:
values[cat] = []
values[cat].append(value)
try:
value = float(attrs[valuesField].toDouble()[0])
cat = unicode(attrs[categoriesField].toString())
if cat not in values:
values[cat] = []
values[cat].append(value)
except:
pass

fields = [QgsField("category", QVariant.String), QgsField("mean", QVariant.Double), QgsField("variance", QVariant.Double)]
fields = [QgsField("category", QVariant.String), QgsField("min", QVariant.Double),
QgsField("max", QVariant.Double), QgsField("mean", QVariant.Double),
QgsField("stddev", QVariant.Double)]
writer = output.getTableWriter(fields)
for cat, value in values.items():
n, min_max, mean, var, skew, kurt = stats.describe(value)
record = [cat, mean, math.sqrt(var)]
for cat, v in values.items():
min, max, mean, stddev = calculateStats(v)
record = [cat, min, max, mean, stddev]
writer.addRecord(record)


def calculateStats(values):
n = 0
sum = 0
mean = 0
M2 = 0
minvalue = None
maxvalue = None

for v in values:
sum += v
n = n + 1
delta = v - mean
mean = mean + delta/n
M2 = M2 + delta*(v - mean)
if minvalue is None:
minvalue = v
maxvalue = v
else:
minvalue = min(v, minvalue)
maxvalue = max(v, maxvalue)

if n > 1:
variance = M2/(n - 1)
else:
variance = 0;
stddev = math.sqrt(variance)
return minvalue,maxvalue, mean, stddev
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/Centroids.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def processAlgorithm(self, progress):
layer = QGisLayers.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER))

writer = self.getOutputFromName(self.OUTPUT_LAYER).getVectorWriter(layer.pendingFields(),
QGis.WKBPoint, layer.dataProvider().crs())
QGis.WKBPoint, layer.crs())

#layer.select(layer.pendingAllAttributesList())

Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/Delaunay.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def processAlgorithm(self, progress):
]

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields,
QGis.WKBPolygon, layer.dataProvider().crs())
QGis.WKBPolygon, layer.crs())

pts = []
ptDict = {}
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/ExportGeometryInfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def processAlgorithm(self, progress):
fields.append(QgsField(QString("ycoords"), QVariant.Double))

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields,
provider.geometryType(), provider.crs())
provider.geometryType(), layer.crs())

ellips = None
crs = None
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/ExtractNodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def processAlgorithm(self, progress):
provider = layer.dataProvider()

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
QGis.WKBPoint, provider.crs())
QGis.WKBPoint, layer.crs())

outFeat = QgsFeature()
inGeom = QgsGeometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/FixedDistanceBuffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def processAlgorithm(self, progress):

provider = layer.dataProvider()
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
QGis.WKBPolygon, provider.crs())
QGis.WKBPolygon, layer.crs())

buff.buffering(progress, writer, distance, None, False,
layer, dissolve, segments)
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/LinesToPolygons.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def processAlgorithm(self, progress):
provider = layer.dataProvider()

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
QGis.WKBPolygon, provider.crs())
QGis.WKBPolygon, layer.crs())

outFeat = QgsFeature()

Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/MeanCoords.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def processAlgorithm(self, progress):
]

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fieldList,
QGis.WKBPoint, provider.crs())
QGis.WKBPoint, layer.crs())

current = 0
total = 100.0 / float(provider.featureCount() * len(uniqueValues))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def processAlgorithm(self, progress):
geomType = self.multiToSingleGeom(provider.geometryType())

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
geomType, provider.crs())
geomType, layer.crs())

outFeat = QgsFeature()
inGeom = QgsGeometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/sextante/algs/ftools/SimplifyGeometries.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def processAlgorithm(self, progress):
provider = layer.dataProvider()

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
layer.wkbType(), provider.crs())
layer.wkbType(), layer.crs())

current = 0
selection = QGisLayers.features(layer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def processAlgorithm(self, progress):
geomType = self.singleToMultiGeom(provider.geometryType())

writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(layer.pendingFields(),
geomType, provider.crs())
geomType, layer.crs())

inFeat = QgsFeature()
outFeat = QgsFeature()
Expand Down
5 changes: 1 addition & 4 deletions python/plugins/sextante/algs/ftools/Union.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,7 @@ def processAlgorithm(self, progress):

fields = utils.combineVectorFields(vlayerA, vlayerB )
names = [field.name() for field in fields]
SextanteLog.addToLog(SextanteLog.LOG_INFO, str(names))
#longNames = ftools_utils.checkFieldNameLength( fields )
#if not longNames.isEmpty():
#raise GeoAlgorithmExecutionException("Following field names are longer than 10 characters:\n" + longNames.join('\n') )
SextanteLog.addToLog(SextanteLog.LOG_INFO, str(names))
writer = self.getOutputFromName(Union.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
inFeatA = QgsFeature()
inFeatB = QgsFeature()
Expand Down
Loading