[qgis] 01/06: Imported Upstream version 2.14.13+dfsg

Bas Couwenberg sebastic at debian.org
Fri Mar 24 19:32:00 UTC 2017


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository qgis.

commit 445ad9feac0ebca2148787236e73f3bdc1866dc3
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Fri Mar 24 17:05:47 2017 +0100

    Imported Upstream version 2.14.13+dfsg
---
 CMakeLists.txt                                     |   2 +-
 ChangeLog                                          | 126 +++++++++++++++++++++
 cmake/FindQScintilla.cmake                         |   4 +-
 debian/changelog                                   |  10 +-
 images/icons/qgis-icon-macos.png                   | Bin 0 -> 169214 bytes
 python/core/core.sip                               |   1 +
 python/ext-libs/owslib/wmts.py                     |   3 +-
 python/plugins/MetaSearch/dialogs/maindialog.py    |  10 +-
 python/plugins/MetaSearch/metadata.txt             |  12 +-
 .../MetaSearch/resources/connections-default.xml   |   2 +-
 python/plugins/MetaSearch/util.py                  |  21 +++-
 python/plugins/processing/algs/saga/CMakeLists.txt |   2 +
 .../processing/algs/saga/SagaAlgorithm230.py       |  64 +++++++++++
 .../processing/algs/saga/SagaAlgorithmProvider.py  |   5 +-
 .../2.3.0/AccumulatedCost(Anisotropic).txt         |   8 ++
 .../2.3.0/AccumulatedCost(Isotropic).txt           |   7 ++
 .../description/2.3.0/AddCoordinatestopoints.txt   |   4 +
 .../description/2.3.0/AddGridValuestoPoints.txt    |   7 ++
 .../description/2.3.0/AddGridValuestoShapes.txt    |   7 ++
 .../2.3.0/AddPointAttributestoPolygons.txt         |   7 ++
 .../2.3.0/AddPolygonAttributestoPoints.txt         |   6 +
 .../algs/saga/description/2.3.0/Aggregate.txt      |   5 +
 .../2.3.0/AggregatePointObservations.txt           |  14 +++
 .../saga/description/2.3.0/AggregationIndex.txt    |   5 +
 .../2.3.0/AnalyticalHierarchyProcess.txt           |   5 +
 .../description/2.3.0/AnalyticalHillshading.txt    |   8 ++
 .../description/2.3.0/B-SplineApproximation.txt    |  10 ++
 .../description/2.3.0/BurnStreamNetworkintoDEM.txt |   8 ++
 .../algs/saga/description/2.3.0/CellBalance.txt    |   7 ++
 .../saga/description/2.3.0/ChangeDateFormat.txt    |   7 ++
 .../saga/description/2.3.0/ChangeDetection.txt     |  16 +++
 .../saga/description/2.3.0/ChangeGridValues.txt    |   6 +
 .../saga/description/2.3.0/ChangeTimeFormat.txt    |   7 ++
 .../algs/saga/description/2.3.0/ChannelNetwork.txt |  14 +++
 .../2.3.0/ChannelNetworkandDrainageBasins.txt      |  11 ++
 .../saga/description/2.3.0/ClipGridwithPolygon.txt |   5 +
 .../description/2.3.0/ClipPointswithPolygons.txt   |   7 ++
 .../algs/saga/description/2.3.0/CloseGaps.txt      |   6 +
 .../saga/description/2.3.0/CloseGapswithSpline.txt |  12 ++
 .../saga/description/2.3.0/CloseOneCellGaps.txt    |   4 +
 .../description/2.3.0/ClusterAnalysisforGrids.txt  |   9 ++
 .../2.3.0/ConfusionMatrix(GridPolygons).txt        |  12 ++
 .../description/2.3.0/ContourLinesfromGrid.txt     |   8 ++
 .../2.3.0/ConvergenceIndex(SearchRadius).txt       |  11 ++
 .../saga/description/2.3.0/ConvergenceIndex.txt    |   6 +
 .../description/2.3.0/ConvertDataStorageType.txt   |   5 +
 .../description/2.3.0/ConvertLinestoPoints.txt     |   6 +
 .../description/2.3.0/ConvertLinestoPolygons.txt   |   4 +
 .../2.3.0/ConvertMultipointstoPoints.txt           |   4 +
 .../description/2.3.0/ConvertPointstoLine(s).txt   |   6 +
 .../2.3.0/ConvertPolygonLineVerticestoPoints.txt   |   4 +
 .../description/2.3.0/ConvertPolygonstoLines.txt   |   4 +
 .../algs/saga/description/2.3.0/ConvexHull.txt     |   6 +
 .../description/2.3.0/CreateLinesGraticule.txt     |   9 ++
 .../description/2.3.0/CreatePolygonsGraticule.txt  |   9 ++
 .../algs/saga/description/2.3.0/CropToData.txt     |   4 +
 .../2.3.0/Cross-ClassificationandTabulation.txt    |   7 ++
 .../algs/saga/description/2.3.0/CrossProfiles.txt  |   8 ++
 .../description/2.3.0/CubicSplineApproximation.txt |  13 +++
 .../description/2.3.0/CurvatureClassification.txt  |   5 +
 .../algs/saga/description/2.3.0/CutShapesLayer.txt |   7 ++
 .../description/2.3.0/DTMFilter(slope-based).txt   |   8 ++
 .../2.3.0/DiffusiveHillslopeEvolution(ADI).txt     |  11 ++
 .../2.3.0/DiffusiveHillslopeEvolution(FTCS).txt    |  11 ++
 .../2.3.0/DirectionalStatisticsforSingleGrid.txt   |  23 ++++
 .../algs/saga/description/2.3.0/DistanceMatrix.txt |   4 +
 .../2.3.0/DiurnalAnisotropicHeating.txt            |   5 +
 .../description/2.3.0/DiversityOfCategories.txt    |  15 +++
 .../2.3.0/DownslopeDistanceGradient.txt            |   7 ++
 .../saga/description/2.3.0/EdgeContamination.txt   |   4 +
 .../description/2.3.0/EffectiveAirFlowHeights.txt  |  15 +++
 .../2.3.0/FastRegionGrowingAlgorithm.txt           |   7 ++
 .../description/2.3.0/FastRepresentativeness.txt   |   7 ++
 .../saga/description/2.3.0/FillGapsinRecords.txt   |   6 +
 .../2.3.0/FillSinks(PlanchonDarboux,2001).txt      |   5 +
 .../saga/description/2.3.0/FillSinks(QMofESP).txt  |   6 +
 .../saga/description/2.3.0/FillSinks(WangLiu).txt  |   7 ++
 .../description/2.3.0/FillSinksXXL(WangLiu).txt    |   5 +
 .../algs/saga/description/2.3.0/FilterClumps.txt   |   5 +
 .../saga/description/2.3.0/FireRiskAnalysis.txt    |  18 +++
 .../saga/description/2.3.0/FitNPointstoshape.txt   |   5 +
 .../algs/saga/description/2.3.0/FlatDetection.txt  |   6 +
 .../saga/description/2.3.0/FlattenPolygonLayer.txt |   4 +
 .../2.3.0/FlowAccumulation(FlowTracing).txt        |  17 +++
 .../2.3.0/FlowAccumulation(QMofESP).txt            |   6 +
 .../2.3.0/FlowAccumulation(Recursive).txt          |  18 +++
 .../2.3.0/FlowAccumulation(Top-Down).txt           |   5 +
 .../algs/saga/description/2.3.0/FlowPathLength.txt |   8 ++
 .../2.3.0/FlowWidthandSpecificCatchmentArea.txt    |   7 ++
 .../2.3.0/Fragmentation(Alternative).txt           |  17 +++
 .../description/2.3.0/Fragmentation(Standard).txt  |  17 +++
 ...gmentationClassesfromDensityandConnectivity.txt |   9 ++
 .../algs/saga/description/2.3.0/Function.txt       |   8 ++
 .../algs/saga/description/2.3.0/Fuzzify.txt        |  10 ++
 .../description/2.3.0/FuzzyIntersection(AND).txt   |   5 +
 .../algs/saga/description/2.3.0/FuzzyUnion(OR).txt |   5 +
 .../algs/saga/description/2.3.0/GaussianFilter.txt |   7 ++
 ...aphicallyWeightedMultipleRegression(Points).txt |  16 +++
 ...allyWeightedMultipleRegression(PointsGrids).txt |  20 ++++
 .../GeographicallyWeightedMultipleRegression.txt   |  23 ++++
 ...eographicallyWeightedRegression(PointsGrid).txt |  20 ++++
 .../2.3.0/GeographicallyWeightedRegression.txt     |  23 ++++
 .../saga/description/2.3.0/GeometricFigures.txt    |   7 ++
 .../saga/description/2.3.0/GetShapesExtents.txt    |   5 +
 .../description/2.3.0/GlobalMoransIforGrids.txt    |   5 +
 ...adientVectorfromCartesiantoPolarCoordinates.txt |  10 ++
 ...adientVectorfromPolartoCartesianCoordinates.txt |  10 ++
 .../GradientVectorsfromDirectionalComponents.txt   |  10 ++
 .../GradientVectorsfromDirectionandLength.txt      |  10 ++
 .../2.3.0/GradientVectorsfromSurface.txt           |   9 ++
 .../algs/saga/description/2.3.0/GridBuffer.txt     |   6 +
 .../algs/saga/description/2.3.0/GridCalculator.txt |   9 ++
 .../algs/saga/description/2.3.0/GridCellIndex.txt  |   5 +
 .../algs/saga/description/2.3.0/GridDifference.txt |   5 +
 .../algs/saga/description/2.3.0/GridDivision.txt   |   5 +
 .../algs/saga/description/2.3.0/GridMasking.txt    |   6 +
 .../saga/description/2.3.0/GridNormalisation.txt   |   6 +
 .../saga/description/2.3.0/GridOrientation.txt     |   5 +
 .../saga/description/2.3.0/GridProximityBuffer.txt |   8 ++
 .../saga/description/2.3.0/GridSkeletonization.txt |   9 ++
 .../saga/description/2.3.0/GridStandardisation.txt |   5 +
 .../2.3.0/GridStatisticsforPolygons.txt            |  16 +++
 .../2.3.0/GridValuestoPoints(randomly).txt         |   5 +
 .../saga/description/2.3.0/GridValuestoPoints.txt  |   7 ++
 .../algs/saga/description/2.3.0/GridVolume.txt     |   5 +
 .../algs/saga/description/2.3.0/GridsProduct.txt   |   4 +
 .../algs/saga/description/2.3.0/GridsSum.txt       |   4 +
 .../saga/description/2.3.0/HistogramSurface.txt    |   5 +
 .../algs/saga/description/2.3.0/Hypsometry.txt     |  10 ++
 .../description/2.3.0/InverseDistanceWeighted.txt  |  22 ++++
 .../saga/description/2.3.0/InvertDataNo-Data.txt   |   4 +
 .../description/2.3.0/KernelDensityEstimation.txt  |  11 ++
 .../algs/saga/description/2.3.0/LSFactor.txt       |   9 ++
 .../algs/saga/description/2.3.0/LakeFlood.txt      |   7 ++
 .../description/2.3.0/LandSurfaceTemperature.txt   |  10 ++
 .../saga/description/2.3.0/LaplacianFilter.txt     |   8 ++
 .../saga/description/2.3.0/Layerofextremevalue.txt |   5 +
 .../algs/saga/description/2.3.0/LeastCostPaths.txt |   7 ++
 .../description/2.3.0/Line-PolygonIntersection.txt |   6 +
 .../algs/saga/description/2.3.0/LineDissolve.txt   |   8 ++
 .../algs/saga/description/2.3.0/LineProperties.txt |   7 ++
 .../saga/description/2.3.0/LineSimplification.txt  |   5 +
 .../description/2.3.0/LocalMinimaandMaxima.txt     |   5 +
 .../algs/saga/description/2.3.0/MajorityFilter.txt |   7 ++
 .../saga/description/2.3.0/MassBalanceIndex.txt    |   8 ++
 .../algs/saga/description/2.3.0/MergeLayers.txt    |   6 +
 .../saga/description/2.3.0/MetricConversions.txt   |   5 +
 .../description/2.3.0/MinimumDistanceAnalysis.txt  |   4 +
 .../description/2.3.0/ModifiedQuadraticShepard.txt |  11 ++
 .../saga/description/2.3.0/MorphologicalFilter.txt |   7 ++
 .../2.3.0/MorphometricProtectionIndex.txt          |   5 +
 .../algs/saga/description/2.3.0/Mosaicking.txt     |  15 +++
 .../saga/description/2.3.0/Multi-BandVariation.txt |  11 ++
 .../description/2.3.0/MultiDirectionLeeFilter.txt  |  10 ++
 .../MultilevelB-SplineInterpolation(fromGrid).txt  |  13 +++
 .../2.3.0/MultilevelB-SplineInterpolation.txt      |  11 ++
 ...ultilevelB-SplineInterpolationforCategories.txt |  11 ++
 .../MultipleRegressionAnalysis(GridGrids).txt      |  15 +++
 .../MultipleRegressionAnalysis(PointsGrids).txt    |  16 +++
 ...esolutionIndexofValleyBottomFlatness(MRVBF).txt |  13 +++
 .../saga/description/2.3.0/NaturalNeighbour.txt    |  10 ++
 .../saga/description/2.3.0/NearestNeighbour.txt    |   9 ++
 .../2.3.0/OrderedWeightedAveraging(OWA).txt        |   5 +
 .../description/2.3.0/OrdinaryKriging(Global).txt  |  27 +++++
 .../saga/description/2.3.0/OrdinaryKriging.txt     |  24 ++++
 .../2.3.0/OverlandFlow-KinematicWaveD8.txt         |  13 +++
 .../2.3.0/OverlandFlowDistancetoChannelNetwork.txt |   8 ++
 .../algs/saga/description/2.3.0/Patching.txt       |   6 +
 .../saga/description/2.3.0/PatternAnalysis.txt     |  11 ++
 .../2.3.0/PointStatisticsforPolygons.txt           |  14 +++
 .../algs/saga/description/2.3.0/PointsFilter.txt   |  12 ++
 .../algs/saga/description/2.3.0/PointsThinning.txt |   6 +
 .../2.3.0/PolartoCartesianCoordinates.txt          |   8 ++
 .../description/2.3.0/Polygon-LineIntersection.txt |   5 +
 .../saga/description/2.3.0/PolygonCentroids.txt    |   5 +
 .../saga/description/2.3.0/PolygonClipping.txt     |   6 +
 .../saga/description/2.3.0/PolygonDifference.txt   |   6 +
 .../saga/description/2.3.0/PolygonDissolve.txt     |   8 ++
 .../description/2.3.0/PolygonDissolveAllPolygs.txt |   5 +
 .../saga/description/2.3.0/PolygonIdentity.txt     |   6 +
 .../saga/description/2.3.0/PolygonIntersect.txt    |   6 +
 .../2.3.0/PolygonPartstoSeparatePolygons.txt       |   5 +
 .../saga/description/2.3.0/PolygonProperties.txt   |   8 ++
 .../description/2.3.0/PolygonSelfIntersection.txt  |   5 +
 .../saga/description/2.3.0/PolygonShapeIndices.txt |   4 +
 .../2.3.0/PolygonSymmetricalDifference.txt         |   6 +
 .../algs/saga/description/2.3.0/PolygonUnion.txt   |   6 +
 .../algs/saga/description/2.3.0/PolygonUpdate.txt  |   6 +
 .../description/2.3.0/PolygonstoEdgesandNodes.txt  |   5 +
 .../description/2.3.0/PolynomialRegression.txt     |  14 +++
 .../2.3.0/PrincipleComponentsAnalysis.txt          |   6 +
 .../saga/description/2.3.0/Profilefrompoints.txt   |   7 ++
 .../saga/description/2.3.0/ProfilesfromLines.txt   |   9 ++
 .../algs/saga/description/2.3.0/ProximityGrid.txt  |   6 +
 .../2.3.0/QuadTreeStructuretoShapes.txt            |   7 ++
 .../algs/saga/description/2.3.0/RGBComposite.txt   |  24 ++++
 .../description/2.3.0/RadiusofVariance(Grid).txt   |   7 ++
 .../algs/saga/description/2.3.0/RandomField.txt    |  12 ++
 .../description/2.3.0/RandomTerrainGeneration.txt  |   9 ++
 .../algs/saga/description/2.3.0/RankFilter.txt     |   7 ++
 .../saga/description/2.3.0/RealSurfaceArea.txt     |   4 +
 .../description/2.3.0/ReclassifyGridValues.txt     |  18 +++
 .../2.3.0/RegressionAnalysis(PointsGrid).txt       |   9 ++
 .../2.3.0/RelativeHeightsandSlopePositions.txt     |  11 ++
 .../description/2.3.0/RemoveDuplicatePoints.txt    |   7 ++
 .../description/2.3.0/Representativeness(Grid).txt |   6 +
 .../algs/saga/description/2.3.0/Resampling.txt     |  12 ++
 .../description/2.3.0/ResidualAnalysis(Grid).txt   |  18 +++
 .../algs/saga/description/2.3.0/RunningAverage.txt |   6 +
 .../saga/description/2.3.0/SAGAWetnessIndex.txt    |  13 +++
 .../algs/saga/description/2.3.0/SeedGeneration.txt |  11 ++
 .../2.3.0/Separatepointsbydirection.txt            |   6 +
 .../algs/saga/description/2.3.0/ShapesBuffer.txt   |  10 ++
 .../saga/description/2.3.0/ShapesBufferFixed.txt   |   9 ++
 .../algs/saga/description/2.3.0/ShapestoGrid.txt   |  14 +++
 .../saga/description/2.3.0/SharedPolygonEdges.txt  |   8 ++
 .../saga/description/2.3.0/ShrinkAndExpand.txt     |   8 ++
 .../algs/saga/description/2.3.0/SimpleFilter.txt   |   7 ++
 .../saga/description/2.3.0/SimpleRegionGrowing.txt |  14 +++
 .../algs/saga/description/2.3.0/Simulation.txt     |  16 +++
 .../2.3.0/SinkDrainageRouteDetection.txt           |   6 +
 .../algs/saga/description/2.3.0/SinkRemoval.txt    |   8 ++
 .../algs/saga/description/2.3.0/SkyViewFactor.txt  |  12 ++
 .../description/2.3.0/Slope,Aspect,Curvature.txt   |  18 +++
 .../algs/saga/description/2.3.0/SlopeLength.txt    |   4 +
 .../2.3.0/SoilTextureClassification.txt            |   7 ++
 .../2.3.0/SpatialPointPatternAnalysis.txt          |   7 ++
 .../description/2.3.0/SplitShapesLayerRandomly.txt |   7 ++
 .../saga/description/2.3.0/StatisticsforGrids.txt  |  14 +++
 .../algs/saga/description/2.3.0/StrahlerOrder.txt  |   4 +
 .../saga/description/2.3.0/StreamPowerIndex.txt    |   6 +
 .../description/2.3.0/SuccessiveFlowRouting.txt    |   7 ++
 .../description/2.3.0/SupervisedClassification.txt |  22 ++++
 .../description/2.3.0/SurfaceSpecificPoints.txt    |   6 +
 .../2.3.0/TPIBasedLandformClassification.txt       |  12 ++
 .../2.3.0/TerrainRuggednessIndex(TRI).txt          |   9 ++
 .../description/2.3.0/ThinPlateSpline(TIN).txt     |  12 ++
 .../saga/description/2.3.0/ThinPlateSpline.txt     |  17 +++
 .../saga/description/2.3.0/ThresholdBuffer.txt     |   8 ++
 .../description/2.3.0/TopographicCorrection.txt    |  11 ++
 .../2.3.0/TopographicPositionIndex(TPI).txt        |  11 ++
 .../2.3.0/TopographicWetnessIndex(TWI).txt         |   8 ++
 .../2.3.0/Transectthroughpolygonshapefile.txt      |   6 +
 .../saga/description/2.3.0/TransformShapes.txt     |  11 ++
 .../algs/saga/description/2.3.0/TransposeGrids.txt |   6 +
 .../algs/saga/description/2.3.0/Triangulation.txt  |   9 ++
 .../description/2.3.0/UniversalKriging(Global).txt |  32 ++++++
 .../saga/description/2.3.0/UniversalKriging.txt    |  24 ++++
 .../algs/saga/description/2.3.0/UpslopeArea.txt    |  10 ++
 .../saga/description/2.3.0/UserDefinedFilter.txt   |   6 +
 .../algs/saga/description/2.3.0/VariogramCloud.txt |   7 ++
 .../saga/description/2.3.0/VariogramSurface.txt    |   9 ++
 .../2.3.0/VectorRuggednessMeasure(VRM).txt         |   9 ++
 .../description/2.3.0/VectorisingGridClasses.txt   |   7 ++
 .../2.3.0/VegetationIndex(SlopeBased).txt          |  13 +++
 .../2.3.0/VerticalDistancetoChannelNetwork.txt     |   8 ++
 .../description/2.3.0/WaterRetentionCapacity.txt   |   6 +
 .../saga/description/2.3.0/WatershedBasins.txt     |   7 ++
 .../description/2.3.0/WatershedSegmentation.txt    |  12 ++
 .../2.3.0/WindEffect(WindwardLeewardIndex).txt     |  15 +++
 .../saga/description/2.3.0/ZonalGridStatistics.txt |   8 ++
 python/plugins/processing/tools/vector.py          |   4 +
 src/app/main.cpp                                   |   5 +
 src/gui/attributetable/qgsattributetablemodel.cpp  |   4 +-
 src/gui/qgsfiledownloader.h                        |   4 +-
 src/gui/qgsmessagelogviewer.cpp                    |  16 ++-
 src/gui/qgsmessagelogviewer.h                      |   8 +-
 src/server/qgsmslayercache.cpp                     |   9 +-
 src/server/qgswcsprojectparser.cpp                 |  26 +++--
 src/server/qgswfsprojectparser.cpp                 |  20 ++--
 tests/src/python/test_qgsserver.py                 |   1 +
 271 files changed, 2535 insertions(+), 53 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50eca7e..0e079ba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
 SET(CPACK_PACKAGE_VERSION_MAJOR "2")
 SET(CPACK_PACKAGE_VERSION_MINOR "14")
-SET(CPACK_PACKAGE_VERSION_PATCH "12")
+SET(CPACK_PACKAGE_VERSION_PATCH "13")
 SET(COMPLETE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
 SET(RELEASE_NAME "Essen")
 IF (POLICY CMP0048) # in CMake 3.0.0+
diff --git a/ChangeLog b/ChangeLog
index b85a7f6..2e35f3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,129 @@
+Merge: 58bd0e14bd b1ae883d08
+rldhont <rldhont at gmail.com>	2017-03-23
+
+    Merge pull request #4297 from rldhont/release-2_14-processing-saga-230
+
+    [Processing] Add SAGA LTR support in 2.14
+
+rldhont <rldhont at gmail.com>	2017-03-22
+
+    [Processing] Add SAGA LTR support in 2.14
+
+rldhont <rldhont at gmail.com>	2017-03-20
+
+    [Server] Enhance WCS mapLayerFromCoverage
+
+rldhont <rldhont at gmail.com>	2017-03-20
+
+    [Server] Enhance WFS mapLayerFromTypeName
+
+rldhont <rldhont at gmail.com>	2017-03-20
+
+    [Server] Layer cache messages
+
+rldhont <rldhont at gmail.com>	2017-03-15
+
+    [BUGFIX][Processing] Vector tools -- add next methods for features iterator
+
+Etienne Trimaille <gustrimaille at yahoo.fr>	2017-03-14
+
+    backport fix vertical alignment in attribute table references #12700 funded by Kartoza
+
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-10
+
+    WMTS parsing bugfix backport
+
+    Backport of fix https://github.com/geopython/OWSLib/commit/d2d7c60e2bf29f08f2b728ed031e596000aa3432 to fix https://github.com/geopython/OWSLib/issues/361
+
+Larry Shaffer <lshaffer at boundlessgeo.com>	2017-03-09
+
+    Skip WMS_GetPrint_SRS test in PyQgsServer
+
+    As per discussion with Alessandro Pasotti
+
+    cherry-picked from 2af1e9f4822a8f272bf7df09bac614067bccfa8d
+
+Larry Shaffer <lshaffer at boundlessgeo.com>	2017-03-08
+
+    Fix low res macOS icon for dock, app switcher, etc., rendering
+
+    Use 1024x1024 size.
+
+    cherry-picked from 35edc182ea20eca6b3ae16defce5557f21b390a2
+
+Merge: 21fb5d5577 3dc5c9a63e
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-05
+
+    Merge branch 'release-2_14' of https://github.com/QGIS/qgis into release-2_14
+
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-05
+
+    [MetaSearch] update release vresion
+
+Merge: ec80d9c0d7 090bf1bf2a
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-04
+
+    Merge pull request #4221 from tomkralidis/issue-16176-2.14
+
+    MetaSearch: fix help URL
+
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-04
+
+    MetaSearch: fix help URL (http://hub.qgis.org/issues/16176)
+
+Merge: 2efb2a38f1 cd0817b4fe
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-04
+
+    Merge pull request #4215 from tomkralidis/issue-16261-2.14
+
+    MetaSearch: clean OWS URL when adding from search
+
+Sandro Mani <manisandro at gmail.com>	2017-03-01
+
+    Fix build against recent sip/PyQt4:
+
+    qgsfiledownloader.sip:33:0:
+    src/gui/qgsfiledownloader.h:94:5: error: overriding non-deleted function 'virtual QgsFileDownloader::~QgsFileDownloader()'
+
+    RuntimeError: qgis._core cannot import type 'QList<QVariant>' from PyQt4.QtCore
+    (cherry picked from commit 85a0db24f32351f6096cd8282f03ad5c2f4e6ef5)
+
+    fixes #16071
+
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-03
+
+    MetaSearch: clean OWS URL when adding from search (http://hub.qgis.org/issues/16261)
+
+Tom Kralidis <tomkralidis at gmail.com>	2017-03-03
+
+    update data.gov CSW endpoint to https
+
+Larry Shaffer <lshaffer at boundlessgeo.com>	2017-03-02
+
+    Followup to dfe268f; update QScintilla new lib name in 2.10 for Qt4
+
+    [ci skip]
+
+Larry Shaffer <lshaffer at boundlessgeo.com>	2017-02-28
+
+    Update QScintilla CMake module; handle 2.10 name; backport 2.18 change
+
+    [ci skip]
+
+    kind of cherry-picked from b1c653b24963eb45f9f5d0471e3ed17c19c5bf54
+    and fb3fcfa3a0448b1bade8bf789ee67bf070b7de73
+
+Juergen E. Fischer <jef at norbit.de>	2017-02-24
+
+    message log viewer: window isn't closeable and last tab has to stay
+    (fixes #16220)
+
+    (cherry picked from commit 2ccdac770bb6be96f2feeeb5827e312d8c432dae)
+
+Juergen E. Fischer <jef at norbit.de>	2017-02-24
+
+    Release of 2.14.12
+
 Juergen E. Fischer <jef at norbit.de>	2017-02-20
 
     release.pl: bypass pre-commit hooks
diff --git a/cmake/FindQScintilla.cmake b/cmake/FindQScintilla.cmake
index 9e76dbc..2f87e4c 100644
--- a/cmake/FindQScintilla.cmake
+++ b/cmake/FindQScintilla.cmake
@@ -34,9 +34,9 @@ ELSE(EXISTS QSCINTILLA_VERSION_STR)
     )
 
   if(ENABLE_QT5)
-    set(QSCINTILLA_LIBRARY_NAMES qscintilla2-qt5 libqscintilla2-qt5 qt5scintilla2 libqscintilla2-qt5.dylib)
+    set(QSCINTILLA_LIBRARY_NAMES qscintilla2-qt5 qscintilla2_qt5 libqt5scintilla2 libqscintilla2-qt5 qt5scintilla2 libqscintilla2-qt5.dylib)
   else(ENABLE_QT5)
-    set(QSCINTILLA_LIBRARY_NAMES qscintilla2 libqscintilla2 libqscintilla2.dylib)
+    set(QSCINTILLA_LIBRARY_NAMES qscintilla2 qscintilla2_qt4 libqscintilla2 libqscintilla2.dylib)
   endif(ENABLE_QT5)
 
   find_library(QSCINTILLA_LIBRARY
diff --git a/debian/changelog b/debian/changelog
index 8c2e073..113a451 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-qgis (2.14.12) UNRELEASED; urgency=medium
+qgis (2.14.13) UNRELEASED; urgency=medium
+
+  * Release of 2.14.13
+
+ -- Jürgen E. Fischer <jef at norbit.de>  Fri, 24 Mar 2017 13:21:50 +0100
+
+qgis (2.14.12) unstable; urgency=medium
 
   * Release of 2.14.12
 
- -- Jürgen E. Fischer <jef at norbit.de>  Fri, 24 Feb 2017 13:00:10 +0100
+ -- Jürgen E. Fischer <jef at norbit.de>  Fri, 24 Mar 2017 13:21:49 +0100
 
 qgis (2.14.11) unstable; urgency=medium
 
diff --git a/images/icons/qgis-icon-macos.png b/images/icons/qgis-icon-macos.png
new file mode 100644
index 0000000..8a779e6
Binary files /dev/null and b/images/icons/qgis-icon-macos.png differ
diff --git a/python/core/core.sip b/python/core/core.sip
index 63d1750..619a529 100644
--- a/python/core/core.sip
+++ b/python/core/core.sip
@@ -3,6 +3,7 @@
 
 %Feature QT5_SUPPORT
 
+%Import QtCore/QtCoremod.sip
 %Import QtXml/QtXmlmod.sip
 %Import QtNetwork/QtNetworkmod.sip
 %Import QtSql/QtSqlmod.sip
diff --git a/python/ext-libs/owslib/wmts.py b/python/ext-libs/owslib/wmts.py
index 2e63c19..b0f4c74 100644
--- a/python/ext-libs/owslib/wmts.py
+++ b/python/ext-libs/owslib/wmts.py
@@ -130,7 +130,8 @@ class WebMapTileService(object):
 
         #serviceProvider metadata
         serviceprov=self._capabilities.find('{http://www.opengis.net/ows/1.1}ServiceProvider')
-        self.provider=ServiceProvider(serviceprov)
+        if serviceprov is not None:
+            self.provider = ServiceProvider(serviceprov)
 
         #serviceOperations metadata
         self.operations=[]
diff --git a/python/plugins/MetaSearch/dialogs/maindialog.py b/python/plugins/MetaSearch/dialogs/maindialog.py
index b61f8ee..4814c8b 100644
--- a/python/plugins/MetaSearch/dialogs/maindialog.py
+++ b/python/plugins/MetaSearch/dialogs/maindialog.py
@@ -50,10 +50,10 @@ from MetaSearch.dialogs.manageconnectionsdialog import ManageConnectionsDialog
 from MetaSearch.dialogs.newconnectiondialog import NewConnectionDialog
 from MetaSearch.dialogs.recorddialog import RecordDialog
 from MetaSearch.dialogs.xmldialog import XMLDialog
-from MetaSearch.util import (get_connections_from_file, get_ui_class,
-                             get_help_url, highlight_xml, normalize_text,
-                             open_url, render_template, serialize_string,
-                             StaticContext)
+from MetaSearch.util import (clean_ows_url, get_connections_from_file,
+                             get_ui_class, get_help_url, highlight_xml,
+                             normalize_text, open_url, render_template,
+                             serialize_string, StaticContext)
 
 BASE_CLASS = get_ui_class('maindialog.ui')
 
@@ -719,7 +719,7 @@ class MetaSearchDialog(QDialog, BASE_CLASS):
 
         # no dups detected or overwrite is allowed
         self.settings.beginGroup('/Qgis/connections-%s' % stype[1])
-        self.settings.setValue('/%s/url' % sname, data_url)
+        self.settings.setValue('/%s/url' % sname, clean_ows_url(data_url))
         self.settings.endGroup()
 
         # open provider window
diff --git a/python/plugins/MetaSearch/metadata.txt b/python/plugins/MetaSearch/metadata.txt
index 509e8dd..d679f8f 100644
--- a/python/plugins/MetaSearch/metadata.txt
+++ b/python/plugins/MetaSearch/metadata.txt
@@ -3,7 +3,7 @@ name=MetaSearch Catalogue Client
 description=MetaSearch is a QGIS plugin to interact with metadata catalogue services (CSW).
 about=MetaSearch is a QGIS plugin to interact with metadata catalogue services, supporting the OGC Catalogue Service for the Web (CSW) standard. MetaSearch provides an easy and intuitive approach and user-friendly interface to searching metadata catalogues within QGIS.
 category=Web
-version=0.3.4
+version=0.3.5
 qgisMinimumVersion=2.0
 icon=images/MetaSearch.png
 author=Tom Kralidis
@@ -14,9 +14,7 @@ tracker=https://hub.qgis.org/projects/quantum-gis/issues?category_id=107&set_fil
 repository=https://github.com/qgis/QGIS/tree/master/python/plugins/MetaSearch
 experimental=False
 deprecated=False
-changelog=Version 0.3.4 (2015-09-28)
-    - fix crash due to CSW error causing crash (#12280)
-    - add error handling for paging workflows
-    - fix loading of custom CSW connections XML files
-    - update OWS connection naming to overwrite or serialize string (#12327)
-    - fix syntax errors in default connections list
+changelog=Version 0.3.5 (2017-03-05)
+    - fix help functionality (#16176)
+    - clean OWS URL when adding from search (#16261)
+    - updates to core CSW list (Greece, Portugal data.gov https)
diff --git a/python/plugins/MetaSearch/resources/connections-default.xml b/python/plugins/MetaSearch/resources/connections-default.xml
index 4681d2a..49a8dbf 100644
--- a/python/plugins/MetaSearch/resources/connections-default.xml
+++ b/python/plugins/MetaSearch/resources/connections-default.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Guidance: https://hub.qgis.org/wiki/quantum-gis/MetaSearch_Default_Connections_List -->
 <qgsCSWConnections version="1.0">
-    <csw name="USA: Data.gov CSW" url="http://catalog.data.gov/csw-all"/>
+    <csw name="USA: Data.gov CSW" url="https://catalog.data.gov/csw-all"/>
     <csw name="Danmark: National CSW" url="http://www.geodata-info.dk/registrant/srv/en/csw"/>
     <csw name="Finland: National CSW (Paikkatietohakemisto)" url="http://www.paikkatietohakemisto.fi/geonetwork/srv/fi/csw"/>
     <csw name="Greece: Geodata.gov.gr CSW" url="http://geodata.gov.gr/csw"/>
diff --git a/python/plugins/MetaSearch/util.py b/python/plugins/MetaSearch/util.py
index 7b291e2..87d3321 100644
--- a/python/plugins/MetaSearch/util.py
+++ b/python/plugins/MetaSearch/util.py
@@ -40,7 +40,7 @@ from jinja2 import Environment, FileSystemLoader
 from pygments import highlight
 from pygments.lexers import XmlLexer
 from pygments.formatters import HtmlFormatter
-from PyQt4.QtCore import QSettings
+from PyQt4.QtCore import QSettings, QUrl
 from PyQt4.QtGui import QMessageBox
 from PyQt4.uic import loadUiType
 
@@ -133,7 +133,12 @@ def get_help_url():
     """return QGIS MetaSearch help documentation link"""
 
     locale_name = QSettings().value('locale/userLocale')[0:2]
-    version = QGis.QGIS_VERSION[:3]
+    major, minor = QGis.QGIS_VERSION.split('.')[:2]
+
+    if minor == '99':  # master
+        version = 'testing'
+    else:
+        version = '.'.join([major, minor])
 
     path = '%s/%s/docs/user_manual/plugins/plugins_metasearch.html' % \
            (version, locale_name)
@@ -167,3 +172,15 @@ def serialize_string(input_string):
         value = '%s 1' % input_string
 
     return value
+
+
+def clean_ows_url(url):
+    """clean an OWS URL of added basic service parameters"""
+
+    url2 = QUrl(url)
+    url2.removeEncodedQueryItem('service')
+    url2.removeEncodedQueryItem('SERVICE')
+    url2.removeEncodedQueryItem('request')
+    url2.removeEncodedQueryItem('REQUEST')
+
+    return url2.toString()
diff --git a/python/plugins/processing/algs/saga/CMakeLists.txt b/python/plugins/processing/algs/saga/CMakeLists.txt
index ff69a4c..47ce2fa 100644
--- a/python/plugins/processing/algs/saga/CMakeLists.txt
+++ b/python/plugins/processing/algs/saga/CMakeLists.txt
@@ -5,6 +5,7 @@ FILE(GLOB DESCR214_FILES description/2.1.4/*.txt)
 FILE(GLOB DESCR220_FILES description/2.2.0/*.txt)
 FILE(GLOB DESCR222_FILES description/2.2.2/*.txt)
 FILE(GLOB DESCR223_FILES description/2.2.3/*.txt)
+FILE(GLOB DESCR230_FILES description/2.3.0/*.txt)
 FILE(GLOB HELP_FILES help/*.rst)
 
 ADD_SUBDIRECTORY(ext)
@@ -16,4 +17,5 @@ PLUGIN_INSTALL(processing algs/saga/description/2.1.4 ${DESCR214_FILES})
 PLUGIN_INSTALL(processing algs/saga/description/2.2.0 ${DESCR220_FILES})
 PLUGIN_INSTALL(processing algs/saga/description/2.2.2 ${DESCR222_FILES})
 PLUGIN_INSTALL(processing algs/saga/description/2.2.3 ${DESCR223_FILES})
+PLUGIN_INSTALL(processing algs/saga/description/2.3.0 ${DESCR230_FILES})
 PLUGIN_INSTALL(processing algs/saga/help ${HELP_FILES})
diff --git a/python/plugins/processing/algs/saga/SagaAlgorithm230.py b/python/plugins/processing/algs/saga/SagaAlgorithm230.py
new file mode 100644
index 0000000..75d9e3e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/SagaAlgorithm230.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    SagaAlgorithm230.py
+    ---------------------
+    Date                 : March 2017
+    Copyright            : (C) 2017 by Victor Olaya
+    Email                : volayaf at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Victor Olaya'
+__date__ = 'March 2017'
+__copyright__ = '(C) 2017, Victor Olaya'
+
+# This will get replaced with a git SHA1 when you do a git archive
+
+__revision__ = '$Format:%H$'
+
+import os
+from SagaAlgorithm214 import SagaAlgorithm214
+from processing.tools import dataobjects
+from processing.tools.system import getTempFilenameInTempFolder
+
+sessionExportedLayers = {}
+
+
+class SagaAlgorithm230(SagaAlgorithm214):
+
+    def getCopy(self):
+        newone = SagaAlgorithm230(self.descriptionFile)
+        newone.provider = self.provider
+        return newone
+
+    def exportRasterLayer(self, source):
+        global sessionExportedLayers
+        if source in sessionExportedLayers:
+            exportedLayer = sessionExportedLayers[source]
+            if os.path.exists(exportedLayer):
+                self.exportedLayers[source] = exportedLayer
+                return None
+            else:
+                del sessionExportedLayers[source]
+        layer = dataobjects.getObjectFromUri(source, False)
+        if layer:
+            filename = layer.name()
+        else:
+            filename = os.path.basename(source)
+        validChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:'
+        filename = ''.join(c for c in filename if c in validChars)
+        if len(filename) == 0:
+            filename = 'layer'
+        destFilename = getTempFilenameInTempFolder(filename + '.sgrd')
+        self.exportedLayers[source] = destFilename
+        sessionExportedLayers[source] = destFilename
+        return 'io_gdal 0 -TRANSFORM 1 -RESAMPLING 0 -GRIDS "' + destFilename + '" -FILES "' + source + '"'
diff --git a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
index 9522906..be49232 100644
--- a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
+++ b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py
@@ -33,6 +33,7 @@ from processing.core.ProcessingLog import ProcessingLog
 from SagaAlgorithm212 import SagaAlgorithm212
 from SagaAlgorithm213 import SagaAlgorithm213
 from SagaAlgorithm214 import SagaAlgorithm214
+from SagaAlgorithm230 import SagaAlgorithm230
 from SplitRGBBands import SplitRGBBands
 import SagaUtils
 from processing.tools.system import isWindows, isMac
@@ -50,7 +51,9 @@ class SagaAlgorithmProvider(AlgorithmProvider):
                          "2.2.0": ("2.2.0", SagaAlgorithm214),
                          "2.2.1": ("2.2.0", SagaAlgorithm214),
                          "2.2.2": ("2.2.2", SagaAlgorithm214),
-                         "2.2.3": ("2.2.3", SagaAlgorithm214)}
+                         "2.2.3": ("2.2.3", SagaAlgorithm214),
+                         "2.3.0": ("2.3.0", SagaAlgorithm230),
+                         "2.3.1": ("2.3.1", SagaAlgorithm230)}
 
     def __init__(self):
         AlgorithmProvider.__init__(self)
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Anisotropic).txt b/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Anisotropic).txt
new file mode 100644
index 0000000..b50c05a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Anisotropic).txt
@@ -0,0 +1,8 @@
+Accumulated Cost (Anisotropic)
+grid_analysis
+ParameterRaster|COST|Cost Grid|False
+ParameterRaster|DIRECTION|Direction of max cost|False
+ParameterRaster|POINTS|Destination Points|False
+ParameterNumber|K|k factor|None|None|1
+ParameterNumber|THRESHOLD|Threshold for different route|None|None|0
+OutputRaster|ACCCOST|Accumulated Cost
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Isotropic).txt b/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Isotropic).txt
new file mode 100644
index 0000000..e4d4a49
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AccumulatedCost(Isotropic).txt
@@ -0,0 +1,7 @@
+Accumulated Cost (Isotropic)
+grid_analysis
+ParameterRaster|COST|Cost Grid|False
+ParameterRaster|POINTS|Destination Points|False
+ParameterNumber|THRESHOLD|Threshold for different route|None|None|0.0
+OutputRaster|ACCCOST|Accumulated Cost
+OutputRaster|CLOSESTPT|Closest Point
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AddCoordinatestopoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/AddCoordinatestopoints.txt
new file mode 100644
index 0000000..d4f6a0e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AddCoordinatestopoints.txt
@@ -0,0 +1,4 @@
+Add Coordinates to points
+shapes_points
+ParameterVector|INPUT|Points|0|False
+OutputVector|OUTPUT|Points with coordinates
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoPoints.txt
new file mode 100644
index 0000000..56164a8
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoPoints.txt
@@ -0,0 +1,7 @@
+Add Grid Values to Points
+shapes_grid
+ParameterVector|SHAPES|Points|0|False
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|INTERPOL|Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+OutputVector|RESULT|Result
+AllowUnmatching
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoShapes.txt b/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoShapes.txt
new file mode 100644
index 0000000..1795975
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AddGridValuestoShapes.txt
@@ -0,0 +1,7 @@
+Add Grid Values to Shapes
+shapes_grid
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|INTERPOL|Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+OutputVector|RESULT|Result
+AllowUnmatching
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AddPointAttributestoPolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/AddPointAttributestoPolygons.txt
new file mode 100644
index 0000000..cbae721
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AddPointAttributestoPolygons.txt
@@ -0,0 +1,7 @@
+Add Point Attributes to Polygons
+shapes_polygons
+ParameterVector|INPUT|Polygons|2|False
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELDS|Attributes|POINTS|-1|False
+ParameterBoolean|ADD_LOCATION_INFO|Add location info|False
+OutputVector|OUTPUT|Result
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AddPolygonAttributestoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/AddPolygonAttributestoPoints.txt
new file mode 100644
index 0000000..1515e6a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AddPolygonAttributestoPoints.txt
@@ -0,0 +1,6 @@
+Add Polygon Attributes to Points
+shapes_points
+ParameterVector|INPUT|Points|0|False
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|FIELDS|Attribute|POLYGONS|-1|False
+OutputVector|OUTPUT|Result
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Aggregate.txt b/python/plugins/processing/algs/saga/description/2.3.0/Aggregate.txt
new file mode 100644
index 0000000..eec522c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Aggregate.txt
@@ -0,0 +1,5 @@
+Aggregate
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|SIZE|Aggregation Size|None|None|3
+ParameterSelection|METHOD|Method|[0] Sum;[1] Min;[2] Max
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AggregatePointObservations.txt b/python/plugins/processing/algs/saga/description/2.3.0/AggregatePointObservations.txt
new file mode 100644
index 0000000..98bb011
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AggregatePointObservations.txt
@@ -0,0 +1,14 @@
+Aggregate Point Observations
+shapes_points
+ParameterVector|REFERENCE|Reference Points|-1|False
+ParameterTableField|REFERENCE_ID|ID|REFERENCE|-1|False
+ParameterTable|OBSERVATIONS|Observations|False
+ParameterTableField|X|X|OBSERVATIONS|-1|False
+ParameterTableField|Y|Y|OBSERVATIONS|-1|False
+ParameterTableField|TRACK|Track|OBSERVATIONS|-1|False
+ParameterTableField|DATE|Date|OBSERVATIONS|-1|False
+ParameterTableField|TIME|Time|OBSERVATIONS|-1|False
+ParameterTableField|PARAMETER|Parameter|OBSERVATIONS|-1|False
+ParameterNumber|EPS_TIME|Maximum Time Span (Seconds)|None|None|60.0
+ParameterNumber|EPS_SPACE|Maximum Distance|None|None|0.002
+OutputTable|AGGREGATED|Aggregated
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AggregationIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/AggregationIndex.txt
new file mode 100644
index 0000000..c533829
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AggregationIndex.txt
@@ -0,0 +1,5 @@
+Aggregation Index
+grid_analysis
+ParameterRaster|INPUT|Input Grid|False
+ParameterNumber|MAXNUMCLASS|Max. Number of Classes|None|None|5
+OutputTable|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHierarchyProcess.txt b/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHierarchyProcess.txt
new file mode 100644
index 0000000..426c781
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHierarchyProcess.txt
@@ -0,0 +1,5 @@
+Analytical Hierarchy Process
+grid_analysis
+ParameterMultipleInput|GRIDS|Input Grids|3|False
+ParameterTable|TABLE|Pairwise Comparisons Table|False
+OutputRaster|OUTPUT|Output Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHillshading.txt b/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHillshading.txt
new file mode 100644
index 0000000..524651c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/AnalyticalHillshading.txt
@@ -0,0 +1,8 @@
+Analytical Hillshading
+ta_lighting
+ParameterRaster|ELEVATION|Elevation|False
+ParameterSelection|METHOD|Shading Method|[0] Standard;[1] Standard (max. 90Degree);[2] Combined Shading;[3] Ray Tracing
+ParameterNumber|AZIMUTH|Azimuth [Degree]|None|None|315.0
+ParameterNumber|DECLINATION|Declination [Degree]|None|None|45.0
+ParameterNumber|EXAGGERATION|Exaggeration|None|None|4.0
+OutputRaster|SHADE|Analytical Hillshading
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/B-SplineApproximation.txt b/python/plugins/processing/algs/saga/description/2.3.0/B-SplineApproximation.txt
new file mode 100644
index 0000000..79a2bf5
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/B-SplineApproximation.txt
@@ -0,0 +1,10 @@
+B-Spline Approximation
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterNumber|LEVEL|Resolution|0.001|None|1.0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/BurnStreamNetworkintoDEM.txt b/python/plugins/processing/algs/saga/description/2.3.0/BurnStreamNetworkintoDEM.txt
new file mode 100644
index 0000000..22f289c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/BurnStreamNetworkintoDEM.txt
@@ -0,0 +1,8 @@
+Burn Stream Network into DEM
+ta_preprocessor
+ParameterRaster|DEM|DEM|False
+ParameterRaster|STREAM|Streams|False
+ParameterRaster|FLOWDIR|Flow direction|False
+ParameterSelection|METHOD|Method|[0] simply decrease cell's value by epsilon;[1] lower cell's value to neighbours minimum value minus epsilon;[2] trace stream network downstream
+ParameterNumber|EPSILON|Epsilon|0.0|None|1.0
+OutputRaster|BURN|Processed DEM
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CellBalance.txt b/python/plugins/processing/algs/saga/description/2.3.0/CellBalance.txt
new file mode 100644
index 0000000..80edebc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CellBalance.txt
@@ -0,0 +1,7 @@
+Cell Balance
+ta_hydrology
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|WEIGHTS|Parameter|True
+ParameterNumber|WEIGHTS_DEFAULT|Default Weight|0.0|None|1.0
+ParameterSelection|METHOD|Method|[0] Deterministic 8;[1] Multiple Flow Direction
+OutputRaster|BALANCE|Cell Balance
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChangeDateFormat.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChangeDateFormat.txt
new file mode 100644
index 0000000..9adfcd0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChangeDateFormat.txt
@@ -0,0 +1,7 @@
+Change Date Format
+table_tools
+ParameterTable|TABLE|Table|False
+ParameterTableField|FIELD|Date Field|TABLE|-1|False
+ParameterSelection|FMT_IN|Input Format|[0] dd.mm.yy;[1] yy.mm.dd;[2] dd:mm:yy;[3] yy:mm:dd;[4] ddmmyyyy, fix size;[5] yyyymmdd, fix size;[6] ddmmyy, fix size;[7] yymmdd, fix size;[8] Julian Day
+ParameterSelection|FMT_OUT|Output Format|[0] dd.mm.yy;[1] yy.mm.dd;[2] dd:mm:yy;[3] yy:mm:dd;[4] ddmmyyyy, fix size;[5] yyyymmdd, fix size;[6] ddmmyy, fix size;[7] yymmdd, fix size;[8] Julian Day
+OutputTable|OUTPUT|Output
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChangeDetection.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChangeDetection.txt
new file mode 100644
index 0000000..f171b9f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChangeDetection.txt
@@ -0,0 +1,16 @@
+Change Detection
+imagery_classification
+ParameterRaster|INITIAL|Initial State|False
+ParameterTable|INI_LUT|Look-up Table|True
+ParameterTableField|INI_LUT_MIN|Value|INI_LUT|-1|False
+ParameterTableField|INI_LUT_MAX|Value (Maximum)|INI_LUT|-1|False
+ParameterTableField|INI_LUT_NAM|Name|INI_LUT|-1|False
+ParameterRaster|FINAL|Final State|False
+ParameterTable|FIN_LUT|Look-up Table|True
+ParameterTableField|FIN_LUT_MIN|Value|FIN_LUT|-1|False
+ParameterTableField|FIN_LUT_MAX|Value (Maximum)|FIN_LUT|-1|False
+ParameterTableField|FIN_LUT_NAM|Name|FIN_LUT|-1|False
+ParameterBoolean|NOCHANGE         |Report Unchanged Classes|True
+ParameterSelection|OUTPUT|Output as...|[0] cells;[1] percent;[2] area
+OutputRaster|CHANGE|Changes
+OutputTable|CHANGES|Changes
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChangeGridValues.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChangeGridValues.txt
new file mode 100644
index 0000000..8d3bd69
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChangeGridValues.txt
@@ -0,0 +1,6 @@
+Change Grid Values
+grid_tools
+ParameterRaster|GRID_IN|Grid|False
+ParameterSelection|METHOD|Replace Condition|[0] Grid value equals low value;[1] Low value < grid value < high value;[2] Low value <= grid value < high value
+ParameterFixedTable|LOOKUP|Lookup Table|3|Low Value;High Value;Replace with|False
+OutputRaster|GRID_OUT|Changed Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChangeTimeFormat.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChangeTimeFormat.txt
new file mode 100644
index 0000000..0a384af
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChangeTimeFormat.txt
@@ -0,0 +1,7 @@
+Change Time Format
+table_tools
+ParameterTable|TABLE|Table|False
+ParameterTableField|FIELD|Time Field|TABLE|-1|False
+ParameterSelection|FMT_IN|Input Format|[0] hh.mm.ss;[1] hh:mm:ss;[2] hhmmss, fix size;[3] hours;[4] minutes;[5] seconds
+ParameterSelection|FMT_OUT|Output Format|[0] hh.mm.ss;[1] hh:mm:ss;[2] hhmmss, fix size;[3] hours;[4] minutes;[5] seconds
+OutputTable|OUTPUT|Output
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetwork.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetwork.txt
new file mode 100644
index 0000000..b7bf16f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetwork.txt
@@ -0,0 +1,14 @@
+Channel Network
+ta_channels
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|SINKROUTE|Flow Direction|True
+ParameterRaster|INIT_GRID|Initiation Grid|False
+ParameterSelection|INIT_METHOD|Initiation Type|[0] Less than;[1] Equals;[2] Greater than
+ParameterNumber|INIT_VALUE|Initiation Threshold|None|None|0.0
+ParameterRaster|DIV_GRID|Divergence|True
+ParameterNumber|DIV_CELLS|Tracing: Max. Divergence|None|None|10
+ParameterRaster|TRACE_WEIGHT|Tracing: Weight|True
+ParameterNumber|MINLEN|Min. Segment Length|0.0|None|10
+OutputRaster|CHNLNTWRK|Channel Network
+OutputRaster|CHNLROUTE|Channel Direction
+OutputVector|SHAPES|Channel Network
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetworkandDrainageBasins.txt b/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetworkandDrainageBasins.txt
new file mode 100644
index 0000000..17e8cca
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ChannelNetworkandDrainageBasins.txt
@@ -0,0 +1,11 @@
+Channel Network and Drainage Basins
+ta_channels
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|THRESHOLD|Threshold|None|None|5.0
+OutputRaster|DIRECTION|Flow Direction
+OutputRaster|CONNECTION|Flow Connectivity
+OutputRaster|ORDER|Strahler Order
+OutputRaster|BASIN|Drainage Basins
+OutputVector|SEGMENTS|Channels
+OutputVector|BASINS|Drainage Basins
+OutputVector|NODES|Junctions
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ClipGridwithPolygon.txt b/python/plugins/processing/algs/saga/description/2.3.0/ClipGridwithPolygon.txt
new file mode 100644
index 0000000..b76d1a2
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ClipGridwithPolygon.txt
@@ -0,0 +1,5 @@
+Clip Grid with Polygon
+shapes_grid
+ParameterRaster|INPUT|Input|False
+ParameterVector|POLYGONS|Polygons|2|False
+OutputRaster|OUTPUT|Clipped
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ClipPointswithPolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/ClipPointswithPolygons.txt
new file mode 100644
index 0000000..90b8f12
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ClipPointswithPolygons.txt
@@ -0,0 +1,7 @@
+Clip Points with Polygons
+shapes_points
+ParameterVector|POINTS|Points|0|False
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|FIELD|Add Attribute to Clipped Points|POLYGONS|-1|False
+ParameterSelection|METHOD|Clipping Options|[0] one layer for all points;[1] separate layer for each polygon
+OutputVector|CLIPS|Clipped Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CloseGaps.txt b/python/plugins/processing/algs/saga/description/2.3.0/CloseGaps.txt
new file mode 100644
index 0000000..ffa217f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CloseGaps.txt
@@ -0,0 +1,6 @@
+Close Gaps
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterRaster|MASK|Mask|True
+ParameterNumber|THRESHOLD|Tension Threshold|None|None|0.1
+OutputRaster|RESULT|Changed Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CloseGapswithSpline.txt b/python/plugins/processing/algs/saga/description/2.3.0/CloseGapswithSpline.txt
new file mode 100644
index 0000000..cd70312
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CloseGapswithSpline.txt
@@ -0,0 +1,12 @@
+Close Gaps with Spline
+grid_tools
+ParameterRaster|GRID|Grid|False
+ParameterRaster|MASK|Mask|True
+ParameterNumber|MAXGAPCELLS|Only Process Gaps with Less Cells|None|None|0
+ParameterNumber|MAXPOINTS|Maximum Points|None|None|1000
+ParameterNumber|LOCALPOINTS|Number of Points for Local Interpolation|None|None|10
+ParameterBoolean|EXTENDED         |Extended Neighourhood|True
+ParameterSelection|NEIGHBOURS|Neighbourhood|[0] Neumann;[1] Moore
+ParameterNumber|RADIUS|Radius (Cells)|None|None|0
+ParameterNumber|RELAXATION|Relaxation|None|None|0.0
+OutputRaster|CLOSED|Closed Gaps Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CloseOneCellGaps.txt b/python/plugins/processing/algs/saga/description/2.3.0/CloseOneCellGaps.txt
new file mode 100644
index 0000000..d3b4aa0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CloseOneCellGaps.txt
@@ -0,0 +1,4 @@
+Close One Cell Gaps
+grid_tools
+ParameterRaster|INPUT|Grid|False
+OutputRaster|RESULT|Changed Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ClusterAnalysisforGrids.txt b/python/plugins/processing/algs/saga/description/2.3.0/ClusterAnalysisforGrids.txt
new file mode 100644
index 0000000..0c477e9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ClusterAnalysisforGrids.txt
@@ -0,0 +1,9 @@
+Cluster Analysis for Grids
+imagery_classification
+ParameterMultipleInput|GRIDS|Grids|3.0|False
+ParameterSelection|METHOD|Method|[0] Iterative Minimum Distance (Forgy 1965);[1] Hill-Climbing (Rubin 1967);[2] Combined Minimum Distance / Hillclimbing
+ParameterNumber|NCLUSTER|Clusters|None|None|5
+ParameterBoolean|NORMALISE       |Normalise|True
+ParameterBoolean|OLDVERSION      |Old Version|True
+OutputRaster|CLUSTER|Clusters
+OutputTable|STATISTICS|Statistics
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConfusionMatrix(GridPolygons).txt b/python/plugins/processing/algs/saga/description/2.3.0/ConfusionMatrix(GridPolygons).txt
new file mode 100644
index 0000000..496cb9b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConfusionMatrix(GridPolygons).txt
@@ -0,0 +1,12 @@
+Confusion Matrix (Polygons / Grid)
+imagery_classification
+ParameterRaster|GRID|Classification|False
+ParameterTable|GRID_LUT|Look-up Table|True
+ParameterTableField|GRID_LUT_MIN|Value|GRID_LUT|-1|True
+ParameterTableField|GRID_LUT_MAX|Value (Maximum)|GRID_LUT|-1|True
+ParameterTableField|GRID_LUT_NAM|Name|GRID_LUT|-1|True
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|FIELD|Classes|POLYGONS|-1|False
+OutputTable|CONFUSION|Confusion Matrix
+OutputTable|CLASSES|Class Values
+OutputTable|SUMMARY|Summary
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ContourLinesfromGrid.txt b/python/plugins/processing/algs/saga/description/2.3.0/ContourLinesfromGrid.txt
new file mode 100644
index 0000000..d0924e0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ContourLinesfromGrid.txt
@@ -0,0 +1,8 @@
+Contour Lines from Grid
+shapes_grid
+ParameterRaster|GRID|Grid|False
+ParameterSelection|VERTEX|Vertex type|[0] x,y;[1] x,y,z
+ParameterNumber|ZMIN|Minimum Contour Value|None|None|0.0
+ParameterNumber|ZMAX|Maximum Contour Value|None|None|10000.0
+ParameterNumber|ZSTEP|Equidistance|None|None|100.0
+OutputVector|CONTOUR|Contour Lines
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex(SearchRadius).txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex(SearchRadius).txt
new file mode 100644
index 0000000..11730fa
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex(SearchRadius).txt
@@ -0,0 +1,11 @@
+Convergence Index (Search Radius)
+ta_morphometry
+ParameterRaster|ELEVATION|Elevation|False
+ParameterNumber|RADIUS|Radius [Cells]|1.0|None|10.0
+ParameterSelection|DISTANCE_WEIGHTING_DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DISTANCE_WEIGHTING_DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1.0
+ParameterBoolean|DISTANCE_WEIGHTING_DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|0.0|None|1.0
+ParameterBoolean|SLOPE|Gradient|True
+ParameterSelection|DIFFERENCE|Weighting Function|[0] direction to the center cell;[1] center cell's aspect direction
+OutputRaster|CONVERGENCE|Convergence Index
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex.txt
new file mode 100644
index 0000000..7d1649a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvergenceIndex.txt
@@ -0,0 +1,6 @@
+Convergence Index
+ta_morphometry
+ParameterRaster|ELEVATION|Elevation|False
+ParameterSelection|METHOD|Method|[0] Aspect;[1] Gradient
+ParameterSelection|NEIGHBOURS|Gradient Calculation|[0] 2 x 2;[1] 3 x 3
+OutputRaster|RESULT|Convergence Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertDataStorageType.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertDataStorageType.txt
new file mode 100644
index 0000000..51de5d9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertDataStorageType.txt
@@ -0,0 +1,5 @@
+Convert Data Storage Type
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|TYPE|Data storage type|[0] bit;[1] unsigned 1 byte integer;[2] signed 1 byte integer;[3] unsigned 2 byte integer;[4] signed 2 byte integer;[5] unsigned 4 byte integer;[6] signed 4 byte integer;[7] 4 byte floating point number;[8] 8 byte floating point number
+OutputRaster|OUTPUT|Converted Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPoints.txt
new file mode 100644
index 0000000..7a44353
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPoints.txt
@@ -0,0 +1,6 @@
+Convert Lines to Points
+shapes_points
+ParameterVector|LINES|Lines|1|False
+ParameterBoolean|ADD         |Insert Additional Points|True
+ParameterNumber|DIST|Insert Distance|0.0|None|1.0
+OutputVector|POINTS|Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPolygons.txt
new file mode 100644
index 0000000..0053420
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertLinestoPolygons.txt
@@ -0,0 +1,4 @@
+Convert Lines to Polygons
+shapes_polygons
+ParameterVector|LINES|Lines|1|False
+OutputVector|POLYGONS|Polygons
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertMultipointstoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertMultipointstoPoints.txt
new file mode 100644
index 0000000..6a0fc97
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertMultipointstoPoints.txt
@@ -0,0 +1,4 @@
+Convert Multipoints to Points
+shapes_points
+ParameterVector|MULTIPOINTS|Multipoints|0|False
+OutputVector|POINTS|Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertPointstoLine(s).txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPointstoLine(s).txt
new file mode 100644
index 0000000..f7e8b6b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPointstoLine(s).txt
@@ -0,0 +1,6 @@
+Convert Points to Line(s)
+shapes_lines
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|ORDER|Order by...|POINTS|-1|False
+ParameterTableField|SEPARATE|Separate by...|POINTS|-1|False
+OutputVector|LINES|Lines
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonLineVerticestoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonLineVerticestoPoints.txt
new file mode 100644
index 0000000..e8e9a68
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonLineVerticestoPoints.txt
@@ -0,0 +1,4 @@
+Convert Polygon/Line Vertices to Points
+shapes_polygons
+ParameterVector|SHAPES|Shapes|-1|False
+OutputVector|POINTS|Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonstoLines.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonstoLines.txt
new file mode 100644
index 0000000..def3f04
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvertPolygonstoLines.txt
@@ -0,0 +1,4 @@
+Convert Polygons to Lines
+shapes_lines
+ParameterVector|POLYGONS|Polygons|2|False
+OutputVector|LINES|Lines
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ConvexHull.txt b/python/plugins/processing/algs/saga/description/2.3.0/ConvexHull.txt
new file mode 100644
index 0000000..81084ab
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ConvexHull.txt
@@ -0,0 +1,6 @@
+Convex Hull
+shapes_points
+ParameterVector|SHAPES|Points|0|False
+ParameterSelection|POLYPOINTS|Hull Construction|[0] one hull for all shapes;[1] one hull per shape;[2] one hull per shape part
+OutputVector|HULLS|Convex Hull
+OutputVector|BOXES|Minimum Bounding Box
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CreateLinesGraticule.txt b/python/plugins/processing/algs/saga/description/2.3.0/CreateLinesGraticule.txt
new file mode 100644
index 0000000..5935272
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CreateLinesGraticule.txt
@@ -0,0 +1,9 @@
+Create Lines Graticule|Create Graticule
+shapes_tools
+Hardcoded|-TYPE 0
+ParameterVector|EXTENT|Extent|-1|True
+Extent EXTENT_X_MIN EXTENT_X_MAX EXTENT_Y_MIN EXTENT_Y_MAX
+ParameterNumber|DIVISION_X|Division Width|None|None|1.0
+ParameterNumber|DIVISION_Y|Division Height|None|None|1.0
+ParameterSelection|ALIGNMENT|Alignment|[0] Bottom left;[1] Top left;[2] Bottom right;[3] Top right;[4] Centered|0
+OutputVector|GRATICULE_LINE|Lines Graticule
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CreatePolygonsGraticule.txt b/python/plugins/processing/algs/saga/description/2.3.0/CreatePolygonsGraticule.txt
new file mode 100644
index 0000000..45418f8
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CreatePolygonsGraticule.txt
@@ -0,0 +1,9 @@
+Create Polygons Graticule|Create Graticule
+shapes_tools
+Hardcoded|-TYPE 1
+ParameterVector|EXTENT|Extent|-1|True
+Extent EXTENT_X_MIN EXTENT_X_MAX EXTENT_Y_MIN EXTENT_Y_MAX
+ParameterNumber|DIVISION_X|Division Width|None|None|1.0
+ParameterNumber|DIVISION_Y|Division Height|None|None|1.0
+ParameterSelection|ALIGNMENT|Alignment|[0] Bottom left;[1] Top left;[2] Bottom right;[3] Top right;[4] Centered|0
+OutputVector|GRATICULE_RECT|Rectangle Graticule
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CropToData.txt b/python/plugins/processing/algs/saga/description/2.3.0/CropToData.txt
new file mode 100644
index 0000000..e87ea99
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CropToData.txt
@@ -0,0 +1,4 @@
+Crop to Data
+grid_tools
+ParameterRaster|INPUT|Input layer|False
+OutputRaster|OUTPUT|Cropped
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Cross-ClassificationandTabulation.txt b/python/plugins/processing/algs/saga/description/2.3.0/Cross-ClassificationandTabulation.txt
new file mode 100644
index 0000000..19bb607
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Cross-ClassificationandTabulation.txt
@@ -0,0 +1,7 @@
+Cross-Classification and Tabulation
+grid_analysis
+ParameterRaster|INPUT|Input Grid 1|False
+ParameterRaster|INPUT2|Input Grid 2|False
+ParameterNumber|MAXNUMCLASS|Max. Number of Classes|None|None|5
+OutputRaster|RESULTGRID|Cross-Classification Grid
+OutputTable|RESULTTABLE|Cross-Tabulation Table
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CrossProfiles.txt b/python/plugins/processing/algs/saga/description/2.3.0/CrossProfiles.txt
new file mode 100644
index 0000000..149b892
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CrossProfiles.txt
@@ -0,0 +1,8 @@
+Cross Profiles
+ta_profiles
+ParameterRaster|DEM|DEM|False
+ParameterVector|LINES|Lines|1|False
+ParameterNumber|DIST_LINE|Profile Distance|0.0|None|10.0
+ParameterNumber|DIST_PROFILE|Profile Length|0.0|None|10.0
+ParameterNumber|NUM_PROFILE|Profile Samples|1.0|None|10.0
+OutputVector|PROFILES|Cross Profiles
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CubicSplineApproximation.txt b/python/plugins/processing/algs/saga/description/2.3.0/CubicSplineApproximation.txt
new file mode 100644
index 0000000..c60b700
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CubicSplineApproximation.txt
@@ -0,0 +1,13 @@
+Cubic Spline Approximation
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterNumber|NPMIN|Minimal Number of Points|0|None|3
+ParameterNumber|NPMAX|Maximal Number of Points|11|59|20
+ParameterNumber|NPPC|Points per Square|1|None|5
+ParameterNumber|K|Tolerance|0|None|140.0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CurvatureClassification.txt b/python/plugins/processing/algs/saga/description/2.3.0/CurvatureClassification.txt
new file mode 100644
index 0000000..aff4b66
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CurvatureClassification.txt
@@ -0,0 +1,5 @@
+Curvature Classification
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|THRESHOLD|Threshold for plane|0.0000|None|0.0005
+OutputRaster|CLASS|Curvature Classification
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/CutShapesLayer.txt b/python/plugins/processing/algs/saga/description/2.3.0/CutShapesLayer.txt
new file mode 100644
index 0000000..f60347a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/CutShapesLayer.txt
@@ -0,0 +1,7 @@
+Cut Shapes Layer
+shapes_tools
+ParameterVector|SHAPES|Vector layer to cut|-1|False
+ParameterSelection|METHOD|Method|[0] completely contained;[1] intersects;[2] center
+Hardcoded|-TARGET 3
+ParameterVector|POLYGONS_POLYGONS|Cutting polygons|2|False
+OutputVector|CUT|Result
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DTMFilter(slope-based).txt b/python/plugins/processing/algs/saga/description/2.3.0/DTMFilter(slope-based).txt
new file mode 100644
index 0000000..7390212
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DTMFilter(slope-based).txt
@@ -0,0 +1,8 @@
+DTM Filter (slope-based)
+grid_filter
+ParameterRaster|INPUT|Grid to filter|False
+ParameterNumber|RADIUS|Search Radius|1.0|None|2
+ParameterNumber|TERRAINSLOPE|Approx. Terrain Slope|None|None|30.0
+ParameterBoolean|STDDEV            |Use Confidence Interval|True
+OutputRaster|GROUND|Bare Earth
+OutputRaster|NONGROUND|Removed Objects
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(ADI).txt b/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(ADI).txt
new file mode 100644
index 0000000..ffcb58f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(ADI).txt
@@ -0,0 +1,11 @@
+Diffusive Hillslope Evolution (ADI)
+sim_qm_of_esp
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|CHANNELS|Channel Mask|True
+ParameterBoolean|UPDATE|Update|True
+ParameterNumber|KAPPA|Diffusivity [m2/kyr]|0.0|None|10.0
+ParameterNumber|DURATION|Simulation Time [kyr]|0.0|None|10000.0
+ParameterSelection|TIMESTEP|Time Step|[0] user defined;[1] automatically|1
+ParameterNumber|DTIME|Time Step [kyr]|0.0|None|1000.0
+OutputRaster|MODEL|Modelled Elevation
+OutputRaster|DIFF|Elevation Difference
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(FTCS).txt b/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(FTCS).txt
new file mode 100644
index 0000000..9338a83
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DiffusiveHillslopeEvolution(FTCS).txt
@@ -0,0 +1,11 @@
+Diffusive Hillslope Evolution (FTCS)
+sim_qm_of_esp
+ParameterRaster|DEM|Elevation|False
+ParameterBoolean|UPDATE|Update|True
+ParameterNumber|KAPPA|Diffusivity [m2/kyr]|0.0|None|1.0
+ParameterNumber|DURATION|Simulation Time [kyr]|0.0|None|100.0
+ParameterSelection|TIMESTEP|Time Step|[0] user defined;[1] automatically|1
+ParameterNumber|DTIME|Time Step [kyr]|0.0|None|10.0
+ParameterSelection|NEIGHBOURS|Neighbourhood|[0] Neumann;[1] Moore|1
+OutputRaster|MODEL|Modelled Elevation
+OutputRaster|DIFF|Elevation Difference
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DirectionalStatisticsforSingleGrid.txt b/python/plugins/processing/algs/saga/description/2.3.0/DirectionalStatisticsforSingleGrid.txt
new file mode 100644
index 0000000..5ed456d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DirectionalStatisticsforSingleGrid.txt
@@ -0,0 +1,23 @@
+Directional Statistics for Single Grid
+statistics_grid
+ParameterRaster|GRID|Grid|False
+ParameterVector|POINTS|Points|-1|True
+ParameterNumber|DIRECTION|Direction [Degree]|None|None|0.0
+ParameterNumber|TOLERANCE|Tolerance [Degree]|None|None|0.0
+ParameterNumber|MAXDISTANCE|Maximum Distance [Cells]|None|None|0
+ParameterSelection|DISTANCE_WEIGHTING_DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DISTANCE_WEIGHTING_DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DISTANCE_WEIGHTING_DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1.0
+OutputRaster|MEAN|Arithmetic Mean
+OutputRaster|DIFMEAN|Difference from Arithmetic Mean
+OutputRaster|MIN|Minimum
+OutputRaster|MAX|Maximum
+OutputRaster|RANGE|Range
+OutputRaster|VAR|Variance
+OutputRaster|STDDEV|Standard Deviation
+OutputRaster|STDDEVLO|Mean less Standard Deviation
+OutputRaster|STDDEVHI|Mean plus Standard Deviation
+OutputRaster|DEVMEAN|Deviation from Arithmetic Mean
+OutputRaster|PERCENT|Percentile
+OutputVector|POINTS_OUT|Directional Statistics for Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DistanceMatrix.txt b/python/plugins/processing/algs/saga/description/2.3.0/DistanceMatrix.txt
new file mode 100644
index 0000000..059d3c2
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DistanceMatrix.txt
@@ -0,0 +1,4 @@
+Distance Matrix
+shapes_points
+ParameterVector|POINTS|Points|0|False
+OutputTable|TABLE|Distance Matrix Table
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DiurnalAnisotropicHeating.txt b/python/plugins/processing/algs/saga/description/2.3.0/DiurnalAnisotropicHeating.txt
new file mode 100644
index 0000000..5420da9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DiurnalAnisotropicHeating.txt
@@ -0,0 +1,5 @@
+Diurnal Anisotropic Heating
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|ALPHA_MAX|Alpha Max (Degree)|None|None|202.5
+OutputRaster|DAH|Diurnal Anisotropic Heating
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DiversityOfCategories.txt b/python/plugins/processing/algs/saga/description/2.3.0/DiversityOfCategories.txt
new file mode 100644
index 0000000..c75c9da
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DiversityOfCategories.txt
@@ -0,0 +1,15 @@
+Diversity of Categories
+grid_analysis
+ParameterRaster|CATEGORIES|Categories|False
+ParameterSelection|SEARCH_MODE|Search Mode|[0] square;[1] circle|1
+ParameterNumber|SEARCH_RADIUS|Search Radius Distance|1.0|3|3
+ParameterSelection|NB_CASE|Connectivity Neighbourhood|[0] Rook's case;[1] Queen's case|1
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|0.0|None|0.7
+OutputRaster|COUNT|Number of Categories
+OutputRaster|DIVERSITY|Diversity
+OutputRaster|SIZE_MEAN|Average Size
+OutputRaster|SIZE_SKEW|Skewness
+OutputRaster|CONNECTIVITY|Connectivity
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/DownslopeDistanceGradient.txt b/python/plugins/processing/algs/saga/description/2.3.0/DownslopeDistanceGradient.txt
new file mode 100644
index 0000000..250e199
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/DownslopeDistanceGradient.txt
@@ -0,0 +1,7 @@
+Downslope Distance Gradient
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|DISTANCE|Vertical Distance|None|None|10
+ParameterSelection|OUTPUT|Output|[0] distance;[1] gradient (tangens);[2] gradient (degree)
+OutputRaster|GRADIENT|Gradient
+OutputRaster|DIFFERENCE|Gradient Difference
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/EdgeContamination.txt b/python/plugins/processing/algs/saga/description/2.3.0/EdgeContamination.txt
new file mode 100644
index 0000000..004ca57
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/EdgeContamination.txt
@@ -0,0 +1,4 @@
+Edge Contamination
+ta_hydrology
+ParameterRaster|DEM|Elevation|False
+OutputRaster|CONTAMINATION|Edge Contamination
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/EffectiveAirFlowHeights.txt b/python/plugins/processing/algs/saga/description/2.3.0/EffectiveAirFlowHeights.txt
new file mode 100644
index 0000000..70e0479
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/EffectiveAirFlowHeights.txt
@@ -0,0 +1,15 @@
+Effective Air Flow Heights
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|DIR|Wind Direction|True
+ParameterRaster|LEN|Wind Speed|True
+ParameterNumber|DIR_CONST|Constant Wind Direction [Degree]|None|None|135
+ParameterBoolean|OLDVER         |Old Version|True
+ParameterNumber|MAXDIST|Search Distance [km]|0.0|None|300
+ParameterNumber|ACCEL|Acceleration|None|None|1.5
+ParameterBoolean|PYRAMIDS       |Use Pyramids with New Version|True
+ParameterNumber|LEEFACT|Lee Factor|None|None|0.5
+ParameterNumber|LUVFACT|Luv Factor|None|None|1.0
+ParameterSelection|DIR_UNITS|Wind Direction Units|[0] radians;[1] degree
+ParameterNumber|LEN_SCALE|Wind Speed Scale Factor|None|None|1.0
+OutputRaster|AFH|Effective Air Flow Heights
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FastRegionGrowingAlgorithm.txt b/python/plugins/processing/algs/saga/description/2.3.0/FastRegionGrowingAlgorithm.txt
new file mode 100644
index 0000000..c7922ee
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FastRegionGrowingAlgorithm.txt
@@ -0,0 +1,7 @@
+Fast Region Growing Algorithm
+imagery_rga
+ParameterMultipleInput|INPUT|Input Grids|3|False
+ParameterRaster|START|Seeds Grid|False
+ParameterRaster|REP|Smooth Rep|True
+OutputRaster|RESULT|Segmente
+OutputRaster|MEAN|Mean
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FastRepresentativeness.txt b/python/plugins/processing/algs/saga/description/2.3.0/FastRepresentativeness.txt
new file mode 100644
index 0000000..b65953b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FastRepresentativeness.txt
@@ -0,0 +1,7 @@
+Fast Representativeness
+statistics_grid
+ParameterRaster|INPUT|Input|False
+ParameterNumber|LOD|Level of Generalisation|None|None|16
+OutputRaster|RESULT|Output
+OutputRaster|RESULT_LOD|Output Lod
+OutputRaster|SEEDS|Output Seeds
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FillGapsinRecords.txt b/python/plugins/processing/algs/saga/description/2.3.0/FillGapsinRecords.txt
new file mode 100644
index 0000000..31974dc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FillGapsinRecords.txt
@@ -0,0 +1,6 @@
+Fill Gaps in Records
+table_calculus
+ParameterTable|TABLE|Table|False
+ParameterTableField|ORDER|Order|TABLE|-1|False
+ParameterSelection|METHOD|Interpolation|[0] Nearest Neighbour;[1] Linear;[2] Spline
+OutputTable|NOGAPS|Table without Gaps
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(PlanchonDarboux,2001).txt b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(PlanchonDarboux,2001).txt
new file mode 100644
index 0000000..f1a496d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(PlanchonDarboux,2001).txt
@@ -0,0 +1,5 @@
+Fill Sinks|Fill Sinks (Planchon/Darboux, 2001)
+ta_preprocessor
+ParameterRaster|DEM|DEM|False
+ParameterNumber|MINSLOPE|Minimum Slope [Degree]|0.0|None|0.01
+OutputRaster|RESULT|Filled DEM
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(QMofESP).txt b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(QMofESP).txt
new file mode 100644
index 0000000..5ba95ca
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(QMofESP).txt
@@ -0,0 +1,6 @@
+Fill Sinks (QM of ESP)
+sim_qm_of_esp
+ParameterRaster|DEM|DEM|False
+ParameterNumber|DZFILL|Fill Increment|0.0|None|0.01
+OutputRaster|FILLED|DEM Without Sinks
+OutputRaster|SINKS|Sinks
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(WangLiu).txt b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(WangLiu).txt
new file mode 100644
index 0000000..2a36e99
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FillSinks(WangLiu).txt
@@ -0,0 +1,7 @@
+Fill Sinks (Wang & Liu)
+ta_preprocessor
+ParameterRaster|ELEV|DEM|False
+ParameterNumber|MINSLOPE|Minimum Slope [Degree]|0.0|None|0.01
+OutputRaster|FILLED|Filled DEM
+OutputRaster|FDIR|Flow Directions
+OutputRaster|WSHED|Watershed Basins
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FillSinksXXL(WangLiu).txt b/python/plugins/processing/algs/saga/description/2.3.0/FillSinksXXL(WangLiu).txt
new file mode 100644
index 0000000..bd3bd21
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FillSinksXXL(WangLiu).txt
@@ -0,0 +1,5 @@
+Fill Sinks XXL (Wang & Liu)
+ta_preprocessor
+ParameterRaster|ELEV|DEM|False
+ParameterNumber|MINSLOPE|Minimum Slope [Degree]|0.0|None|0.01
+OutputRaster|FILLED|Filled DEM
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FilterClumps.txt b/python/plugins/processing/algs/saga/description/2.3.0/FilterClumps.txt
new file mode 100644
index 0000000..3ac291f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FilterClumps.txt
@@ -0,0 +1,5 @@
+Filter Clumps
+grid_filter
+ParameterRaster|GRID|Input Grid|False
+ParameterNumber|THRESHOLD|Min. Size|1.0|None|10
+OutputRaster|OUTPUT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FireRiskAnalysis.txt b/python/plugins/processing/algs/saga/description/2.3.0/FireRiskAnalysis.txt
new file mode 100644
index 0000000..7f9788d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FireRiskAnalysis.txt
@@ -0,0 +1,18 @@
+Fire Risk Analysis
+sim_fire_spreading
+ParameterRaster|DEM|DEM|False
+ParameterRaster|FUEL|Fuel Model|False
+ParameterRaster|WINDSPD|Wind Speed|False
+ParameterRaster|WINDDIR|Wind Direction|False
+ParameterRaster|M1H|Dead Fuel Moisture 1H|False
+ParameterRaster|M10H|Dead Fuel Moisture 10H|False
+ParameterRaster|M100H|Dead Fuel Moisture 100H|False
+ParameterRaster|MHERB|Herbaceous Fuel Moisture|False
+ParameterRaster|MWOOD|Wood Fuel Moisture|False
+ParameterRaster|VALUE|Value|True
+ParameterRaster|BASEPROB|Base Probability|True
+ParameterNumber|MONTECARLO|Number of Events|None|None|1000
+ParameterNumber|INTERVAL|Fire Length|None|None|100
+OutputRaster|DANGER|Danger
+OutputRaster|COMPPROB|Compound Probability
+OutputRaster|PRIORITY|Priority Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FitNPointstoshape.txt b/python/plugins/processing/algs/saga/description/2.3.0/FitNPointstoshape.txt
new file mode 100644
index 0000000..727ebdb
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FitNPointstoshape.txt
@@ -0,0 +1,5 @@
+Fit N Points to shape
+shapes_points
+ParameterVector|SHAPES|Shapes|2|False
+ParameterNumber|NUMPOINTS|Number of points|1.0|None|10
+OutputVector|POINTS|Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlatDetection.txt b/python/plugins/processing/algs/saga/description/2.3.0/FlatDetection.txt
new file mode 100644
index 0000000..e106c6e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlatDetection.txt
@@ -0,0 +1,6 @@
+Flat Detection
+ta_preprocessor
+ParameterRaster|DEM|DEM|False
+ParameterSelection|FLAT_OUTPUT|Flat Area Values|[0] elevation;[1] enumeration
+OutputRaster|NOFLATS|No Flats
+OutputRaster|FLATS|Flat Areas
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlattenPolygonLayer.txt b/python/plugins/processing/algs/saga/description/2.3.0/FlattenPolygonLayer.txt
new file mode 100644
index 0000000..0657662
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlattenPolygonLayer.txt
@@ -0,0 +1,4 @@
+Flatten Polygon Layer
+shapes_polygons
+ParameterVector|INPUT|Input|2|False
+OutputVector|OUTPUT|Output
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(FlowTracing).txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(FlowTracing).txt
new file mode 100644
index 0000000..ac9e521
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(FlowTracing).txt
@@ -0,0 +1,17 @@
+Flow Accumulation (Flow Tracing)
+ta_hydrology
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|SINKROUTE|Sink Routes|True
+ParameterRaster|WEIGHT|Weight|True
+ParameterRaster|MATERIAL|Material|True
+ParameterRaster|VAL_INPUT|Input for Mean over Catchment Calculation|True
+ParameterRaster|TARGET|Target|True
+ParameterNumber|STEP|Step|None|None|1
+ParameterSelection|METHOD|Method|[0] Rho 8;[1] Kinematic Routing Algorithm;[2] DEMON
+ParameterNumber|MINDQV|DEMON - Min. DQV|None|None|0.0
+ParameterBoolean|CORRECT|Flow Correction|True
+OutputRaster|FLOW|Flow Accumulation
+OutputRaster|VAL_MEAN|Mean over Catchment
+OutputRaster|ACCU_TOTAL|Total accumulated Material
+OutputRaster|ACCU_LEFT|Accumulated Material from left side
+OutputRaster|ACCU_RIGHT|Accumulated Material from right side
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(QMofESP).txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(QMofESP).txt
new file mode 100644
index 0000000..a835e2f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(QMofESP).txt
@@ -0,0 +1,6 @@
+Flow Accumulation (QM of ESP)
+sim_qm_of_esp
+ParameterRaster|DEM|DEM|False
+ParameterSelection|PREPROC|Preprocessing|[0] none;[1] fill sinks temporarily;[2] fill sinks permanently|1
+ParameterNumber|DZFILL|Fill Increment|0.00|None|0.01
+OutputRaster|FLOW|Contributing Area
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Recursive).txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Recursive).txt
new file mode 100644
index 0000000..9bdab3e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Recursive).txt
@@ -0,0 +1,18 @@
+Flow Accumulation (Recursive)
+ta_hydrology
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|SINKROUTE|Sink Routes|True
+ParameterRaster|WEIGHT|Weight|True
+ParameterRaster|MATERIAL|Material|True
+ParameterRaster|VAL_INPUT|Input for Mean over Catchment Calculation|True
+ParameterRaster|TARGET|Target|True
+ParameterNumber|STEP|Step|None|None|1
+ParameterRaster|TARGETS|Target Areas|True
+ParameterSelection|METHOD|Method|[0] Deterministic 8;[1] Rho 8;[2] Deterministic Infinity;[3] Multiple Flow Direction
+ParameterNumber|CONVERGENCE|Convergence|None|None|1.1
+OutputRaster|CAREA|Catchment Area
+OutputRaster|VAL_MEAN|Mean over Catchment
+OutputRaster|ACCU_TOT|Total accumulated Material
+OutputRaster|ACCU_LEFT|Accumulated Material from left side
+OutputRaster|ACCU_RIGHT|Accumulated Material from right side
+OutputRaster|FLOWLEN|Flow Path Length
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Top-Down).txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Top-Down).txt
new file mode 100644
index 0000000..f575a7f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowAccumulation(Top-Down).txt
@@ -0,0 +1,5 @@
+Flow Accumulation (Top-Down)
+ta_hydrology
+ParameterRaster|ELEVATION|Elevation|False
+ParameterSelection|METHOD|Method|[0] Deterministic 8;[1] Rho 8;[2] Braunschweiger Reliefmodell;[3] Deterministic Infinity;[4] Multiple Flow Direction;[5] Multiple Triangular Flow Directon
+OutputRaster|CAREA|Catchment Area
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowPathLength.txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowPathLength.txt
new file mode 100644
index 0000000..da16699
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowPathLength.txt
@@ -0,0 +1,8 @@
+Flow Path Length
+ta_hydrology
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|SEED|Seeds|True
+ParameterBoolean|SEEDS_ONLY       |Seeds Only|True
+ParameterSelection|METHOD|Flow Routing Algorithm|[0] Deterministic 8 (D8);[1] Multiple Flow Direction (FD8)
+ParameterNumber|CONVERGENCE|Convergence (FD8)|None|None|1.1
+OutputRaster|LENGTH|Flow Path Length
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FlowWidthandSpecificCatchmentArea.txt b/python/plugins/processing/algs/saga/description/2.3.0/FlowWidthandSpecificCatchmentArea.txt
new file mode 100644
index 0000000..a8d32a8
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FlowWidthandSpecificCatchmentArea.txt
@@ -0,0 +1,7 @@
+Flow Width and Specific Catchment Area
+ta_hydrology
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|TCA|Total Catchment Area (TCA)|True
+ParameterSelection|METHOD|Method|[0] Deterministic 8;[1] Multiple Flow Direction (Quinn et al. 1991);[2] Aspect
+OutputRaster|WIDTH|Flow Width
+OutputRaster|SCA|Specific Catchment Area (SCA)
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Alternative).txt b/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Alternative).txt
new file mode 100644
index 0000000..162d7ae
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Alternative).txt
@@ -0,0 +1,17 @@
+Fragmentation (Alternative)
+grid_analysis
+ParameterRaster|CLASSES|Classification|False
+ParameterNumber|CLASS|Class Identifier|None|None|1
+ParameterNumber|NEIGHBORHOOD_MIN|Neighborhood Min|1.0|None|1
+ParameterNumber|NEIGHBORHOOD_MAX|Neighborhood Max|1.0|None|1
+ParameterSelection|AGGREGATION|Level Aggregation|[0] average;[1] multiplicative
+ParameterBoolean|BORDER                |Add Border|True
+ParameterNumber|WEIGHT|Connectivity Weighting|None|None|1.1
+ParameterNumber|DENSITY_MIN|Minimum Density [Percent]|None|None|10
+ParameterNumber|DENSITY_INT|Minimum Density for Interior Forest [Percent]|None|None|99
+ParameterNumber|LEVEL_GROW|Search Distance Increment|None|None|0.0
+ParameterBoolean|DENSITY_MEAN          |Density from Neighbourhood|True
+OutputRaster|DENSITY|Density [Percent]
+OutputRaster|CONNECTIVITY|Connectivity [Percent]
+OutputRaster|FRAGMENTATION|Fragmentation
+OutputTable|FRAGSTATS|Summary
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Standard).txt b/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Standard).txt
new file mode 100644
index 0000000..0dc554a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Fragmentation(Standard).txt
@@ -0,0 +1,17 @@
+Fragmentation (Standard)
+grid_analysis
+ParameterRaster|CLASSES|Classification|False
+ParameterNumber|CLASS|Class Identifier|None|None|1
+ParameterNumber|NEIGHBORHOOD_MIN|Neighborhood Min|1.0|None|1
+ParameterNumber|NEIGHBORHOOD_MAX|Neighborhood Max|1.0|None|3
+ParameterSelection|AGGREGATION|Level Aggregation|[0] average;[1] multiplicative
+ParameterBoolean|BORDER|Add Border|True
+ParameterNumber|WEIGHT|Connectivity Weighting|None|None|1.1
+ParameterNumber|DENSITY_MIN|Minimum Density [Percent]|None|None|10
+ParameterNumber|DENSITY_INT|Minimum Density for Interior Forest [Percent]|None|None|99
+ParameterSelection|CIRCULAR|Neighborhood Type|[0] square;[1] circle
+ParameterBoolean|DIAGONAL|Include diagonal neighbour relations|True
+OutputRaster|DENSITY|Density [Percent]
+OutputRaster|CONNECTIVITY|Connectivity [Percent]
+OutputRaster|FRAGMENTATION|Fragmentation
+OutputTable|FRAGSTATS|Summary
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FragmentationClassesfromDensityandConnectivity.txt b/python/plugins/processing/algs/saga/description/2.3.0/FragmentationClassesfromDensityandConnectivity.txt
new file mode 100644
index 0000000..99e30c4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FragmentationClassesfromDensityandConnectivity.txt
@@ -0,0 +1,9 @@
+Fragmentation Classes from Density and Connectivity
+grid_analysis
+ParameterRaster|DENSITY|Density [Percent]|False
+ParameterRaster|CONNECTIVITY|Connectivity [Percent]|False
+ParameterBoolean|BORDER|Add Border|True
+ParameterNumber|WEIGHT|Connectivity Weighting|None|None|0
+ParameterNumber|DENSITY_MIN|Minimum Density [Percent]|0.0|100.0|10
+ParameterNumber|DENSITY_INT|Minimum Density for Interior Forest [Percent]|0.0|100.0|99
+OutputRaster|FRAGMENTATION|Fragmentation
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Function.txt b/python/plugins/processing/algs/saga/description/2.3.0/Function.txt
new file mode 100644
index 0000000..e058e9b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Function.txt
@@ -0,0 +1,8 @@
+Function
+grid_calculus
+ParameterNumber|XMIN|xmin|None|None|0.0
+ParameterNumber|XMAX|xmax|None|None|0.0
+ParameterNumber|YMIN|ymin|None|None|0.0
+ParameterNumber|YMAX|ymax|None|None|0.0
+ParameterString|FORMUL|Formula|
+OutputRaster|RESULT|Function
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Fuzzify.txt b/python/plugins/processing/algs/saga/description/2.3.0/Fuzzify.txt
new file mode 100644
index 0000000..d78f12b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Fuzzify.txt
@@ -0,0 +1,10 @@
+Fuzzify
+grid_calculus
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|A|A|None|None|0.0
+ParameterNumber|B|B|None|None|0.0
+ParameterNumber|C|C|None|None|0.0
+ParameterNumber|D|D|None|None|0.0
+ParameterSelection|TYPE|Membership Function Type|[0] linear;[1] sigmoidal;[2] j-shaped
+ParameterBoolean|AUTOFIT     |Adjust to Grid|True
+OutputRaster|OUTPUT|Fuzzified Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FuzzyIntersection(AND).txt b/python/plugins/processing/algs/saga/description/2.3.0/FuzzyIntersection(AND).txt
new file mode 100644
index 0000000..a00eff2
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FuzzyIntersection(AND).txt
@@ -0,0 +1,5 @@
+Fuzzy Intersection (AND)
+grid_calculus
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|TYPE|Operator Type|[0] min(a, b) (non-interactive);[1] a * b;[2] max(0, a + b - 1)
+OutputRaster|AND|Intersection
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/FuzzyUnion(OR).txt b/python/plugins/processing/algs/saga/description/2.3.0/FuzzyUnion(OR).txt
new file mode 100644
index 0000000..5925179
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/FuzzyUnion(OR).txt
@@ -0,0 +1,5 @@
+Fuzzy Union (OR)
+grid_calculus
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|TYPE|Operator Type|[0] max(a, b) (non-interactive);[1] a + b - a * b;[2] min(1, a + b)
+OutputRaster|OR|Union
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GaussianFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/GaussianFilter.txt
new file mode 100644
index 0000000..0cf7e31
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GaussianFilter.txt
@@ -0,0 +1,7 @@
+Gaussian Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|SIGMA|Standard Deviation|None|None|1
+ParameterSelection|MODE|Search Mode|[0] Square;[1] Circle
+ParameterNumber|RADIUS|Search Radius|None|None|3
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(Points).txt b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(Points).txt
new file mode 100644
index 0000000..fd483f1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(Points).txt
@@ -0,0 +1,16 @@
+GWR for Multiple Predictors
+statistics_regression
+ParameterVector|POINTS|Points|-1|False
+ParameterTableField|DEPENDENT|Dependent Variable|POINTS|-1|False
+ParameterTableField|PREDICTORS|Predictor|POINTS|-1|False
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+OutputVector|REGRESSION|Regression
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(PointsGrids).txt b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(PointsGrids).txt
new file mode 100644
index 0000000..1573751
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression(PointsGrids).txt
@@ -0,0 +1,20 @@
+GWR for Multiple Predictor Grids
+statistics_regression
+ParameterMultipleInput|PREDICTORS|Predictors|3.0|False
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|DEPENDENT|Dependent Variable|POINTS|-1|False
+ParameterSelection|RESOLUTION|Model Resolution|[0] same as predictors;[1] user defined|1
+ParameterNumber|RESOLUTION_VAL|Resolution|0|None|1
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+OutputRaster|REGRESSION|Regression
+OutputRaster|QUALITY|Coefficient of Determination
+OutputVector|RESIDUALS|Residuals
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression.txt b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression.txt
new file mode 100644
index 0000000..e4f8a0e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedMultipleRegression.txt
@@ -0,0 +1,23 @@
+GWR for Multiple Predictors (Gridded Model Output)
+statistics_regression
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|DEPENDENT|Dependent Variable|POINTS|-1|False
+ParameterTableField|PREDICTORS|Predictor|POINTS|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputVector|REGRESSION|Regression
+OutputRaster|SLOPES|Slopes
+OutputRaster|TARGET_INTERCEPT|Intercept
+OutputRaster|TARGET_QUALITY|Quality
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression(PointsGrid).txt b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression(PointsGrid).txt
new file mode 100644
index 0000000..77d54b1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression(PointsGrid).txt
@@ -0,0 +1,20 @@
+GWR for Single Predictor Grid
+statistics_regression
+ParameterRaster|PREDICTOR|Predictor|False
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|DEPENDENT|Dependent Variable|POINTS|-1|False
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+OutputRaster|REGRESSION|Regression
+OutputRaster|QUALITY|Coefficient of Determination
+OutputRaster|INTERCEPT|Intercept
+OutputRaster|SLOPE|Slope
+OutputVector|RESIDUALS|Residuals
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression.txt b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression.txt
new file mode 100644
index 0000000..f8ac07c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeographicallyWeightedRegression.txt
@@ -0,0 +1,23 @@
+GWR for Single Predictor (Gridded Model Output)
+statistics_regression
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|DEPENDENT|Dependent Variable|POINTS|-1|False
+ParameterTableField|PREDICTOR|Predictor|POINTS|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterSelection|DW_WEIGHTING|Weighting Function|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
+OutputRaster|TARGET_INTERCEPT|Intercept
+OutputRaster|TARGET_SLOPE|Slope
+OutputRaster|TARGET_QUALITY|Quality
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GeometricFigures.txt b/python/plugins/processing/algs/saga/description/2.3.0/GeometricFigures.txt
new file mode 100644
index 0000000..09a288d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GeometricFigures.txt
@@ -0,0 +1,7 @@
+Geometric Figures
+grid_calculus
+ParameterNumber|CELL_COUNT|Cell Count|None|None|0
+ParameterNumber|CELL_SIZE|Cell Size|None|None|0
+ParameterSelection|FIGURE|Figure|[0] Cone (up);[1] Cone (down);[2] Plane
+ParameterNumber|PLANE|Direction of Plane [Degree]|None|None|0
+OutputRaster|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GetShapesExtents.txt b/python/plugins/processing/algs/saga/description/2.3.0/GetShapesExtents.txt
new file mode 100644
index 0000000..9ef1cc7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GetShapesExtents.txt
@@ -0,0 +1,5 @@
+Get Shapes Extents
+shapes_tools
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterSelection|OUTPUT|Get Extent for|[0] all shapes;[1] each shape;[2] each shape's part
+OutputVector|EXTENTS|Extents
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GlobalMoransIforGrids.txt b/python/plugins/processing/algs/saga/description/2.3.0/GlobalMoransIforGrids.txt
new file mode 100644
index 0000000..e5de7f6
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GlobalMoransIforGrids.txt
@@ -0,0 +1,5 @@
+Global Moran's I for Grids
+statistics_grid
+ParameterRaster|GRID|Grid|False
+ParameterSelection|CONTIGUITY|Case of contiguity|[0] Rook;[1] Queen
+OutputTable|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromCartesiantoPolarCoordinates.txt b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromCartesiantoPolarCoordinates.txt
new file mode 100644
index 0000000..8a725be
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromCartesiantoPolarCoordinates.txt
@@ -0,0 +1,10 @@
+Gradient Vector from Cartesian to Polar Coordinates
+grid_calculus
+ParameterRaster|DX|X Component|False
+ParameterRaster|DY|Y Component|False
+ParameterSelection|UNITS|Polar Angle Units|[0] radians;[1] degree
+ParameterSelection|SYSTEM|Polar Coordinate System|[0] mathematical;[1] geographical;[2] user defined
+ParameterNumber|SYSTEM_ZERO|User defined Zero Direction|None|None|0.0
+ParameterSelection|SYSTEM_ORIENT|User defined Orientation|[0] clockwise;[1] counterclockwise
+OutputRaster|DIR|Direction
+OutputRaster|LEN|Length
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromPolartoCartesianCoordinates.txt b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromPolartoCartesianCoordinates.txt
new file mode 100644
index 0000000..382aa9e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorfromPolartoCartesianCoordinates.txt
@@ -0,0 +1,10 @@
+Gradient Vector from Polar to Cartesian Coordinates
+grid_calculus
+ParameterRaster|DIR|Direction|False
+ParameterRaster|LEN|Length|False
+ParameterSelection|UNITS|Polar Angle Units|[0] radians;[1] degree
+ParameterSelection|SYSTEM|Polar Coordinate System|[0] mathematical;[1] geographical;[2] user defined
+ParameterNumber|SYSTEM_ZERO|User defined Zero Direction|None|None|0.0
+ParameterSelection|SYSTEM_ORIENT|User defined Orientation|[0] clockwise;[1] counterclockwise
+OutputRaster|DX|X Component
+OutputRaster|DY|Y Component
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionalComponents.txt b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionalComponents.txt
new file mode 100644
index 0000000..1a1abf4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionalComponents.txt
@@ -0,0 +1,10 @@
+Gradient Vectors from Directional Components
+shapes_grid
+ParameterRaster|X|X Component|False
+ParameterRaster|Y|Y Component|False
+ParameterNumber|STEP|Step|None|None|1
+ParameterNumber|SIZE_MIN|Size Range Min|None|None|25.0
+ParameterNumber|SIZE_MAX|Size Range Max|None|None|100.0
+ParameterSelection|AGGR|Aggregation|[0] nearest neighbour;[1] mean value
+ParameterSelection|STYLE|Style|[0] simple line;[1] arrow;[2] arrow (centered to cell)
+OutputVector|VECTORS|Gradient Vectors
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionandLength.txt b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionandLength.txt
new file mode 100644
index 0000000..628665a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromDirectionandLength.txt
@@ -0,0 +1,10 @@
+Gradient Vectors from Direction and Length
+shapes_grid
+ParameterRaster|DIR|Direction|False
+ParameterRaster|LEN|Length|False
+ParameterNumber|STEP|Step|None|None|1
+ParameterNumber|SIZE_MIN|Size Range Min|None|None|25.0
+ParameterNumber|SIZE_MAX|Size Range Max|None|None|100.0
+ParameterSelection|AGGR|Aggregation|[0] nearest neighbour;[1] mean value
+ParameterSelection|STYLE|Style|[0] simple line;[1] arrow;[2] arrow (centered to cell)
+OutputVector|VECTORS|Gradient Vectors
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromSurface.txt b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromSurface.txt
new file mode 100644
index 0000000..582bf10
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GradientVectorsfromSurface.txt
@@ -0,0 +1,9 @@
+Gradient Vectors from Surface
+shapes_grid
+ParameterRaster|SURFACE|Surface|False
+ParameterNumber|STEP|Step|None|None|1
+ParameterNumber|SIZE_MIN|Size Range Min|None|None|25.0
+ParameterNumber|SIZE_MAX|Size Range Max|None|None|100.0
+ParameterSelection|AGGR|Aggregation|[0] nearest neighbour;[1] mean value
+ParameterSelection|STYLE|Style|[0] simple line;[1] arrow;[2] arrow (centered to cell)
+OutputVector|VECTORS|Gradient Vectors
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridBuffer.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridBuffer.txt
new file mode 100644
index 0000000..da961e9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridBuffer.txt
@@ -0,0 +1,6 @@
+Grid Buffer
+grid_tools
+ParameterRaster|FEATURES|Features Grid|False
+ParameterNumber|DIST|Distance|None|None|1000
+ParameterSelection|BUFFERTYPE|Buffer Distance|[0] Fixed;[1] Cell value
+OutputRaster|BUFFER|Buffer Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridCalculator.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridCalculator.txt
new file mode 100644
index 0000000..e849948
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridCalculator.txt
@@ -0,0 +1,9 @@
+Raster calculator|Grid Calculator
+grid_calculus
+AllowUnmatching
+ParameterRaster|GRIDS|Main input layer|False
+ParameterMultipleInput|XGRIDS|Additional layers|3|True
+ParameterString|FORMULA|Formula|
+ParameterBoolean|USE_NODATA|Use NoData|False
+ParameterSelection|TYPE|Output Data Type|[0] bit;[1] unsigned 1 byte integer;[2] signed 1 byte integer;[3] unsigned 2 byte integer;[4] signed 2 byte integer;[5] unsigned 4 byte integer;[6] signed 4 byte integer;[7] 4 byte floating point number;[8] 8 byte floating point number|7
+OutputRaster|RESULT|Calculated
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridCellIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridCellIndex.txt
new file mode 100644
index 0000000..0b8e3ee
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridCellIndex.txt
@@ -0,0 +1,5 @@
+Grid Cell Index
+grid_tools
+ParameterRaster|GRID|Input Grid|False
+ParameterSelection|ORDER|Index|[0] ascending;[1] descending|0
+OutputRaster|INDEX|Sorted Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridDifference.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridDifference.txt
new file mode 100644
index 0000000..c2fa03d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridDifference.txt
@@ -0,0 +1,5 @@
+Grid Difference
+grid_calculus
+ParameterRaster|A|A|False
+ParameterRaster|B|B|False
+OutputRaster|C|Difference (A - B)
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridDivision.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridDivision.txt
new file mode 100644
index 0000000..718d010
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridDivision.txt
@@ -0,0 +1,5 @@
+Grid Division
+grid_calculus
+ParameterRaster|A|Dividend|False
+ParameterRaster|B|Divisor|False
+OutputRaster|C|Quotient
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridMasking.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridMasking.txt
new file mode 100644
index 0000000..d15e2f0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridMasking.txt
@@ -0,0 +1,6 @@
+Grid Masking
+grid_tools
+ParameterRaster|GRID|Grid|False
+ParameterRaster|MASK|Mask|False
+OutputRaster|MASKED|Masked Grid
+AllowUnmatching
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridNormalisation.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridNormalisation.txt
new file mode 100644
index 0000000..b16dcab
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridNormalisation.txt
@@ -0,0 +1,6 @@
+Grid Normalisation
+grid_calculus
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|RANGE_MIN|Target Range (min)|None|None|0
+ParameterNumber|RANGE_MAX|Target Range (max)|None|None|1
+OutputRaster|OUTPUT|Normalised Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridOrientation.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridOrientation.txt
new file mode 100644
index 0000000..2eb0de1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridOrientation.txt
@@ -0,0 +1,5 @@
+Grid Orientation
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|METHOD|Method|[0] Copy;[1] Flip;[2] Mirror;[3] Invert
+OutputRaster|RESULT|Changed Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridProximityBuffer.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridProximityBuffer.txt
new file mode 100644
index 0000000..be5df90
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridProximityBuffer.txt
@@ -0,0 +1,8 @@
+Grid Proximity Buffer
+grid_tools
+ParameterRaster|SOURCE|Source Grid|False
+ParameterNumber|DIST|Buffer distance|None|None|500.0
+ParameterNumber|IVAL|Equidistance|None|None|100.0
+OutputRaster|DISTANCE|Distance Grid
+OutputRaster|ALLOC|Allocation Grid
+OutputRaster|BUFFER|Buffer Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridSkeletonization.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridSkeletonization.txt
new file mode 100644
index 0000000..eacd23f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridSkeletonization.txt
@@ -0,0 +1,9 @@
+Grid Skeletonization
+imagery_segmentation
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|METHOD|Method|[0] Standard;[1] Hilditch's Algorithm;[2] Channel Skeleton
+ParameterSelection|INIT_METHOD|Initialisation|[0] Less than;[1] Greater than
+ParameterNumber|INIT_THRESHOLD|Threshold (Init.)|None|None|0.0
+ParameterNumber|CONVERGENCE|Convergence|None|None|3.0
+OutputRaster|RESULT|Skeleton
+OutputVector|VECTOR|Skeleton
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridStandardisation.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridStandardisation.txt
new file mode 100644
index 0000000..743f2e0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridStandardisation.txt
@@ -0,0 +1,5 @@
+Grid Standardisation
+grid_calculus
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|STRETCH|Stretch Factor|0.0|None|1.0
+OutputRaster|OUTPUT|Standardised Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridStatisticsforPolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridStatisticsforPolygons.txt
new file mode 100644
index 0000000..1d3d170
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridStatisticsforPolygons.txt
@@ -0,0 +1,16 @@
+Grid Statistics for Polygons
+shapes_grid
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterSelection|METHOD|Method|[0] Standard;[1] Shape wise, supports overlapping polygons|1
+ParameterSelection|NAMING|Grid Naming|[0] Grid number;[1] Grid name|1
+ParameterBoolean|COUNT|Number of Cells|True
+ParameterBoolean|MIN|Minimum|True
+ParameterBoolean|MAX|Maximum|True
+ParameterBoolean|RANGE|Range|True
+ParameterBoolean|SUM|Sum|True
+ParameterBoolean|MEAN|Mean|True
+ParameterBoolean|VAR|Variance|True
+ParameterBoolean|STDDEV|Standard Deviation|True
+ParameterNumber|QUANTILE|Quantiles|None|None|0
+OutputVector|RESULT|Statistics
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints(randomly).txt b/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints(randomly).txt
new file mode 100644
index 0000000..1f04323
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints(randomly).txt
@@ -0,0 +1,5 @@
+Grid Values to Points (randomly)
+shapes_grid
+ParameterRaster|GRID|Grid|False
+ParameterNumber|FREQ|Frequency|None|None|100
+OutputVector|POINTS|Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints.txt
new file mode 100644
index 0000000..0e33a30
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridValuestoPoints.txt
@@ -0,0 +1,7 @@
+Grid Values to Points
+shapes_grid
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterVector|POLYGONS|Polygons|-1|True
+ParameterBoolean|NODATA        |Exclude NoData Cells|True
+ParameterSelection|TYPE|Type|[0] nodes;[1] cells
+OutputVector|SHAPES|Shapes
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridVolume.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridVolume.txt
new file mode 100644
index 0000000..f20c27c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridVolume.txt
@@ -0,0 +1,5 @@
+Grid Volume
+grid_calculus
+ParameterRaster|GRID|Grid|False
+ParameterSelection|METHOD|Method|[0] Count Only Above Base Level;[1] Count Only Below Base Level;[2] Subtract Volumes Below Base Level;[3] Add Volumes Below Base Level
+ParameterNumber|LEVEL|Base Level|None|None|0.0
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridsProduct.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridsProduct.txt
new file mode 100644
index 0000000..59d864f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridsProduct.txt
@@ -0,0 +1,4 @@
+Grids Product
+grid_calculus
+ParameterMultipleInput|GRIDS|Grids|3|False
+OutputRaster|RESULT|Product
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/GridsSum.txt b/python/plugins/processing/algs/saga/description/2.3.0/GridsSum.txt
new file mode 100644
index 0000000..60b0bee
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/GridsSum.txt
@@ -0,0 +1,4 @@
+Grids Sum
+grid_calculus
+ParameterMultipleInput|GRIDS|Grids|3|False
+OutputRaster|RESULT|Sum
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/HistogramSurface.txt b/python/plugins/processing/algs/saga/description/2.3.0/HistogramSurface.txt
new file mode 100644
index 0000000..bde5571
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/HistogramSurface.txt
@@ -0,0 +1,5 @@
+Histogram Surface
+grid_visualisation
+ParameterRaster|GRID|Grid|False
+ParameterSelection|METHOD|Method|[0] rows;[1] columns;[2] circle
+OutputRaster|HIST|Histogram
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Hypsometry.txt b/python/plugins/processing/algs/saga/description/2.3.0/Hypsometry.txt
new file mode 100644
index 0000000..2ca4a17
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Hypsometry.txt
@@ -0,0 +1,10 @@
+Hypsometry
+ta_morphometry
+ParameterRaster|ELEVATION|Elevation|False
+ParameterNumber|COUNT|Number of Classes|None|None|100.0
+ParameterSelection|SORTING|Sort|[0] up;[1] down
+ParameterSelection|METHOD|Classification Constant|[0] height;[1] area
+ParameterBoolean|BZRANGE         |Use Z-Range|True
+ParameterNumber|ZRANGE_MIN|Z-Range Min|None|None|0.0
+ParameterNumber|ZRANGE_MAX|Z-Range Max|None|None|1000.0
+OutputTable|TABLE|Hypsometry
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/InverseDistanceWeighted.txt b/python/plugins/processing/algs/saga/description/2.3.0/InverseDistanceWeighted.txt
new file mode 100644
index 0000000..11b2d2a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/InverseDistanceWeighted.txt
@@ -0,0 +1,22 @@
+Inverse Distance Weighted
+grid_gridding
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+ParameterSelection|DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting scheme
+ParameterNumber|DW_IDW_POWER|Inverse Distance Power|0.0|None|2
+ParameterBoolean|DW_IDW_OFFSET|Inverse Distance Offset|False
+ParameterNumber|DW_BANDWIDTH|Exponential and Gaussian Weighting Bandwidth|0.0|None|1
+ParameterSelection|SEARCH_RANGE|Search Range|[0] search radius (local);[1] no search radius (global)|1
+ParameterNumber|SEARCH_RADIUS|Search Radius|None|None|100.0
+ParameterSelection|SEARCH_POINTS_ALL|Search Range|[0] maximum number of nearest points;[1] all points whitin search distance|0
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|-1|None|-1
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|20|1
+ParameterSelection|SEARCH_DIRECTION|Search Mode|[0] all directions;[1] quadrants
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points
+ParameterNumber|SEARCH_POINTS_MAX|Maximum Number of Points|None|None|10
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_DEFINITION|Target Grid System|[0] user defined;[1] grid or grid system
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+ParameterRaster|TARGET_TEMPLATE|Target System|True
+OutputRaster|TARGET_OUT_GRID|Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/InvertDataNo-Data.txt b/python/plugins/processing/algs/saga/description/2.3.0/InvertDataNo-Data.txt
new file mode 100644
index 0000000..79a626f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/InvertDataNo-Data.txt
@@ -0,0 +1,4 @@
+Invert Data/No-Data
+grid_tools
+ParameterRaster|INPUT|Grid|False
+OutputRaster|OUTPUT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/KernelDensityEstimation.txt b/python/plugins/processing/algs/saga/description/2.3.0/KernelDensityEstimation.txt
new file mode 100644
index 0000000..ec91195
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/KernelDensityEstimation.txt
@@ -0,0 +1,11 @@
+Kernel Density Estimation
+grid_gridding
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|POPULATION|Weight|POINTS|-1|False
+ParameterNumber|RADIUS|Radius|None|None|10
+ParameterSelection|KERNEL|Kernel|[0] quartic kernel;[1] gaussian kernel
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Kernel
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LSFactor.txt b/python/plugins/processing/algs/saga/description/2.3.0/LSFactor.txt
new file mode 100644
index 0000000..6522dc4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LSFactor.txt
@@ -0,0 +1,9 @@
+LS Factor
+ta_hydrology
+ParameterRaster|SLOPE|Slope|False
+ParameterRaster|AREA|Catchment Area|False
+ParameterSelection|CONV|Area to Length Conversion|[0] no conversion (areas already given as specific catchment area);[1] 1 / cell size (specific catchment area);[2] square root (catchment length)
+ParameterSelection|METHOD|Method (LS)|[0] Moore et al. 1991;[1] Desmet & Govers 1996;[2] Boehner & Selige 2006
+ParameterNumber|EROSIVITY|Rill/Interrill Erosivity|None|None|0.0
+ParameterSelection|STABILITY|Stability|[0] stable;[1] instable (thawing)
+OutputRaster|LS|LS Factor
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LakeFlood.txt b/python/plugins/processing/algs/saga/description/2.3.0/LakeFlood.txt
new file mode 100644
index 0000000..0328fc6
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LakeFlood.txt
@@ -0,0 +1,7 @@
+Lake Flood
+ta_hydrology
+ParameterRaster|ELEV|DEM|False
+ParameterRaster|SEEDS|Seeds|False
+ParameterBoolean|LEVEL         |Absolute Water Levels|True
+OutputRaster|OUTDEPTH|Lake
+OutputRaster|OUTLEVEL|Surface
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LandSurfaceTemperature.txt b/python/plugins/processing/algs/saga/description/2.3.0/LandSurfaceTemperature.txt
new file mode 100644
index 0000000..7983389
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LandSurfaceTemperature.txt
@@ -0,0 +1,10 @@
+Land Surface Temperature
+ta_morphometry
+ParameterRaster|DEM|Elevation [m]|False
+ParameterRaster|SWR|Short Wave Radiation [kW/m2]|False
+ParameterRaster|LAI|Leaf Area Index|False
+ParameterNumber|Z_REFERENCE|Elevation at Reference Station [m]|None|None|0.0
+ParameterNumber|T_REFERENCE|Temperature at Reference Station [Deg.Celsius]|None|None|0.0
+ParameterNumber|T_GRADIENT|Temperature Gradient [Deg.Celsius/km]|None|None|6.5
+ParameterNumber|C_FACTOR|C Factor|None|None|1.0
+OutputRaster|LST|Land Surface Temperature [Deg.Celsius]
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LaplacianFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/LaplacianFilter.txt
new file mode 100644
index 0000000..e828148
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LaplacianFilter.txt
@@ -0,0 +1,8 @@
+Laplacian Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|METHOD|Method|[0] standard kernel 1;[1] standard kernel 2;[2] Standard kernel 3;[3] user defined kernel
+ParameterNumber|SIGMA|Standard Deviation (Percent of Radius)|None|None|0
+ParameterNumber|RADIUS|Radius|None|None|1
+ParameterSelection|MODE|Search Mode|[0] square;[1] circle
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Layerofextremevalue.txt b/python/plugins/processing/algs/saga/description/2.3.0/Layerofextremevalue.txt
new file mode 100644
index 0000000..15c6ed2
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Layerofextremevalue.txt
@@ -0,0 +1,5 @@
+Layer of extreme value
+grid_analysis
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|CRITERIA|Method|[0] Maximum;[1] Minimum
+OutputRaster|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LeastCostPaths.txt b/python/plugins/processing/algs/saga/description/2.3.0/LeastCostPaths.txt
new file mode 100644
index 0000000..ecbdd48
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LeastCostPaths.txt
@@ -0,0 +1,7 @@
+Least Cost Paths
+grid_analysis
+ParameterVector|SOURCE|Source Point(s)|0|False
+ParameterRaster|DEM|Accumulated cost|False
+ParameterMultipleInput|VALUES|Values|3|True
+OutputVector|POINTS|Profile (points)
+OutputVector|LINE|Profile (lines)
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Line-PolygonIntersection.txt b/python/plugins/processing/algs/saga/description/2.3.0/Line-PolygonIntersection.txt
new file mode 100644
index 0000000..9c15f25
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Line-PolygonIntersection.txt
@@ -0,0 +1,6 @@
+Line-Polygon Intersection
+shapes_lines
+ParameterVector|LINES|Lines|1|False
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterSelection|METHOD|Output|[0] one multi-line per polygon;[1] keep original line attributes
+OutputVector|INTERSECT|Intersection
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LineDissolve.txt b/python/plugins/processing/algs/saga/description/2.3.0/LineDissolve.txt
new file mode 100644
index 0000000..fb704cc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LineDissolve.txt
@@ -0,0 +1,8 @@
+Line Dissolve
+shapes_lines
+ParameterVector|LINES|Lines|-1|False
+ParameterTableField|FIELD_1|1. Attribute|LINES|-1|False
+ParameterTableField|FIELD_2|2. Attribute|LINES|-1|False
+ParameterTableField|FIELD_3|3. Attribute|LINES|-1|False
+ParameterSelection|ALL|Dissolve...|[0] lines with same attribute value(s);[1] all lines
+OutputVector|DISSOLVED|Dissolved Lines
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LineProperties.txt b/python/plugins/processing/algs/saga/description/2.3.0/LineProperties.txt
new file mode 100644
index 0000000..d23d392
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LineProperties.txt
@@ -0,0 +1,7 @@
+Line Properties
+shapes_lines
+ParameterVector|LINES|Lines|1|False
+ParameterBoolean|BPARTS      |Number of Parts|True
+ParameterBoolean|BPOINTS     |Number of Vertices|True
+ParameterBoolean|BLENGTH     |Length|True
+OutputVector|OUTPUT|Lines with Property Attributes
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LineSimplification.txt b/python/plugins/processing/algs/saga/description/2.3.0/LineSimplification.txt
new file mode 100644
index 0000000..b1bb26e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LineSimplification.txt
@@ -0,0 +1,5 @@
+Line Simplification
+shapes_lines
+ParameterVector|LINES|Lines|1|False
+ParameterNumber|TOLERANCE|Tolerance|None|None|1.0
+OutputVector|OUTPUT|Simplified Lines
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/LocalMinimaandMaxima.txt b/python/plugins/processing/algs/saga/description/2.3.0/LocalMinimaandMaxima.txt
new file mode 100644
index 0000000..4b415bc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/LocalMinimaandMaxima.txt
@@ -0,0 +1,5 @@
+Local Minima and Maxima
+shapes_grid
+ParameterRaster|GRID|Grid|False
+OutputVector|MINIMA|Minima
+OutputVector|MAXIMA|Maxima
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MajorityFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/MajorityFilter.txt
new file mode 100644
index 0000000..7cd6fe5
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MajorityFilter.txt
@@ -0,0 +1,7 @@
+Majority Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|MODE|Search Mode|[0] Square;[1] Circle
+ParameterNumber|RADIUS|Radius|1.0|None|1
+ParameterNumber|THRESHOLD|Threshold [Percent]|0.0|None|0
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MassBalanceIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/MassBalanceIndex.txt
new file mode 100644
index 0000000..e65fabf
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MassBalanceIndex.txt
@@ -0,0 +1,8 @@
+Mass Balance Index
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|HREL|Vertical Distance to Channel Network|True
+ParameterNumber|TSLOPE|T Slope|None|None|15.0
+ParameterNumber|TCURVE|T Curvature|None|None|0.01
+ParameterNumber|THREL|T Vertical Distance to Channel Network|None|None|15.0
+OutputRaster|MBI|Mass Balance Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MergeLayers.txt b/python/plugins/processing/algs/saga/description/2.3.0/MergeLayers.txt
new file mode 100644
index 0000000..f0d5bb7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MergeLayers.txt
@@ -0,0 +1,6 @@
+Merge Layers
+shapes_tools
+ParameterMultipleInput|INPUT|Input Layers|-1|True
+ParameterBoolean|SRCINFO|Add source information|True
+ParameterBoolean|MATCH|Match Fields by Name|True
+OutputVector|MERGED|Merged Layer
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MetricConversions.txt b/python/plugins/processing/algs/saga/description/2.3.0/MetricConversions.txt
new file mode 100644
index 0000000..3501a9e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MetricConversions.txt
@@ -0,0 +1,5 @@
+Metric Conversions
+grid_calculus
+ParameterRaster|GRID|Grid|False
+ParameterSelection|CONVERSION|Conversion|[0] radians to degree;[1] degree to radians;[2] Celsius to Fahrenheit;[3] Fahrenheit to Celsius
+OutputRaster|CONV|Converted Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MinimumDistanceAnalysis.txt b/python/plugins/processing/algs/saga/description/2.3.0/MinimumDistanceAnalysis.txt
new file mode 100644
index 0000000..200a565
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MinimumDistanceAnalysis.txt
@@ -0,0 +1,4 @@
+Minimum Distance Analysis
+statistics_points
+ParameterVector|POINTS|Points|0|False
+OutputTable|TABLE|Minimum Distance Analysis
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ModifiedQuadraticShepard.txt b/python/plugins/processing/algs/saga/description/2.3.0/ModifiedQuadraticShepard.txt
new file mode 100644
index 0000000..3c96918
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ModifiedQuadraticShepard.txt
@@ -0,0 +1,11 @@
+Modified Quadratic Shepard
+grid_gridding
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterNumber|QUADRATIC_NEIGHBORS|Quadratic Neighbors|5.0|None|13
+ParameterNumber|WEIGHTING_NEIGHBORS|Weighting Neighbors|3.0|None|19
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MorphologicalFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/MorphologicalFilter.txt
new file mode 100644
index 0000000..28dfd3f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MorphologicalFilter.txt
@@ -0,0 +1,7 @@
+Morphological Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|MODE|Search Mode|[0] Square;[1] Circle
+ParameterNumber|RADIUS|Radius|None|None|1
+ParameterSelection|METHOD|Method|[0] Dilation;[1] Erosion;[2] Opening;[3] Closing
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MorphometricProtectionIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/MorphometricProtectionIndex.txt
new file mode 100644
index 0000000..48d4443
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MorphometricProtectionIndex.txt
@@ -0,0 +1,5 @@
+Morphometric Protection Index
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|RADIUS|Radius|None|None|2000.0
+OutputRaster|PROTECTION|Protection Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Mosaicking.txt b/python/plugins/processing/algs/saga/description/2.3.0/Mosaicking.txt
new file mode 100644
index 0000000..16f0439
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Mosaicking.txt
@@ -0,0 +1,15 @@
+Mosaick raster layers|Mosaicking
+grid_tools
+AllowUnmatching
+ParameterMultipleInput|GRIDS|Input Grids|3|False
+ParameterString|NAME|Name|Mosaic
+ParameterSelection|TYPE|Preferred data storage type|[0] 1 bit;[1] 1 byte unsigned integer;[2] 1 byte signed integer;[3] 2 byte unsigned integer;[4] 2 byte signed integer;[5] 4 byte unsigned integer;[6] 4 byte signed integer;[7] 4 byte floating point;[8] 8 byte floating point|7
+ParameterSelection|INTERPOL|Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation|0
+ParameterSelection|OVERLAP|Overlapping Areas|[0] first;[1] last;[2] minimum;[3] maximum;[4] mean;[5] blend boundary;[6] feathering|1
+ParameterNumber|BLEND_DIST|Blending Distance|0.0|None|10.0
+ParameterSelection|MATCH|Match|[0] none;[1] regression|0
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Multi-BandVariation.txt b/python/plugins/processing/algs/saga/description/2.3.0/Multi-BandVariation.txt
new file mode 100644
index 0000000..8dcf7d0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Multi-BandVariation.txt
@@ -0,0 +1,11 @@
+Multi-Band Variation
+statistics_grid
+ParameterMultipleInput|BANDS|Grids|3|False
+ParameterNumber|RADIUS|Radius [Cells]|None|None|1
+ParameterSelection|DISTANCE_WEIGHTING_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DISTANCE_WEIGHTING_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DISTANCE_WEIGHTING_IDW_OFFSET     |Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|1.0
+OutputRaster|MEAN|Mean Distance
+OutputRaster|STDDEV|Standard Deviation
+OutputRaster|DIFF|Distance
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultiDirectionLeeFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/MultiDirectionLeeFilter.txt
new file mode 100644
index 0000000..a768db9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultiDirectionLeeFilter.txt
@@ -0,0 +1,10 @@
+Multi Direction Lee Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|NOISE_ABS|Estimated Noise (absolute)|None|None|1.0
+ParameterNumber|NOISE_REL|Estimated Noise (relative)|None|None|1.0
+ParameterBoolean|WEIGHTED       |Weighted|True
+ParameterSelection|METHOD|Method|[0] noise variance given as absolute value;[1] noise variance given relative to mean standard deviation;[2] original calculation (Ringeler)
+OutputRaster|RESULT|Filtered Grid
+OutputRaster|STDDEV|Minimum Standard Deviation
+OutputRaster|DIR|Direction of Minimum Standard Deviation
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation(fromGrid).txt b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation(fromGrid).txt
new file mode 100644
index 0000000..9c59c92
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation(fromGrid).txt
@@ -0,0 +1,13 @@
+Multilevel B-Spline Interpolation (from Grid)
+grid_spline
+ParameterRaster|GRID|Grid|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterSelection|METHOD|Method|[0] without B-spline refinement;[1] with B-spline refinement
+ParameterNumber|EPSILON|Threshold Error|0|None|0.0001
+ParameterNumber|LEVEL_MAX|Maximum Level|1|14|11.0
+ParameterBoolean|UPDATE|Update View|False
+ParameterSelection|DATATYPE|Data Type|[0] same as input grid;[1] floating point
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation.txt b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation.txt
new file mode 100644
index 0000000..118904a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolation.txt
@@ -0,0 +1,11 @@
+Multilevel B-Spline Interpolation
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+ParameterSelection|METHOD|Method|[0] without B-spline refinement;[1] with B-spline refinement
+ParameterNumber|EPSILON|Threshold Error|0|None|0.0001
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolationforCategories.txt b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolationforCategories.txt
new file mode 100644
index 0000000..e4104cb
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultilevelB-SplineInterpolationforCategories.txt
@@ -0,0 +1,11 @@
+Multilevel B-Spline Interpolation for Categories
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+ParameterRaster|TARGET_TEMPLATE|Target system|True
+OutputRaster|TARGET_CATEGORIES|Categories
+OutputRaster|TARGET_PROPABILITY|Propability
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(GridGrids).txt b/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(GridGrids).txt
new file mode 100644
index 0000000..3263553
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(GridGrids).txt
@@ -0,0 +1,15 @@
+Multiple Regression Analysis (Grid/Grids)
+statistics_regression
+ParameterRaster|DEPENDENT|Dependent|False
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterSelection|INTERPOL|Grid Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+ParameterBoolean|COORD_X         |Include X Coordinate|True
+ParameterBoolean|COORD_Y         |Include Y Coordinate|True
+ParameterSelection|METHOD|Method|[0] include all;[1] forward;[2] backward;[3] stepwise
+ParameterNumber|P_IN|P in|None|None|5
+ParameterNumber|P_OUT|P out|None|None|5
+OutputRaster|REGRESSION|Regression
+OutputRaster|RESIDUALS|Residuals
+OutputTable|INFO_COEFF|Details: Coefficients
+OutputTable|INFO_MODEL|Details: Model
+OutputTable|INFO_STEPS|Details: Steps
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(PointsGrids).txt b/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(PointsGrids).txt
new file mode 100644
index 0000000..c5dbbf0
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultipleRegressionAnalysis(PointsGrids).txt
@@ -0,0 +1,16 @@
+Multiple Regression Analysis (Points/Grids)
+statistics_regression
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterTableField|ATTRIBUTE|Attribute|SHAPES|-1|False
+ParameterSelection|INTERPOL|Grid Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+ParameterBoolean|COORD_X         |Include X Coordinate|True
+ParameterBoolean|COORD_Y         |Include Y Coordinate|True
+ParameterSelection|METHOD|Method|[0] include all;[1] forward;[2] backward;[3] stepwise
+ParameterNumber|P_IN|P in|None|None|5
+ParameterNumber|P_OUT|P out|None|None|5
+OutputTable|INFO_COEFF|Details: Coefficients
+OutputTable|INFO_MODEL|Details: Model
+OutputTable|INFO_STEPS|Details: Steps
+OutputVector|RESIDUALS|Residuals
+OutputRaster|REGRESSION|Regression
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/MultiresolutionIndexofValleyBottomFlatness(MRVBF).txt b/python/plugins/processing/algs/saga/description/2.3.0/MultiresolutionIndexofValleyBottomFlatness(MRVBF).txt
new file mode 100644
index 0000000..04d4c3c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/MultiresolutionIndexofValleyBottomFlatness(MRVBF).txt
@@ -0,0 +1,13 @@
+Multiresolution Index of Valley Bottom Flatness (MRVBF)
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|T_SLOPE|Initial Threshold for Slope|None|None|16
+ParameterNumber|T_PCTL_V|Threshold for Elevation Percentile (Lowness)|None|None|0.4
+ParameterNumber|T_PCTL_R|Threshold for Elevation Percentile (Upness)|None|None|0.35
+ParameterNumber|P_SLOPE|Shape Parameter for Slope|None|None|4.0
+ParameterNumber|P_PCTL|Shape Parameter for Elevation Percentile|None|None|3.0
+ParameterBoolean|UPDATE        |Update Views|True
+ParameterBoolean|CLASSIFY      |Classify|True
+ParameterNumber|MAX_RES|Maximum Resolution (Percentage)|None|None|100
+OutputRaster|MRVBF|MRVBF
+OutputRaster|MRRTF|MRRTF
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/NaturalNeighbour.txt b/python/plugins/processing/algs/saga/description/2.3.0/NaturalNeighbour.txt
new file mode 100644
index 0000000..70353b1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/NaturalNeighbour.txt
@@ -0,0 +1,10 @@
+Natural Neighbour
+grid_gridding
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterBoolean|SIBSON|Sibson|True
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/NearestNeighbour.txt b/python/plugins/processing/algs/saga/description/2.3.0/NearestNeighbour.txt
new file mode 100644
index 0000000..50a99a9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/NearestNeighbour.txt
@@ -0,0 +1,9 @@
+Nearest Neighbour
+grid_gridding
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/OrderedWeightedAveraging(OWA).txt b/python/plugins/processing/algs/saga/description/2.3.0/OrderedWeightedAveraging(OWA).txt
new file mode 100644
index 0000000..19b0b85
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/OrderedWeightedAveraging(OWA).txt
@@ -0,0 +1,5 @@
+Ordered Weighted Averaging|Ordered Weighted Averaging (OWA)
+grid_analysis
+ParameterMultipleInput|GRIDS|Input Grids|3|False
+ParameterFixedTable|WEIGHTS|Weights|3|Weight|False
+OutputRaster|OUTPUT|Output Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging(Global).txt b/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging(Global).txt
new file mode 100644
index 0000000..9d3c71e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging(Global).txt
@@ -0,0 +1,27 @@
+Universal Kriging
+statistics_kriging
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterSelection|TQUALITY|Type of Quality Measure|[0] standard deviation;[1] variance
+ParameterBoolean|LOG|Logarithmic Transformation|True
+ParameterBoolean|BLOCK|Block Kriging|True
+ParameterNumber|DBLOCK|Block Size|0|None|100
+ParameterNumber|VAR_MAXDIST|Maximum Distance|None|None|-1.0
+ParameterNumber|VAR_NCLASSES|Lag Distance Classes|1|None|100
+ParameterNumber|VAR_NSKIP|Skip|1|None|1
+ParameterString|VAR_MODEL|Variogram Model|a + b * x
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|PREDICTION|Prediction
+OutputRaster|VARIANCE|Quality Measure
+ParameterSelection|SEARCH_RANGE|Search Range|[0] local;[1] global
+ParameterNumber|SEARCH_RADIUS|Maximum Search Distance|0|None|1000
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+ParameterMultipleInput|PREDICTORS|Predictors|3|True
+ParameterSelection|INTERPOL|Grid Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+ParameterBoolean|COORDS|Coordinates|False
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging.txt b/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging.txt
new file mode 100644
index 0000000..ec7a858
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/OrdinaryKriging.txt
@@ -0,0 +1,24 @@
+Ordinary Kriging
+statistics_kriging
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterSelection|TQUALITY|Type of Quality Measure|[0] standard deviation;[1] variance
+ParameterBoolean|LOG|Logarithmic Transformation|True
+ParameterBoolean|BLOCK|Block Kriging|True
+ParameterNumber|DBLOCK|Block Size|0|None|100
+ParameterNumber|VAR_MAXDIST|Maximum Distance|None|None|-1.0
+ParameterNumber|VAR_NCLASSES|Lag Distance Classes|1|None|100
+ParameterNumber|VAR_NSKIP|Skip|1|None|1
+ParameterString|VAR_MODEL|Variogram Model|a + b * x
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|PREDICTION|Prediction
+OutputRaster|VARIANCE|Quality Measure
+ParameterSelection|SEARCH_RANGE|Search Range|[0] local;[1] global
+ParameterNumber|SEARCH_RADIUS|Maximum Search Distance|0|None|1000
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlow-KinematicWaveD8.txt b/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlow-KinematicWaveD8.txt
new file mode 100644
index 0000000..0a28700
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlow-KinematicWaveD8.txt
@@ -0,0 +1,13 @@
+Overland Flow - Kinematic Wave D8
+sim_hydrology
+ParameterRaster|DEM|Elevation|False
+ParameterVector|GAUGES|Gauges|-1|True
+ParameterNumber|TIME_SPAN|Simulation Time [h]|None|None|24
+ParameterNumber|TIME_STEP|Simulation Time Step [h]|None|None|0.1
+ParameterNumber|ROUGHNESS|Manning's Roughness|None|None|0.03
+ParameterNumber|NEWTON_MAXITER|Max. Iterations|None|None|100
+ParameterNumber|NEWTON_EPSILON|Epsilon|None|None|0.0001
+ParameterSelection|PRECIP|Precipitation|[0] Homogenous;[1] Above Elevation;[2] Left Half
+ParameterNumber|THRESHOLD|Threshold Elevation|None|None|0.0
+OutputRaster|FLOW|Runoff
+OutputTable|GAUGES_FLOW|Flow at Gauges
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlowDistancetoChannelNetwork.txt b/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlowDistancetoChannelNetwork.txt
new file mode 100644
index 0000000..58f9044
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/OverlandFlowDistancetoChannelNetwork.txt
@@ -0,0 +1,8 @@
+Overland Flow Distance to Channel Network
+ta_channels
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|CHANNELS|Channel Network|False
+ParameterSelection|METHOD|Flow Algorithm|[0] D8;[1] MFD
+OutputRaster|DISTANCE|Overland Flow Distance
+OutputRaster|DISTVERT|Vertical Overland Flow Distance
+OutputRaster|DISTHORZ|Horizontal Overland Flow Distance
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Patching.txt b/python/plugins/processing/algs/saga/description/2.3.0/Patching.txt
new file mode 100644
index 0000000..6a70404
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Patching.txt
@@ -0,0 +1,6 @@
+Patching
+grid_tools
+ParameterRaster|ORIGINAL|Grid|False
+ParameterRaster|ADDITIONAL|Patch Grid|False
+ParameterSelection|INTERPOLATION|Interpolation Method|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+OutputRaster|COMPLETED|Completed Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PatternAnalysis.txt b/python/plugins/processing/algs/saga/description/2.3.0/PatternAnalysis.txt
new file mode 100644
index 0000000..5a6d4de
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PatternAnalysis.txt
@@ -0,0 +1,11 @@
+Pattern Analysis
+grid_analysis
+ParameterRaster|INPUT|Input Grid|False
+ParameterSelection|WINSIZE|Size of Analysis Window|[0] 3 X 3;[1] 5 X 5;[2] 7 X 7
+ParameterNumber|MAXNUMCLASS|Max. Number of Classes|None|None|0
+OutputRaster|RELATIVE|Relative Richness
+OutputRaster|DIVERSITY|Diversity
+OutputRaster|DOMINANCE|Dominance
+OutputRaster|FRAGMENTATION|Fragmentation
+OutputRaster|NDC|Number of Different Classes
+OutputRaster|CVN|Center Versus Neighbours
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PointStatisticsforPolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/PointStatisticsforPolygons.txt
new file mode 100644
index 0000000..02e0aba
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PointStatisticsforPolygons.txt
@@ -0,0 +1,14 @@
+Point Statistics for Polygons
+shapes_polygons
+ParameterVector|POINTS|Points|0|False
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|FIELDS|Attribute Table field|POINTS|-1|False
+ParameterSelection|FIELD_NAME|Field Naming Choice|[0] variable type + original name;[1] original name + variable type;[2] original name;[3] variable type
+ParameterBoolean|SUM             |Sum|True
+ParameterBoolean|AVG             |Mean|True
+ParameterBoolean|VAR             |Variance|True
+ParameterBoolean|DEV             |Deviation|True
+ParameterBoolean|MIN             |Minimum|True
+ParameterBoolean|MAX             |Maximum|True
+ParameterBoolean|NUM             |Count|True
+OutputVector|STATISTICS|Statistics
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PointsFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/PointsFilter.txt
new file mode 100644
index 0000000..afb3ee9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PointsFilter.txt
@@ -0,0 +1,12 @@
+Points Filter
+shapes_points
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterNumber|RADIUS|Radius|None|None|1
+ParameterNumber|MINNUM|Minimum Number of Points|None|None|0
+ParameterNumber|MAXNUM|Maximum Number of Points|None|None|0
+ParameterBoolean|QUADRANTS      |Quadrants|True
+ParameterSelection|METHOD|Filter Criterion|[0] keep maxima (with tolerance);[1] keep minima (with tolerance);[2] remove maxima (with tolerance);[3] remove minima (with tolerance);[4] remove below percentile;[5] remove above percentile
+ParameterNumber|TOLERANCE|Tolerance|None|None|0.0
+ParameterNumber|PERCENT|Percentile|None|None|50
+OutputVector|FILTER|Filtered Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PointsThinning.txt b/python/plugins/processing/algs/saga/description/2.3.0/PointsThinning.txt
new file mode 100644
index 0000000..00643e8
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PointsThinning.txt
@@ -0,0 +1,6 @@
+Points Thinning
+shapes_points
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterNumber|RESOLUTION|Resolution|0.0|None|1.0
+OutputVector|THINNED|Thinned Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolartoCartesianCoordinates.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolartoCartesianCoordinates.txt
new file mode 100644
index 0000000..8c9b76b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolartoCartesianCoordinates.txt
@@ -0,0 +1,8 @@
+Polar to Cartesian Coordinates
+shapes_tools
+ParameterVector|POLAR|Polar Coordinates|-1|False
+ParameterTableField|F_EXAGG|Exaggeration|POLAR|-1|False
+ParameterNumber|D_EXAGG|Exaggeration Factor|None|None|1
+ParameterNumber|RADIUS|Radius|None|None|6371000.0
+ParameterBoolean|DEGREE       |Degree|True
+OutputVector|CARTES|Cartesian Coordinates
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Polygon-LineIntersection.txt b/python/plugins/processing/algs/saga/description/2.3.0/Polygon-LineIntersection.txt
new file mode 100644
index 0000000..cb4dd7e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Polygon-LineIntersection.txt
@@ -0,0 +1,5 @@
+Polygon-Line Intersection
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterVector|LINES|Lines|1|False
+OutputVector|INTERSECT|Intersection
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonCentroids.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonCentroids.txt
new file mode 100644
index 0000000..5672b7e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonCentroids.txt
@@ -0,0 +1,5 @@
+Polygon Centroids
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterBoolean|METHOD         |Centroids for each part|True
+OutputVector|CENTROIDS|Centroids
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonClipping.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonClipping.txt
new file mode 100644
index 0000000..08c4993
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonClipping.txt
@@ -0,0 +1,6 @@
+Polygon Clipping
+shapes_polygons
+ParameterVector|CLIP|Clip features|2|False
+ParameterVector|S_INPUT|Input features|-1|False
+OutputVector|S_OUTPUT|Output features
+Hardcoded|-MULTIPLE 0
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonDifference.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDifference.txt
new file mode 100644
index 0000000..ffb1996
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDifference.txt
@@ -0,0 +1,6 @@
+Difference
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Difference
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolve.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolve.txt
new file mode 100644
index 0000000..3166386
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolve.txt
@@ -0,0 +1,8 @@
+Polygon dissolve (by attribute)|Polygon Dissolve
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|FIELD_1|1. Attribute|POLYGONS|-1|True
+ParameterTableField|FIELD_2|2. Attribute|POLYGONS|-1|True
+ParameterTableField|FIELD_3|3. Attribute|POLYGONS|-1|True
+ParameterBoolean|BND_KEEP|Keep inner boundaries|True
+OutputVector|DISSOLVED|Dissolved
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolveAllPolygs.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolveAllPolygs.txt
new file mode 100644
index 0000000..4913356
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonDissolveAllPolygs.txt
@@ -0,0 +1,5 @@
+Polygon dissolve (all polygons)|Polygon Dissolve
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterBoolean|BND_KEEP|Keep inner boundaries|True
+OutputVector|DISSOLVED|Dissolved
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonIdentity.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonIdentity.txt
new file mode 100644
index 0000000..6cb365f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonIdentity.txt
@@ -0,0 +1,6 @@
+Identity
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Identity
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonIntersect.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonIntersect.txt
new file mode 100644
index 0000000..2a822db
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonIntersect.txt
@@ -0,0 +1,6 @@
+Intersect
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Intersection
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonPartstoSeparatePolygons.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonPartstoSeparatePolygons.txt
new file mode 100644
index 0000000..1cab12c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonPartstoSeparatePolygons.txt
@@ -0,0 +1,5 @@
+Polygon Parts to Separate Polygons
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterBoolean|LAKES         |Ignore Lakes|True
+OutputVector|PARTS|Polygon Parts
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonProperties.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonProperties.txt
new file mode 100644
index 0000000..eeb063b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonProperties.txt
@@ -0,0 +1,8 @@
+Polygon Properties
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterBoolean|BPARTS        |Number of Parts|True
+ParameterBoolean|BPOINTS       |Number of Vertices|True
+ParameterBoolean|BLENGTH       |Perimeter|True
+ParameterBoolean|BAREA         |Area|True
+OutputVector|OUTPUT|Polygons with Property Attributes
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonSelfIntersection.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonSelfIntersection.txt
new file mode 100644
index 0000000..14359a4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonSelfIntersection.txt
@@ -0,0 +1,5 @@
+Polygon Self-Intersection
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|ID|Identifier|POLYGONS|-1|False
+OutputVector|INTERSECT|Intersection
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonShapeIndices.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonShapeIndices.txt
new file mode 100644
index 0000000..468ac18
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonShapeIndices.txt
@@ -0,0 +1,4 @@
+Polygon Shape Indices
+shapes_polygons
+ParameterVector|SHAPES|Shapes|2|False
+OutputVector|INDEX|Shape Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonSymmetricalDifference.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonSymmetricalDifference.txt
new file mode 100644
index 0000000..d1e4e3d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonSymmetricalDifference.txt
@@ -0,0 +1,6 @@
+Symmetrical Difference
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Symmetrical Difference
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonUnion.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonUnion.txt
new file mode 100644
index 0000000..8dd3e56
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonUnion.txt
@@ -0,0 +1,6 @@
+Union
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Union
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonUpdate.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonUpdate.txt
new file mode 100644
index 0000000..71914cd
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonUpdate.txt
@@ -0,0 +1,6 @@
+Update
+shapes_polygons
+ParameterVector|A|Layer A|2|False
+ParameterVector|B|Layer B|2|False
+ParameterBoolean|SPLIT|Split Parts|True
+OutputVector|RESULT|Updated polygons
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolygonstoEdgesandNodes.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolygonstoEdgesandNodes.txt
new file mode 100644
index 0000000..e9f4628
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolygonstoEdgesandNodes.txt
@@ -0,0 +1,5 @@
+Polygons to Edges and Nodes
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+OutputVector|EDGES|Edges
+OutputVector|NODES|Nodes
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PolynomialRegression.txt b/python/plugins/processing/algs/saga/description/2.3.0/PolynomialRegression.txt
new file mode 100644
index 0000000..e7ccd30
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PolynomialRegression.txt
@@ -0,0 +1,14 @@
+Polynomial Regression
+statistics_regression
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|ATTRIBUTE|Attribute|POINTS|-1|False
+ParameterSelection|POLYNOM|Polynom|[0] simple planar surface;[1] bi-linear saddle;[2] quadratic surface;[3] cubic surface;[4] user defined
+ParameterNumber|XORDER|Maximum X Order|1|None|4
+ParameterNumber|YORDER|Maximum Y Order|1|None|4
+ParameterNumber|TORDER|Maximum Total Order|0|None|4
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
+OutputVector|RESIDUALS|Residuals
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/PrincipleComponentsAnalysis.txt b/python/plugins/processing/algs/saga/description/2.3.0/PrincipleComponentsAnalysis.txt
new file mode 100644
index 0000000..f43035a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/PrincipleComponentsAnalysis.txt
@@ -0,0 +1,6 @@
+Principle Components Analysis
+table_calculus
+ParameterTable|TABLE|Table|False
+ParameterSelection|METHOD|Method|[0] correlation matrix;[1] variance-covariance matrix;[2] sums-of-squares-and-cross-products matrix
+ParameterNumber|NFIRST|Number of Components|None|None|3
+OutputTable|PCA|Principle Components
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Profilefrompoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/Profilefrompoints.txt
new file mode 100644
index 0000000..9e21d5f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Profilefrompoints.txt
@@ -0,0 +1,7 @@
+Profile from points table|Profile from points
+ta_profiles
+ParameterRaster|GRID|Grid|False
+ParameterTable|TABLE|Input|False
+ParameterTableField|X|X|TABLE|-1|False
+ParameterTableField|Y|Y|TABLE|-1|False
+OutputTable|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ProfilesfromLines.txt b/python/plugins/processing/algs/saga/description/2.3.0/ProfilesfromLines.txt
new file mode 100644
index 0000000..bc32a9f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ProfilesfromLines.txt
@@ -0,0 +1,9 @@
+Profiles from Lines
+ta_profiles
+ParameterRaster|DEM|DEM|False
+ParameterMultipleInput|VALUES|Values|3|True
+ParameterVector|LINES|Lines|1|False
+ParameterTableField|NAME|Name|LINES|-1|False
+ParameterBoolean|SPLIT         |Each Line as new Profile|True
+OutputVector|PROFILE|Profiles
+OutputVector|PROFILES|Profiles
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ProximityGrid.txt b/python/plugins/processing/algs/saga/description/2.3.0/ProximityGrid.txt
new file mode 100644
index 0000000..b78dad3
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ProximityGrid.txt
@@ -0,0 +1,6 @@
+Proximity Grid
+grid_tools
+ParameterRaster|FEATURES|Features|False
+OutputRaster|DISTANCE|Distance
+OutputRaster|DIRECTION|Direction
+OutputRaster|ALLOCATION|Allocation
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/QuadTreeStructuretoShapes.txt b/python/plugins/processing/algs/saga/description/2.3.0/QuadTreeStructuretoShapes.txt
new file mode 100644
index 0000000..14d3cb7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/QuadTreeStructuretoShapes.txt
@@ -0,0 +1,7 @@
+QuadTree Structure to Shapes
+shapes_tools
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterTableField|ATTRIBUTE|Attribute|SHAPES|-1|False
+OutputVector|POLYGONS|Polygons
+OutputVector|LINES|Lines
+OutputVector|POINTS|Duplicated Points
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RGBComposite.txt b/python/plugins/processing/algs/saga/description/2.3.0/RGBComposite.txt
new file mode 100644
index 0000000..271bbc6
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RGBComposite.txt
@@ -0,0 +1,24 @@
+RGB Composite
+grid_visualisation
+ParameterRaster|GRID_R|R|False
+ParameterRaster|GRID_G|G|False
+ParameterRaster|GRID_B|B|False
+ParameterSelection|R_METHOD|Method for R value|0 - 255;Rescale to 0 - 255;User defined rescale;Percentiles;Percentage of standard deviation
+ParameterSelection|G_METHOD|Method for G value|0 - 255;Rescale to 0 - 255;User defined rescale;Percentiles;Percentage of standard deviation
+ParameterSelection|B_METHOD|Method for B value|0 - 255;Rescale to 0 - 255;User defined rescale;Percentiles;Percentage of standard deviation
+ParameterNumber|R_RANGE_MIN|Rescale Range for RED min|0|255|0
+ParameterNumber|R_RANGE_MAX|Rescale Range for RED max|0|255|255
+ParameterNumber|R_PERCTL_MIN|Percentiles Range for RED max|1|99|1
+ParameterNumber|R_PERCTL_MAX|Percentiles Range for RED max|1|99|99
+ParameterNumber|R_PERCENT|Percentage of standard deviation for RED|0|None|150.0
+ParameterNumber|G_RANGE_MIN|Rescale Range for GREEN min|0|255|0
+ParameterNumber|G_RANGE_MAX|Rescale Range for GREEN max|0|255|255
+ParameterNumber|G_PERCTL_MIN|Percentiles Range for GREEN max|1|99|1
+ParameterNumber|G_PERCTL_MAX|Percentiles Range for GREEN max|1|99|99
+ParameterNumber|G_PERCENT|Percentage of standard deviation for GREEN|0|None|150.0
+ParameterNumber|B_RANGE_MIN|Rescale Range for BLUE min|0|255|0
+ParameterNumber|B_RANGE_MAX|Rescale Range for BLUE max|0|255|255
+ParameterNumber|B_PERCTL_MIN|Percentiles Range for BLUE max|1|99|1
+ParameterNumber|B_PERCTL_MAX|Percentiles Range for BLUE max|1|99|99
+ParameterNumber|B_PERCENT|Percentage of standard deviation for BLUE|0|None|150.0
+OutputRaster|GRID_RGB|Output RGB
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RadiusofVariance(Grid).txt b/python/plugins/processing/algs/saga/description/2.3.0/RadiusofVariance(Grid).txt
new file mode 100644
index 0000000..6e6d3ed
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RadiusofVariance(Grid).txt
@@ -0,0 +1,7 @@
+Radius of Variance (Grid)
+statistics_grid
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|VARIANCE|Standard Deviation|0.0|None|1.0
+ParameterNumber|RADIUS|Maximum Search Radius (cells)|0.0|None|20
+ParameterSelection|OUTPUT|Type of Output|[0] Cells;[1] Map Units
+OutputRaster|RESULT|Variance Radius
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RandomField.txt b/python/plugins/processing/algs/saga/description/2.3.0/RandomField.txt
new file mode 100644
index 0000000..abf32b4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RandomField.txt
@@ -0,0 +1,12 @@
+Random Field
+grid_calculus
+Hardcoded|-DEFINITION 0
+ParameterSelection|METHOD|Method|[0] Uniform;[1] Gaussian
+ParameterNumber|RANGE_MIN|Range Min|None|None|0.0
+ParameterNumber|RANGE_MAX|Range Max|None|None|1.0
+ParameterNumber|MEAN|Arithmetic Mean|None|None|0.0
+ParameterNumber|STDDEV|Standard Deviation|None|None|1.0
+Extent USER_XMIN USER_XMAX USER_YMIN USER_YMAX
+ParameterNumber|USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|USER_FITS|Method|[0] nodes;[1] cells
+OutputRaster|OUT_GRID|Random Field
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RandomTerrainGeneration.txt b/python/plugins/processing/algs/saga/description/2.3.0/RandomTerrainGeneration.txt
new file mode 100644
index 0000000..18043bf
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RandomTerrainGeneration.txt
@@ -0,0 +1,9 @@
+Random Terrain Generation
+grid_calculus
+ParameterNumber|RADIUS|Radius (cells)|None|None|10
+ParameterNumber|ITERATIONS|Iterations|None|None|10
+ParameterSelection|TARGET_TYPE|Target Dimensions|[0] User defined
+ParameterNumber|USER_CELL_SIZE|Grid Size|0.0|None|1.0
+ParameterNumber|USER_COLS|Cols|1.0|None|100
+ParameterNumber|USER_ROWS|Rows|1.0|None|100
+OutputRaster|TARGET_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RankFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/RankFilter.txt
new file mode 100644
index 0000000..b676b15
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RankFilter.txt
@@ -0,0 +1,7 @@
+Rank Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|MODE|Search Mode|[0] Square;[1] Circle
+ParameterNumber|RADIUS|Radius|1.0|None|1
+ParameterNumber|RANK|Rank [Percent]|None|None|50
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RealSurfaceArea.txt b/python/plugins/processing/algs/saga/description/2.3.0/RealSurfaceArea.txt
new file mode 100644
index 0000000..065c34e
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RealSurfaceArea.txt
@@ -0,0 +1,4 @@
+Real Surface Area
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+OutputRaster|AREA|Surface Area
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ReclassifyGridValues.txt b/python/plugins/processing/algs/saga/description/2.3.0/ReclassifyGridValues.txt
new file mode 100644
index 0000000..d76e5a5
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ReclassifyGridValues.txt
@@ -0,0 +1,18 @@
+Reclassify Grid Values
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|METHOD|Method|[0] single;[1] range;[2] simple table
+ParameterNumber|OLD|old value (for single value change)|None|None|0.0
+ParameterNumber|NEW|new value (for single value change)|None|None|1.0
+ParameterSelection|SOPERATOR|operator (for single value change)|[0] =;[1] <;[2] <=;[3] >=;[4] >
+ParameterNumber|MIN|minimum value (for range)|None|None|0.0
+ParameterNumber|MAX|maximum value (for range)|None|None|1.0
+ParameterNumber|RNEW|new value(for range)|None|None|2.0
+ParameterSelection|ROPERATOR|operator (for range)|[0] <=;[1] <
+ParameterFixedTable|RETAB|Lookup Table|3|minimum;maximum;new|False
+ParameterSelection|TOPERATOR|operator (for table)|[0] min <= value < max;[1] min <= value <= max;[2] min < value <= max;[3] min < value < max
+ParameterBoolean|NODATAOPT      |replace no data values|True
+ParameterNumber|NODATA|new value for no data values|None|None|0.0
+ParameterBoolean|OTHEROPT       |replace other values|True
+ParameterNumber|OTHERS|new value for other values|None|None|0.0
+OutputRaster|RESULT|Reclassified Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RegressionAnalysis(PointsGrid).txt b/python/plugins/processing/algs/saga/description/2.3.0/RegressionAnalysis(PointsGrid).txt
new file mode 100644
index 0000000..fd41340
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RegressionAnalysis(PointsGrid).txt
@@ -0,0 +1,9 @@
+Regression analysis|Regression Analysis (Points/Grid)
+statistics_regression
+ParameterRaster|GRID|Grid|False
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterTableField|ATTRIBUTE|Attribute|SHAPES|-1|False
+ParameterSelection|INTERPOL|Grid Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+ParameterSelection|METHOD|Regression Function|[0] Y = a + b * X (linear);[1] Y = a + b / X;[2] Y = a / (b - X);[3] Y = a * X^b (power);[4] Y = a e^(b * X) (exponential);[5] Y = a + b * ln(X) (logarithmic)
+OutputRaster|REGRESSION|Regression
+OutputVector|RESIDUAL|Residuals
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RelativeHeightsandSlopePositions.txt b/python/plugins/processing/algs/saga/description/2.3.0/RelativeHeightsandSlopePositions.txt
new file mode 100644
index 0000000..ab3c30b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RelativeHeightsandSlopePositions.txt
@@ -0,0 +1,11 @@
+Relative Heights and Slope Positions
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|W|w|None|None|0.5
+ParameterNumber|T|t|None|None|10.0
+ParameterNumber|E|e|None|None|2.0
+OutputRaster|HO|Slope Height
+OutputRaster|HU|Valley Depth
+OutputRaster|NH|Normalized Height
+OutputRaster|SH|Standardized Height
+OutputRaster|MS|Mid-Slope Positon
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RemoveDuplicatePoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/RemoveDuplicatePoints.txt
new file mode 100644
index 0000000..5a4d4c1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RemoveDuplicatePoints.txt
@@ -0,0 +1,7 @@
+Remove Duplicate Points
+shapes_points
+ParameterVector|POINTS|Points|-1|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterSelection|METHOD|Point to Keep|[0] first point;[1] last point;[2] point with minimum attribute value;[3] point with maximum attribute value
+ParameterSelection|NUMERIC|Numeric Attribute Values|[0] take value from the point to be kept;[1] minimum value of all duplicates;[2] maximum value of all duplicates;[3] mean value of all duplicates
+OutputVector|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Representativeness(Grid).txt b/python/plugins/processing/algs/saga/description/2.3.0/Representativeness(Grid).txt
new file mode 100644
index 0000000..35a19a4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Representativeness(Grid).txt
@@ -0,0 +1,6 @@
+Representativeness|Representativeness (Grid)
+statistics_grid
+ParameterRaster|INPUT|Grid|False
+ParameterNumber|RADIUS|Radius (Cells)|1.0|None|10
+ParameterNumber|EXPONENT|Exponent|None|None|1
+OutputRaster|RESULT|Representativeness
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Resampling.txt b/python/plugins/processing/algs/saga/description/2.3.0/Resampling.txt
new file mode 100644
index 0000000..d07dffa
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Resampling.txt
@@ -0,0 +1,12 @@
+Resampling
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterBoolean|KEEP_TYPE|Preserve Data Type|True
+Hardcoded|-TARGET_DEFINITION 0
+ParameterSelection|SCALE_UP|Upscaling Method|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation;[5] Mean Value;[6] Mean Value (cell area weighted);[7] Minimum Value;[8] Maximum Value;[9] Majority
+ParameterSelection|SCALE_DOWN|Downscaling Method|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+ParameterRaster|TARGET_TEMPLATE|Target system|True
+OutputRaster|OUTPUT|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ResidualAnalysis(Grid).txt b/python/plugins/processing/algs/saga/description/2.3.0/ResidualAnalysis(Grid).txt
new file mode 100644
index 0000000..33471e7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ResidualAnalysis(Grid).txt
@@ -0,0 +1,18 @@
+Residual analysis|Residual Analysis (Grid)
+statistics_grid
+ParameterRaster|GRID|Grid|False
+ParameterSelection|MODE|Search Mode|[0] square;[1] circle|1
+ParameterNumber|RADIUS|Radius (Cells)|1.0|None|7
+ParameterBoolean|BCENTER|Include Center Cell|True
+ParameterSelection|DISTANCE_WEIGHTING_DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting|0
+ParameterNumber|DISTANCE_WEIGHTING_DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1
+ParameterBoolean|DISTANCE_WEIGHTING_DW_IDW_OFFSET|Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|0.0|None|1.0
+OutputRaster|MEAN|Mean Value
+OutputRaster|DIFF|Difference from Mean Value
+OutputRaster|STDDEV|Standard Deviation
+OutputRaster|RANGE|Value Range
+OutputRaster|MIN|Minimum Value
+OutputRaster|MAX|Maximum Value
+OutputRaster|DEVMEAN|Deviation from Mean Value
+OutputRaster|PERCENT|Percentile
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/RunningAverage.txt b/python/plugins/processing/algs/saga/description/2.3.0/RunningAverage.txt
new file mode 100644
index 0000000..c0e23d7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/RunningAverage.txt
@@ -0,0 +1,6 @@
+Running Average
+table_calculus
+ParameterTable|INPUT|Input|False
+ParameterTableField|FIELD|Attribute|INPUT|-1|False
+ParameterNumber|COUNT|Number of Records|0.0|None|10
+OutputTable|OUTPUT|Output
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SAGAWetnessIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/SAGAWetnessIndex.txt
new file mode 100644
index 0000000..564f34b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SAGAWetnessIndex.txt
@@ -0,0 +1,13 @@
+SAGA Wetness Index
+ta_hydrology
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|SUCTION|Suction|0.0|None|10.0
+ParameterSelection|AREA_TYPE|Type of Area|[0] absolute catchment area;[1] square root of catchment area;[2] specific catchment area
+ParameterSelection|SLOPE_TYPE|Type of Slope|[0] local slope;[1] catchment slope
+ParameterNumber|SLOPE_MIN|Suction|0.0|None|0.0
+ParameterNumber|SLOPE_OFF|Suction|0.0|None|0.1
+ParameterNumber|SLOPE_WEIGHT|Suction|0.0|None|1.0
+OutputRaster|AREA|Catchment area
+OutputRaster|SLOPE|Catchment slope
+OutputRaster|AREA_MOD|Modified catchment area
+OutputRaster|TWI|Topographic Wetness Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SeedGeneration.txt b/python/plugins/processing/algs/saga/description/2.3.0/SeedGeneration.txt
new file mode 100644
index 0000000..be4f357
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SeedGeneration.txt
@@ -0,0 +1,11 @@
+Seed Generation
+imagery_segmentation
+ParameterMultipleInput|GRIDS|Features|3|False
+ParameterNumber|FACTOR|Bandwidth (Cells)|0.0|None|2
+ParameterSelection|TYPE_SURFACE|Type of Surface|[0] smoothed surface;[1] variance (a);[2] variance (b)
+ParameterSelection|TYPE_SEEDS|Extraction of...|[0] minima;[1] maxima;[2] minima and maxima
+ParameterSelection|TYPE_MERGE|Feature Aggregation|[0] additive;[1] multiplicative
+ParameterBoolean|NORMALIZE         |Normalized|True
+OutputRaster|SURFACE|Surface
+OutputRaster|SEEDS_GRID|Seeds Grid
+OutputVector|SEEDS|Seeds
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Separatepointsbydirection.txt b/python/plugins/processing/algs/saga/description/2.3.0/Separatepointsbydirection.txt
new file mode 100644
index 0000000..db1ec26
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Separatepointsbydirection.txt
@@ -0,0 +1,6 @@
+Separate points by direction
+shapes_points
+ParameterVector|POINTS|Points|0|False
+ParameterNumber|DIRECTIONS|Number of Directions|1.0|None|4
+ParameterNumber|TOLERANCE|Tolerance (Degree)|0.0|None|5
+OutputVector|OUTPUT|Point direction
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ShapesBuffer.txt b/python/plugins/processing/algs/saga/description/2.3.0/ShapesBuffer.txt
new file mode 100644
index 0000000..57e0051
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ShapesBuffer.txt
@@ -0,0 +1,10 @@
+Shapes Buffer (Attribute distance)|Shapes Buffer
+shapes_tools
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterTableField|DIST_FIELD|Buffer Distance|SHAPES|-1|False
+ParameterNumber|DIST_SCALE|Scaling Factor for Attribute Value|None|None|1.0
+ParameterNumber|NZONES|Number of Buffer Zones|1.0|None|1.0
+ParameterNumber|DARC|Arc Vertex Distance [Degree]|0.01|45.0|5.0
+ParameterBoolean|DISSOLVE       |Dissolve Buffers|True
+ParameterBoolean|POLY_INNER       |Inner Buffer|False
+OutputVector|BUFFER|Buffer
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ShapesBufferFixed.txt b/python/plugins/processing/algs/saga/description/2.3.0/ShapesBufferFixed.txt
new file mode 100644
index 0000000..c8c3878
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ShapesBufferFixed.txt
@@ -0,0 +1,9 @@
+Shapes Buffer (Fixed distance)|Shapes Buffer
+shapes_tools
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterNumber|DIST_FIELD_DEFAULT|Buffer distance|0.0|None|100.0
+ParameterNumber|NZONES|Number of Buffer Zones|1.0|None|1.0
+ParameterNumber|DARC|Arc Vertex Distance [Degree]|0.01|45.0|5.0
+ParameterBoolean|DISSOLVE       |Dissolve Buffers|True
+ParameterBoolean|POLY_INNER       |Inner Buffer|False
+OutputVector|BUFFER|Buffer
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ShapestoGrid.txt b/python/plugins/processing/algs/saga/description/2.3.0/ShapestoGrid.txt
new file mode 100644
index 0000000..7c8db2b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ShapestoGrid.txt
@@ -0,0 +1,14 @@
+Shapes to Grid
+grid_gridding
+Hardcoded|-TARGET_DEFINITION 0
+ParameterVector|INPUT|Shapes|-1|False
+ParameterTableField|FIELD|Attribute|INPUT|-1|False
+ParameterSelection|OUTPUT|Output Values|[0] data / no-data;[1] index number;[2] attribute|2
+ParameterSelection|MULTIPLE|Method for Multiple Values|[0] first;[1] last;[2] minimum;[3] maximum;[4] mean|4
+ParameterSelection|LINE_TYPE|Method for Lines|[0] thin;[1] thick
+ParameterSelection|POLY_TYPE|Method for Lines|[0] node;[1] cell
+ParameterSelection|GRID_TYPE|Preferred Target Grid Type|[0] Integer (1 byte);[1] Integer (2 byte);[2] Integer (4 byte);[3] Floating Point (4 byte);[4] Floating Point (8 byte)|3
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|GRID|Rasterized
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SharedPolygonEdges.txt b/python/plugins/processing/algs/saga/description/2.3.0/SharedPolygonEdges.txt
new file mode 100644
index 0000000..c21fb21
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SharedPolygonEdges.txt
@@ -0,0 +1,8 @@
+Shared Polygon Edges
+shapes_polygons
+ParameterVector|POLYGONS|Polygons|2|False
+ParameterTableField|ATTRIBUTE|Attribute|POLYGONS|-1|False
+ParameterNumber|EPSILON|Tolerance|0|None|0.000
+ParameterBoolean|VERTICES|Check vertices|False
+ParameterBoolean|DOUBLE|Double edges|False
+OutputVector|EDGES|Edges
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ShrinkAndExpand.txt b/python/plugins/processing/algs/saga/description/2.3.0/ShrinkAndExpand.txt
new file mode 100644
index 0000000..8967545
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ShrinkAndExpand.txt
@@ -0,0 +1,8 @@
+Shrink and Expand
+grid_tools
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|OPERATION|Operation|[0] Shrink;[1] Expand;[2] shrink and expand;[3] expand and shrink|3
+ParameterSelection|CIRCLE|Search Mode|[0] Square;[1] Circle
+ParameterNumber|RADIUS|Radius|1|None|1
+ParameterSelection|EXPAND|Method|[0] min;[1] max;[2] mean;[3] majority|3
+OutputRaster|RESULT|Result Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SimpleFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/SimpleFilter.txt
new file mode 100644
index 0000000..580d42a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SimpleFilter.txt
@@ -0,0 +1,7 @@
+Simple Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterSelection|MODE|Search Mode|[0] Square;[1] Circle
+ParameterSelection|METHOD|Filter|[0] Smooth;[1] Sharpen;[2] Edge
+ParameterNumber|RADIUS|Radius|None|None|2
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SimpleRegionGrowing.txt b/python/plugins/processing/algs/saga/description/2.3.0/SimpleRegionGrowing.txt
new file mode 100644
index 0000000..9fd3d0a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SimpleRegionGrowing.txt
@@ -0,0 +1,14 @@
+Simple Region Growing
+imagery_segmentation
+ParameterRaster|SEEDS|Seeds|False
+ParameterMultipleInput|FEATURES|Features|3|False
+ParameterSelection|METHOD|Method|[0] feature space and position;[1] feature space
+ParameterSelection|NEIGHBOUR|Neighbourhood|[0] 4 (von Neumann);[1] 8 (Moore)
+ParameterNumber|SIG_1|Variance in Feature Space|None|None|1.0
+ParameterNumber|SIG_2|Variance in Position Space|None|None|1.0
+ParameterNumber|THRESHOLD|Threshold - Similarity|None|None|0.0
+ParameterBoolean|REFRESH         |Refresh|True
+ParameterNumber|LEAFSIZE|Leaf Size (for Speed Optimisation)|None|None|256
+OutputRaster|SEGMENTS|Segments
+OutputRaster|SIMILARITY|Similarity
+OutputTable|TABLE|Seeds
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Simulation.txt b/python/plugins/processing/algs/saga/description/2.3.0/Simulation.txt
new file mode 100644
index 0000000..61e9234
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Simulation.txt
@@ -0,0 +1,16 @@
+Simulation
+sim_fire_spreading
+ParameterRaster|DEM|DEM|False
+ParameterRaster|FUEL|Fuel Model|False
+ParameterRaster|WINDSPD|Wind Speed|False
+ParameterRaster|WINDDIR|Wind Direction|False
+ParameterRaster|M1H|Dead Fuel Moisture 1H|False
+ParameterRaster|M10H|Dead Fuel Moisture 10H|False
+ParameterRaster|M100H|Dead Fuel Moisture 100H|False
+ParameterRaster|MHERB|Herbaceous Fuel Moisture|False
+ParameterRaster|MWOOD|Wood Fuel Moisture|False
+ParameterRaster|IGNITION|Ignition Points|False
+ParameterBoolean|UPDATEVIEW     |Update View|True
+OutputRaster|TIME|Time
+OutputRaster|FLAME|Flame Length
+OutputRaster|INTENSITY|Intensity
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SinkDrainageRouteDetection.txt b/python/plugins/processing/algs/saga/description/2.3.0/SinkDrainageRouteDetection.txt
new file mode 100644
index 0000000..c9fc911
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SinkDrainageRouteDetection.txt
@@ -0,0 +1,6 @@
+Sink Drainage Route Detection
+ta_preprocessor
+ParameterRaster|ELEVATION|Elevation|False
+ParameterBoolean|THRESHOLD       |Threshold|True
+ParameterNumber|THRSHEIGHT|Threshold Height|None|None|100.0
+OutputRaster|SINKROUTE|Sink Route
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SinkRemoval.txt b/python/plugins/processing/algs/saga/description/2.3.0/SinkRemoval.txt
new file mode 100644
index 0000000..16ccd4d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SinkRemoval.txt
@@ -0,0 +1,8 @@
+Sink Removal
+ta_preprocessor
+ParameterRaster|DEM|DEM|False
+ParameterRaster|SINKROUTE|Sink Route|True
+ParameterSelection|METHOD|Method|[0] Deepen Drainage Routes;[1] Fill Sinks
+ParameterBoolean|THRESHOLD        |Threshold|True
+ParameterNumber|THRSHEIGHT|Threshold Height|None|None|100.0
+OutputRaster|DEM_PREPROC|Preprocessed DEM
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SkyViewFactor.txt b/python/plugins/processing/algs/saga/description/2.3.0/SkyViewFactor.txt
new file mode 100644
index 0000000..2114c28
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SkyViewFactor.txt
@@ -0,0 +1,12 @@
+Sky View Factor
+ta_lighting
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|RADIUS|Maximum Search Radius|0.0|None|10000
+ParameterSelection|METHOD|Method|[0] multi scale;[1] sectors
+ParameterNumber|DLEVEL|Multi Scale Factor|1.25|None|3.00
+ParameterNumber|NDIRS|Number of Sectors|3|None|8
+OutputRaster|VISIBLE|Visible Sky
+OutputRaster|SVF|Sky View Factor
+OutputRaster|SIMPLE|Sky View Factor (Simplified)
+OutputRaster|TERRAIN|Terrain View Factor
+OutputRaster|DISTANCE|Terrain View Factor
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Slope,Aspect,Curvature.txt b/python/plugins/processing/algs/saga/description/2.3.0/Slope,Aspect,Curvature.txt
new file mode 100644
index 0000000..e9d707c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Slope,Aspect,Curvature.txt
@@ -0,0 +1,18 @@
+Slope, Aspect, Curvature
+ta_morphometry
+ParameterRaster|ELEVATION|Elevation|False
+ParameterSelection|METHOD|Method|[0] Maximum Slope (Travis et al. 1975);[1] Maximum Triangle Slope (Tarboton 1997);[2] Least Squares Fitted Plane (Horn 1981, Costa-Cabral & Burgess 1996);[3] 6 parameter 2nd order polynom (Evans 1979);[4] 6 parameter 2nd order polynom (Heerdegen & Beran 1982);[5] 6 parameter 2nd order polynom (Bauer, Rohdenburg, Bork 1985);[6] 9 parameter 2nd order polynom (Zevenbergen & Thorne 1987);[7]10 parameter 3rd order polynom (Haralick 1983)|6
+ParameterSelection|UNIT_SLOPE|Slope Units|[0] radians;[1] degree;[2] percent|1
+ParameterSelection|UNIT_ASPECT|Aspect Units|[0] radians;[1] degree|1
+OutputRaster|SLOPE|Slope
+OutputRaster|ASPECT|Aspect
+OutputRaster|C_GENE|General Curvature
+OutputRaster|C_PLAN|Plan Curvature
+OutputRaster|C_PROF|Profile Curvature
+OutputRaster|C_TANG|Tangential Curvature
+OutputRaster|C_LONG|Longitudinal Curvature
+OutputRaster|C_CROS|Cross-Sectional Curvature
+OutputRaster|C_MINI|Minimal Curvature
+OutputRaster|C_MAXI|Maximal Curvature
+OutputRaster|C_TOTA|Total Curvature
+OutputRaster|C_ROTO|Flow-Line Curvature
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SlopeLength.txt b/python/plugins/processing/algs/saga/description/2.3.0/SlopeLength.txt
new file mode 100644
index 0000000..f0e8d33
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SlopeLength.txt
@@ -0,0 +1,4 @@
+Slope Length
+ta_hydrology
+ParameterRaster|DEM|Elevation|False
+OutputRaster|LENGTH|Slope Length
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SoilTextureClassification.txt b/python/plugins/processing/algs/saga/description/2.3.0/SoilTextureClassification.txt
new file mode 100644
index 0000000..9752948
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SoilTextureClassification.txt
@@ -0,0 +1,7 @@
+Soil Texture Classification
+grid_analysis
+ParameterRaster|SAND|Sand|True
+ParameterRaster|SILT|Silt|True
+ParameterRaster|CLAY|Clay|True
+OutputRaster|TEXTURE|Soil Texture
+OutputRaster|SUM|Sum
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SpatialPointPatternAnalysis.txt b/python/plugins/processing/algs/saga/description/2.3.0/SpatialPointPatternAnalysis.txt
new file mode 100644
index 0000000..4a90797
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SpatialPointPatternAnalysis.txt
@@ -0,0 +1,7 @@
+Spatial Point Pattern Analysis
+statistics_points
+ParameterVector|POINTS|Points|0|False
+ParameterNumber|STEP|Vertex Distance [Degree]|None|None|5
+OutputVector|CENTRE|Mean Centre
+OutputVector|STDDIST|Standard Distance
+OutputVector|BBOX|Bounding Box
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SplitShapesLayerRandomly.txt b/python/plugins/processing/algs/saga/description/2.3.0/SplitShapesLayerRandomly.txt
new file mode 100644
index 0000000..8d2648b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SplitShapesLayerRandomly.txt
@@ -0,0 +1,7 @@
+Split Shapes Layer Randomly
+shapes_tools
+ParameterVector|SHAPES|Shapes|-1|False
+ParameterNumber|PERCENT|Split ratio (%)|0|100|50
+ParameterBoolean|EXACT       |Split exactly|True
+OutputVector|A|Group A
+OutputVector|B|Group B
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/StatisticsforGrids.txt b/python/plugins/processing/algs/saga/description/2.3.0/StatisticsforGrids.txt
new file mode 100644
index 0000000..e21300c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/StatisticsforGrids.txt
@@ -0,0 +1,14 @@
+Statistics for Grids
+statistics_grid
+ParameterMultipleInput|GRIDS|Grids|3|False
+ParameterNumber|PCTL_VAL|Percentile|0.0|100.0|50.0
+OutputRaster|MEAN|Arithmetic Mean
+OutputRaster|MIN|Minimum
+OutputRaster|MAX|Maximum
+OutputRaster|VAR|Variance
+OutputRaster|SUM|Sum
+OutputRaster|RANGE|Range
+OutputRaster|PCTL|Percentile
+OutputRaster|STDDEV|Standard Deviation
+OutputRaster|STDDEVLO|Mean less Standard Deviation
+OutputRaster|STDDEVHI|Mean plus Standard Deviation
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/StrahlerOrder.txt b/python/plugins/processing/algs/saga/description/2.3.0/StrahlerOrder.txt
new file mode 100644
index 0000000..87d9147
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/StrahlerOrder.txt
@@ -0,0 +1,4 @@
+Strahler Order
+ta_channels
+ParameterRaster|DEM|Elevation|False
+OutputRaster|STRAHLER|Strahler Order
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/StreamPowerIndex.txt b/python/plugins/processing/algs/saga/description/2.3.0/StreamPowerIndex.txt
new file mode 100644
index 0000000..e33da9b
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/StreamPowerIndex.txt
@@ -0,0 +1,6 @@
+Stream Power Index
+ta_hydrology
+ParameterRaster|SLOPE|Slope|False
+ParameterRaster|AREA|Catchment Area|False
+ParameterSelection|CONV|Area Conversion|[0] no conversion (areas already given as specific catchment area);[1] 1 / cell size (pseudo specific catchment area)
+OutputRaster|SPI|Stream Power Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SuccessiveFlowRouting.txt b/python/plugins/processing/algs/saga/description/2.3.0/SuccessiveFlowRouting.txt
new file mode 100644
index 0000000..93aea05
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SuccessiveFlowRouting.txt
@@ -0,0 +1,7 @@
+Successive Flow Routing
+sim_qm_of_esp
+ParameterRaster|DEM|DEM|False
+ParameterNumber|ITERATIONS|Iterations|1|None|100
+ParameterNumber|RUNOFF|Runoff|None|None|1.00
+ParameterNumber|MANNING|Manning's Roughness|None|None|0.20
+OutputRaster|FLOW|Flow
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SupervisedClassification.txt b/python/plugins/processing/algs/saga/description/2.3.0/SupervisedClassification.txt
new file mode 100644
index 0000000..96afab5
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SupervisedClassification.txt
@@ -0,0 +1,22 @@
+Supervised Classification
+imagery_classification
+ParameterMultipleInput|GRIDS|Grids|3.0|False
+ParameterVector|ROI|Training Areas|2|False
+ParameterTableField|ROI_ID|Class Identifier|ROI|-1|False
+ParameterTable|STATS|Class Statistics|False
+ParameterSelection|STATS_SRC|Get Class Statistics from...|[0] training areas;[1] table
+ParameterSelection|METHOD|Method|[0] Binary Encoding;[1] Parallelepiped;[2] Minimum Distance;[3] Mahalanobis Distance;[4] Maximum Likelihood;[5] Spectral Angle Mapping; [6] Winner Takes All
+ParameterBoolean|NORMALISE|Normalise|False
+ParameterNumber|THRESHOLD_DIST|Distance Threshold|0.0|None|0.0
+ParameterNumber|THRESHOLD_PROB|Probability Threshold (Percent)|0.0|100.0|0.0
+ParameterSelection|RELATIVE_PROB|Probability Reference|[0] absolute;[1] relative
+ParameterNumber|THRESHOLD_ANGLE|Spectral Angle Threshold (Degree)|0.0|90.0|0.0
+ParameterBoolean|WTA_0|Binary Encoding|False
+ParameterBoolean|WTA_1|Parallelepiped|False
+ParameterBoolean|WTA_2|Minimum Distance|False
+ParameterBoolean|WTA_3|Mahalanobis Distance|False
+ParameterBoolean|WTA_4|Maximum Likelihood|False
+ParameterBoolean|WTA_5|Spectral Angle Mapping|False
+OutputTable|CLASS_INFO|Class Information
+OutputRaster|CLASSES|Classification
+OutputRaster|QUALITY|Quality
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/SurfaceSpecificPoints.txt b/python/plugins/processing/algs/saga/description/2.3.0/SurfaceSpecificPoints.txt
new file mode 100644
index 0000000..b0762ce
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/SurfaceSpecificPoints.txt
@@ -0,0 +1,6 @@
+Surface Specific Points
+ta_morphometry
+ParameterRaster|ELEVATION|Elevation|False
+ParameterSelection|METHOD|Method|[0] Mark Highest Neighbour;[1] Opposite Neighbours;[2] Flow Direction;[3] Flow Direction (up and down);[4] Peucker & Douglas
+ParameterNumber|THRESHOLD|Threshold|None|None|2.0
+OutputRaster|RESULT|Result
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TPIBasedLandformClassification.txt b/python/plugins/processing/algs/saga/description/2.3.0/TPIBasedLandformClassification.txt
new file mode 100644
index 0000000..bfed438
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TPIBasedLandformClassification.txt
@@ -0,0 +1,12 @@
+TPI Based Landform Classification
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|RADIUS_A_MIN|Min Radius A|None|None|0
+ParameterNumber|RADIUS_A_MAX|Max Radius A|None|None|100
+ParameterNumber|RADIUS_B_MIN|Min Radius B|None|None|0
+ParameterNumber|RADIUS_B_MAX|Max Radius B|None|None|1000
+ParameterSelection|DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1
+ParameterBoolean|DW_IDW_OFFSET     |Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|75.0
+OutputRaster|LANDFORMS|Landforms
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TerrainRuggednessIndex(TRI).txt b/python/plugins/processing/algs/saga/description/2.3.0/TerrainRuggednessIndex(TRI).txt
new file mode 100644
index 0000000..bec50e9
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TerrainRuggednessIndex(TRI).txt
@@ -0,0 +1,9 @@
+Terrain Ruggedness Index (TRI)
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|RADIUS|Radius (Cells)|1.0|None|1
+ParameterSelection|DISTANCE_WEIGHTING_DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DISTANCE_WEIGHTING_DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1
+ParameterBoolean|DISTANCE_WEIGHTING_DW_IDW_OFFSET     |Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|0.0|None|1.0
+OutputRaster|TRI|Terrain Ruggedness Index (TRI)
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline(TIN).txt b/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline(TIN).txt
new file mode 100644
index 0000000..0ded5a7
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline(TIN).txt
@@ -0,0 +1,12 @@
+Thin Plate Spline (TIN)
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterNumber|REGULARISATION|Regularisation|0.0000|None|0.0001
+ParameterSelection|LEVEL|Neighbourhood|[0] immediate;[1] level 1;[2] level 2
+ParameterBoolean|FRAME|Add Frame|True
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline.txt b/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline.txt
new file mode 100644
index 0000000..f55c020
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ThinPlateSpline.txt
@@ -0,0 +1,17 @@
+Thin Plate Spline
+grid_spline
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+ParameterNumber|REGULARISATION|Regularisation|0.0000|None|0.0001
+ParameterSelection|SEARCH_RANGE|Search Range|[0] local;[1] global
+ParameterNumber|SEARCH_RADIUS|Search Radius|0.0|None|1000.0
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Maximum Number of Points|1|None|16
+ParameterNumber|SEARCH_POINTS_MAX|Maximum Number of Points|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+ParameterRaster|TARGET_TEMPLATE|Target system|True
+OutputRaster|TARGET_OUT_GRID|Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ThresholdBuffer.txt b/python/plugins/processing/algs/saga/description/2.3.0/ThresholdBuffer.txt
new file mode 100644
index 0000000..ef26b40
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ThresholdBuffer.txt
@@ -0,0 +1,8 @@
+Threshold Buffer
+grid_tools
+ParameterRaster|FEATURES|Features Grid|False
+ParameterRaster|VALUE|Value Grid|False
+ParameterRaster|THRESHOLDGRID|Threshold Grid|True
+ParameterNumber|THRESHOLD|Threshold|None|None|0.0
+ParameterSelection|THRESHOLDTYPE|Threshold Type|[0] Absolute;[1] Relative from cell value
+OutputRaster|BUFFER|Buffer Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TopographicCorrection.txt b/python/plugins/processing/algs/saga/description/2.3.0/TopographicCorrection.txt
new file mode 100644
index 0000000..7f80c24
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TopographicCorrection.txt
@@ -0,0 +1,11 @@
+Topographic Correction
+ta_lighting
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|ORIGINAL|Original Image|False
+ParameterNumber|AZI|Azimuth|None|None|180.0
+ParameterNumber|HGT|Height|None|None|45.0
+ParameterSelection|METHOD|Method|[0] Cosine Correction (Teillet et al. 1982);[1] Cosine Correction (Civco 1989);[2] Minnaert Correction;[3] Minnaert Correction with Slope (Riano et al. 2003);[4] Minnaert Correction with Slope (Law & Nichol 2004);[5] C Correction;[6] Normalization (after Civco, modified by Law & Nichol)
+ParameterNumber|MINNAERT|Minnaert Correction|None|None|0.5
+ParameterNumber|MAXCELLS|Maximum Cells (C Correction Analysis)|None|None|1000
+ParameterSelection|MAXVALUE|Value Range|[0] 1 byte (0-255);[1] 2 byte (0-65535)
+OutputRaster|CORRECTED|Corrected Image
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TopographicPositionIndex(TPI).txt b/python/plugins/processing/algs/saga/description/2.3.0/TopographicPositionIndex(TPI).txt
new file mode 100644
index 0000000..13a397f
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TopographicPositionIndex(TPI).txt
@@ -0,0 +1,11 @@
+Topographic Position Index (TPI)
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterBoolean|STANDARD                          |Standardize|True
+ParameterNumber|RADIUS_MIN|Min Radius|0.0|None|0.0
+ParameterNumber|RADIUS_MAX|Max Radius|None|None|100.0
+ParameterSelection|DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DW_IDW_POWER|Inverse Distance Weighting Power|None|None|1
+ParameterBoolean|DW_IDW_OFFSET     |Inverse Distance Offset|True
+ParameterNumber|DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|None|None|75.0
+OutputRaster|TPI|Topographic Position Index
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TopographicWetnessIndex(TWI).txt b/python/plugins/processing/algs/saga/description/2.3.0/TopographicWetnessIndex(TWI).txt
new file mode 100644
index 0000000..b2d63cc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TopographicWetnessIndex(TWI).txt
@@ -0,0 +1,8 @@
+Topographic Wetness Index (TWI)
+ta_hydrology
+ParameterRaster|SLOPE|Slope|False
+ParameterRaster|AREA|Catchment Area|False
+ParameterRaster|TRANS|Transmissivity|True
+ParameterSelection|CONV|Area Conversion|[0] no conversion (areas already given as specific catchment area);[1] 1 / cell size (pseudo specific catchment area)|1
+ParameterSelection|METHOD|Method (TWI)|[0] Standard;[1] TOPMODEL
+OutputRaster|TWI|Topographic Wetness Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Transectthroughpolygonshapefile.txt b/python/plugins/processing/algs/saga/description/2.3.0/Transectthroughpolygonshapefile.txt
new file mode 100644
index 0000000..99eb665
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Transectthroughpolygonshapefile.txt
@@ -0,0 +1,6 @@
+Transect through polygon shapefile
+shapes_transect
+ParameterVector|TRANSECT|Line Transect(s)|1|False
+ParameterVector|THEME|Theme|-1|False
+ParameterTableField|THEME_FIELD|Theme Field|THEME|-1|False
+OutputTable|TRANSECT_RESULT|Result table
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TransformShapes.txt b/python/plugins/processing/algs/saga/description/2.3.0/TransformShapes.txt
new file mode 100644
index 0000000..40e5862
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TransformShapes.txt
@@ -0,0 +1,11 @@
+Transform Shapes
+shapes_tools
+ParameterVector|IN|Shapes|-1|False
+ParameterNumber|DX|dX|None|None|0.0
+ParameterNumber|DY|dY|None|None|0.0
+ParameterNumber|ANGLE|Angle|None|None|0.0
+ParameterNumber|SCALEX|Scale Factor X|None|None|1.0
+ParameterNumber|SCALEY|Scale Factor Y|None|None|1.0
+ParameterNumber|ANCHORX|X|None|None|0.0
+ParameterNumber|ANCHORY|Y|None|None|0.0
+OutputVector|OUT|Transformed
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/TransposeGrids.txt b/python/plugins/processing/algs/saga/description/2.3.0/TransposeGrids.txt
new file mode 100644
index 0000000..8ff6bff
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/TransposeGrids.txt
@@ -0,0 +1,6 @@
+Transpose Grids
+grid_tools
+ParameterRaster|GRIDS|Input Grid|False
+ParameterBoolean|MIRROR_X|Mirror Horizontally|False
+ParameterBoolean|MIRROR_Y|Mirror Vertically|False
+OutputRaster|TRANSPOSED|Transposed Grid
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/Triangulation.txt b/python/plugins/processing/algs/saga/description/2.3.0/Triangulation.txt
new file mode 100644
index 0000000..39a2dcb
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/Triangulation.txt
@@ -0,0 +1,9 @@
+Triangulation
+grid_gridding
+ParameterVector|SHAPES|Points|0|False
+ParameterTableField|FIELD|Attribute|SHAPES|-1|False
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|TARGET_OUT_GRID|Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging(Global).txt b/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging(Global).txt
new file mode 100644
index 0000000..c27e4e4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging(Global).txt
@@ -0,0 +1,32 @@
+Regression Kriging
+statistics_kriging
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterMultipleInput|PREDICTORS|Predictors|3|False
+OutputRaster|REGRESSION|Regression
+OutputRaster|PREDICTION|Prediction
+OutputRaster|RESIDUALS|Residuals
+OutputRaster|VARIANCE|Quality Measure
+ParameterSelection|TQUALITY|Type of Quality Measure|[0] standard deviation;[1] variance
+ParameterBoolean|LOG|Logarithmic Transformation|True
+ParameterBoolean|BLOCK|Block Kriging|True
+ParameterNumber|DBLOCK|Block Size|0|None|100
+ParameterNumber|VAR_MAXDIST|Maximum Distance|None|None|-1.0
+ParameterNumber|VAR_NCLASSES|Lag Distance Classes|1|None|100
+ParameterNumber|VAR_NSKIP|Skip|1|None|1
+ParameterString|VAR_MODEL|Variogram Model|a + b * x
+OutputTable|INFO_COEFF|Regression: Coefficients
+OutputTable|INFO_MODEL|Regression: Model
+OutputTable|INFO_STEPS|Regression: Steps
+ParameterBoolean|COORD_X|Include X Coordinate|False
+ParameterBoolean|COORD_Y|Include Y Coordinate|False
+ParameterBoolean|INTERCEPT|Intercept|True
+ParameterSelection|METHOD|Method|[0] include all;[1] forward;[2] backward;[3] stepwise|3
+ParameterNumber|P_VALUE|Significance Level|0|100.0|5.0
+ParameterSelection|INTERPOL|Grid Interpolation|[0] Nearest Neighbor;[1] Bilinear Interpolation;[2] Inverse Distance Interpolation;[3] Bicubic Spline Interpolation;[4] B-Spline Interpolation
+ParameterSelection|SEARCH_RANGE|Search Range|[0] local;[1] global
+ParameterNumber|SEARCH_RADIUS|Maximum Search Distance|0|None|1000
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging.txt b/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging.txt
new file mode 100644
index 0000000..45d4d35
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/UniversalKriging.txt
@@ -0,0 +1,24 @@
+Simple Kriging
+statistics_kriging
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterSelection|TQUALITY|Type of Quality Measure|[0] standard deviation;[1] variance
+ParameterBoolean|LOG|Logarithmic Transformation|True
+ParameterBoolean|BLOCK|Block Kriging|True
+ParameterNumber|DBLOCK|Block Size|0|None|100
+ParameterNumber|VAR_MAXDIST|Maximum Distance|None|None|-1.0
+ParameterNumber|VAR_NCLASSES|Lag Distance Classes|1|None|100
+ParameterNumber|VAR_NSKIP|Skip|1|None|1
+ParameterString|VAR_MODEL|Variogram Model|a + b * x
+Hardcoded|-TARGET_DEFINITION 0
+Extent TARGET_USER_XMIN TARGET_USER_XMAX TARGET_USER_YMIN TARGET_USER_YMAX
+ParameterNumber|TARGET_USER_SIZE|Cellsize|None|None|100.0
+ParameterSelection|TARGET_USER_FITS|Fit|[0] nodes;[1] cells
+OutputRaster|PREDICTION|Prediction
+OutputRaster|VARIANCE|Quality Measure
+ParameterSelection|SEARCH_RANGE|Search Range|[0] local;[1] global
+ParameterNumber|SEARCH_RADIUS|Maximum Search Distance|0|None|1000
+ParameterSelection|SEARCH_POINTS_ALL|Number of Points|[0] maximum number of nearest points;[1] all points within search distance
+ParameterNumber|SEARCH_POINTS_MIN|Minimum|1|None|4
+ParameterNumber|SEARCH_POINTS_MAX|Maximum|1|None|20
+ParameterSelection|SEARCH_DIRECTION|Search Direction|[0] all directions;[1] quadrants
\ No newline at end of file
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/UpslopeArea.txt b/python/plugins/processing/algs/saga/description/2.3.0/UpslopeArea.txt
new file mode 100644
index 0000000..903e4ba
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/UpslopeArea.txt
@@ -0,0 +1,10 @@
+Upslope Area|4
+ta_hydrology
+ParameterRaster|TARGET|Target Area|True
+ParameterNumber|TARGET_PT_X|Target X coordinate|None|None|0.0
+ParameterNumber|TARGET_PT_Y|Target Y coordinate|None|None|0.0
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|SINKROUTE|Sink Routes|True
+ParameterSelection|METHOD|Method|[0] Deterministic 8;[1] Deterministic Infinity;[2] Multiple Flow Direction
+ParameterNumber|CONVERGE|Convergence|None|None|1.1
+OutputRaster|AREA|Upslope Area
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/UserDefinedFilter.txt b/python/plugins/processing/algs/saga/description/2.3.0/UserDefinedFilter.txt
new file mode 100644
index 0000000..e28c9e4
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/UserDefinedFilter.txt
@@ -0,0 +1,6 @@
+User Defined Filter
+grid_filter
+ParameterRaster|INPUT|Grid|False
+ParameterTable|FILTER|Filter Matrix|True
+ParameterFixedTable|FILTER_3X3|Default Filter Matrix (3x3)|3|1;2;3|True
+OutputRaster|RESULT|Filtered Grid
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VariogramCloud.txt b/python/plugins/processing/algs/saga/description/2.3.0/VariogramCloud.txt
new file mode 100644
index 0000000..74d1463
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VariogramCloud.txt
@@ -0,0 +1,7 @@
+Variogram Cloud
+statistics_points
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterNumber|DISTMAX|Maximum Distance|None|None|0.0
+ParameterNumber|NSKIP|Skip Number|None|None|1
+OutputTable|RESULT|Variogram Cloud
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VariogramSurface.txt b/python/plugins/processing/algs/saga/description/2.3.0/VariogramSurface.txt
new file mode 100644
index 0000000..4f09961
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VariogramSurface.txt
@@ -0,0 +1,9 @@
+Variogram Surface
+statistics_points
+ParameterVector|POINTS|Points|0|False
+ParameterTableField|FIELD|Attribute|POINTS|-1|False
+ParameterNumber|DISTCOUNT|Number of Distance Classes|1.0|None|10
+ParameterNumber|NSKIP|Skip Number|None|None|1
+OutputRaster|COUNT|Number of Pairs
+OutputRaster|VARIANCE|Variogram Surface
+OutputRaster|COVARIANCE|Covariance Surface
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VectorRuggednessMeasure(VRM).txt b/python/plugins/processing/algs/saga/description/2.3.0/VectorRuggednessMeasure(VRM).txt
new file mode 100644
index 0000000..072311d
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VectorRuggednessMeasure(VRM).txt
@@ -0,0 +1,9 @@
+Vector Ruggedness Measure (VRM)
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterNumber|RADIUS|Radius (Cells)|None|None|1
+ParameterSelection|DISTANCE_WEIGHTING_DW_WEIGHTING|Distance Weighting|[0] no distance weighting;[1] inverse distance to a power;[2] exponential;[3] gaussian weighting
+ParameterNumber|DISTANCE_WEIGHTING_DW_IDW_POWER|Inverse Distance Weighting Power|0.0|None|1
+ParameterBoolean|DISTANCE_WEIGHTING_DW_IDW_OFFSET     |Inverse Distance Offset|True
+ParameterNumber|DISTANCE_WEIGHTING_DW_BANDWIDTH|Gaussian and Exponential Weighting Bandwidth|0.0|None|1
+OutputRaster|VRM|Vector Terrain Ruggedness (VRM)
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VectorisingGridClasses.txt b/python/plugins/processing/algs/saga/description/2.3.0/VectorisingGridClasses.txt
new file mode 100644
index 0000000..d3e37cd
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VectorisingGridClasses.txt
@@ -0,0 +1,7 @@
+Vectorising Raster Classes
+shapes_grid
+ParameterRaster|GRID|Grid|False
+ParameterSelection|CLASS_ALL|Class Selection|[0] one single class specified by class identifier;[1] all classes|1
+ParameterNumber|CLASS_ID|Class Identifier|None|None|0
+ParameterSelection|SPLIT|Vectorised class as...|[0] one single (multi-)polygon object;[1] each island as separated polygon|1
+OutputVector|POLYGONS|Vectorized
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VegetationIndex(SlopeBased).txt b/python/plugins/processing/algs/saga/description/2.3.0/VegetationIndex(SlopeBased).txt
new file mode 100644
index 0000000..fd89e6a
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VegetationIndex(SlopeBased).txt
@@ -0,0 +1,13 @@
+Vegetation Index (Slope Based)
+imagery_tools
+ParameterRaster|NIR|Near Infrared Reflectance|False
+ParameterRaster|RED|Red Reflectance|False
+ParameterNumber|SOIL|Soil Adjustment Factor|0.0|1.0|0.5
+OutputRaster|DVI|Difference Vegetation Index
+OutputRaster|NDVI|Normalized Difference Vegetation Index
+OutputRaster|RVI|Ratio Vegetation Index
+OutputRaster|NRVI|Normalized Ratio Vegetation Index
+OutputRaster|TVI|Transformed Vegetation Index
+OutputRaster|CTVI|Corrected Transformed Vegetation Index
+OutputRaster|TTVI|Thiam's Transformed Vegetation Index
+OutputRaster|SAVI|Soil Adjusted Vegetation Index
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/VerticalDistancetoChannelNetwork.txt b/python/plugins/processing/algs/saga/description/2.3.0/VerticalDistancetoChannelNetwork.txt
new file mode 100644
index 0000000..5e1c7b2
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/VerticalDistancetoChannelNetwork.txt
@@ -0,0 +1,8 @@
+Vertical Distance to Channel Network
+ta_channels
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|CHANNELS|Channel Network|False
+ParameterNumber|THRESHOLD|Tension Threshold [Percentage of Cell Size]|None|None|1
+ParameterBoolean|NOUNDERGROUND  |Keep Base Level below Surface|True
+OutputRaster|DISTANCE|Vertical Distance to Channel Network
+OutputRaster|BASELEVEL|Channel Network Base Level
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/WaterRetentionCapacity.txt b/python/plugins/processing/algs/saga/description/2.3.0/WaterRetentionCapacity.txt
new file mode 100644
index 0000000..ccc8c6c
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/WaterRetentionCapacity.txt
@@ -0,0 +1,6 @@
+Water Retention Capacity
+sim_hydrology
+ParameterVector|SHAPES|Plot Holes|-1|False
+ParameterRaster|DEM|DEM|False
+OutputVector|OUTPUT|Final Parameters
+OutputRaster|RETENTION|Water Retention Capacity
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/WatershedBasins.txt b/python/plugins/processing/algs/saga/description/2.3.0/WatershedBasins.txt
new file mode 100644
index 0000000..d79f537
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/WatershedBasins.txt
@@ -0,0 +1,7 @@
+Watershed Basins
+ta_channels
+ParameterRaster|ELEVATION|Elevation|False
+ParameterRaster|CHANNELS|Channel Network|False
+ParameterRaster|SINKROUTE|Sink Route|True
+ParameterNumber|MINSIZE|Min. Size|None|None|0
+OutputRaster|BASINS|Watershed Basins
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/WatershedSegmentation.txt b/python/plugins/processing/algs/saga/description/2.3.0/WatershedSegmentation.txt
new file mode 100644
index 0000000..02edfa1
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/WatershedSegmentation.txt
@@ -0,0 +1,12 @@
+Watershed Segmentation
+imagery_segmentation
+ParameterRaster|GRID|Grid|False
+ParameterSelection|OUTPUT|Output|[0] Seed Value;[1] Segment ID
+ParameterSelection|DOWN|Method|[0] Minima;[1] Maxima
+ParameterSelection|JOIN|Join Segments based on Threshold Value|[0] do not join;[1] seed to saddle difference;[2] seeds difference
+ParameterNumber|THRESHOLD|Threshold|None|None|0
+ParameterBoolean|EDGE           |Allow Edge Pixels to be Seeds|True
+ParameterBoolean|BBORDERS       |Borders|True
+OutputRaster|SEGMENTS|Segments
+OutputVector|SEEDS|Seed Points
+OutputRaster|BORDERS|Borders
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/WindEffect(WindwardLeewardIndex).txt b/python/plugins/processing/algs/saga/description/2.3.0/WindEffect(WindwardLeewardIndex).txt
new file mode 100644
index 0000000..57495dc
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/WindEffect(WindwardLeewardIndex).txt
@@ -0,0 +1,15 @@
+Wind effect|Wind Effect (Windward / Leeward Index)
+ta_morphometry
+ParameterRaster|DEM|Elevation|False
+ParameterRaster|DIR|Wind Direction|True
+ParameterRaster|LEN|Wind Speed|True
+ParameterNumber|DIR_CONST|Constant Wind Direction [Degree]|None|None|135
+ParameterBoolean|OLDVER         |Old Version|True
+ParameterNumber|MAXDIST|Search Distance [km]|0.0|None|300.0
+ParameterNumber|ACCEL|Acceleration|0.0|None|1.5
+ParameterBoolean|PYRAMIDS       |Use Pyramids|True
+ParameterSelection|DIR_UNITS|Wind Direction Units|[0] radians;[1] degree
+ParameterNumber|LEN_SCALE|Wind Speed Scale Factor|0.0|None|1.0
+OutputRaster|EFFECT|Wind Effect
+OutputRaster|LUV|Windward Effect
+OutputRaster|LEE|Leeward Effect
diff --git a/python/plugins/processing/algs/saga/description/2.3.0/ZonalGridStatistics.txt b/python/plugins/processing/algs/saga/description/2.3.0/ZonalGridStatistics.txt
new file mode 100644
index 0000000..10d91c8
--- /dev/null
+++ b/python/plugins/processing/algs/saga/description/2.3.0/ZonalGridStatistics.txt
@@ -0,0 +1,8 @@
+Zonal Grid Statistics
+statistics_grid
+ParameterRaster|ZONES|Zone Grid|False
+ParameterMultipleInput|CATLIST|Categorial Grids|3|True
+ParameterMultipleInput|STATLIST|Grids to analyse|3|True
+ParameterRaster|ASPECT|Aspect|True
+ParameterBoolean|SHORTNAMES|Short Field Names|True
+OutputTable|OUTTAB|Zonal Statistics
diff --git a/python/plugins/processing/tools/vector.py b/python/plugins/processing/tools/vector.py
index 22b7255..3b70ac8 100644
--- a/python/plugins/processing/tools/vector.py
+++ b/python/plugins/processing/tools/vector.py
@@ -120,6 +120,10 @@ def features(layer):
             else:
                 return int(self.layer.featureCount())
 
+        def next(self):
+            '''Iterator next method in python 2'''
+            return next(self.iter)
+
     return Features(layer)
 
 
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 1bdd275..d2c1ea8 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -789,7 +789,12 @@ int main( int argc, char *argv[] )
 
   QgsApplication myApp( argc, argv, myUseGuiFlag, configpath );
 
+#ifdef Q_OS_MAC
+  // Set 1024x1024 icon for dock, app switcher, etc., rendering
+  myApp.setWindowIcon( QIcon( QgsApplication::iconsPath() + QLatin1String( "qgis-icon-macos.png" ) ) );
+#else
   myApp.setWindowIcon( QIcon( QgsApplication::appIconPath() ) );
+#endif
 
   //
   // Set up the QSettings environment must be done after qapp is created
diff --git a/src/gui/attributetable/qgsattributetablemodel.cpp b/src/gui/attributetable/qgsattributetablemodel.cpp
index 0fa131b..bea7afc 100644
--- a/src/gui/attributetable/qgsattributetablemodel.cpp
+++ b/src/gui/attributetable/qgsattributetablemodel.cpp
@@ -567,9 +567,9 @@ QVariant QgsAttributeTableModel::data( const QModelIndex &index, int role ) cons
   if ( role == Qt::TextAlignmentRole )
   {
     if ( fldRightAlign )
-      return QVariant( Qt::AlignRight );
+      return QVariant( Qt::AlignRight | Qt::AlignVCenter );
     else
-      return QVariant( Qt::AlignLeft );
+      return QVariant( Qt::AlignLeft | Qt::AlignVCenter );
   }
 
   QVariant val;
diff --git a/src/gui/qgsfiledownloader.h b/src/gui/qgsfiledownloader.h
index c9276f7..841e4b6 100644
--- a/src/gui/qgsfiledownloader.h
+++ b/src/gui/qgsfiledownloader.h
@@ -90,8 +90,10 @@ class GUI_EXPORT QgsFileDownloader : public QObject
     void onSslErrors( QNetworkReply *reply, const QList<QSslError> &errors );
 #endif
 
-  private:
+  protected:
     ~QgsFileDownloader();
+
+  private:
     /**
      * Abort current request and show an error if the instance has GUI
      * notifications enabled.
diff --git a/src/gui/qgsmessagelogviewer.cpp b/src/gui/qgsmessagelogviewer.cpp
index bbd4c93..aba2eaf 100644
--- a/src/gui/qgsmessagelogviewer.cpp
+++ b/src/gui/qgsmessagelogviewer.cpp
@@ -46,6 +46,15 @@ QgsMessageLogViewer::~QgsMessageLogViewer()
 {
 }
 
+void QgsMessageLogViewer::closeEvent( QCloseEvent *e )
+{
+  e->ignore();
+}
+
+void QgsMessageLogViewer::reject()
+{
+}
+
 void QgsMessageLogViewer::logMessage( QString message, QString tag, QgsMessageLog::MessageLevel level )
 {
   if ( tag.isNull() )
@@ -55,7 +64,7 @@ void QgsMessageLogViewer::logMessage( QString message, QString tag, QgsMessageLo
   for ( i = 0; i < tabWidget->count() && tabWidget->tabText( i ) != tag; i++ )
     ;
 
-  QPlainTextEdit *w;
+  QPlainTextEdit *w = nullptr;
   if ( i < tabWidget->count() )
   {
     w = qobject_cast<QPlainTextEdit *>( tabWidget->widget( i ) );
@@ -67,6 +76,7 @@ void QgsMessageLogViewer::logMessage( QString message, QString tag, QgsMessageLo
     w->setReadOnly( true );
     tabWidget->addTab( w, tag );
     tabWidget->setCurrentIndex( tabWidget->count() - 1 );
+    tabWidget->setTabsClosable( true );
   }
 
   QString prefix = QString( "%1\t%2\t" )
@@ -78,6 +88,6 @@ void QgsMessageLogViewer::logMessage( QString message, QString tag, QgsMessageLo
 
 void QgsMessageLogViewer::closeTab( int index )
 {
-  if ( tabWidget->count() > 1 )
-    tabWidget->removeTab( index );
+  tabWidget->removeTab( index );
+  tabWidget->setTabsClosable( tabWidget->count() > 1 );
 }
diff --git a/src/gui/qgsmessagelogviewer.h b/src/gui/qgsmessagelogviewer.h
index 3a780eb..ebfb249 100644
--- a/src/gui/qgsmessagelogviewer.h
+++ b/src/gui/qgsmessagelogviewer.h
@@ -24,9 +24,7 @@
 #include <QString>
 
 class QStatusBar;
-class QToolButton;
-class QShowEvent;
-class QHideEvent;
+class QCloseEvent;
 
 /** \ingroup gui
  * A generic dialog widget for displaying QGIS log messages.
@@ -41,6 +39,10 @@ class GUI_EXPORT QgsMessageLogViewer: public QDialog, private Ui::QgsMessageLogV
   public slots:
     void logMessage( QString message, QString tag, QgsMessageLog::MessageLevel level );
 
+  protected:
+    void closeEvent( QCloseEvent *e ) override;
+    void reject() override;
+
   private slots:
     void closeTab( int index );
 };
diff --git a/src/server/qgsmslayercache.cpp b/src/server/qgsmslayercache.cpp
index fe01c26..8532d4a 100644
--- a/src/server/qgsmslayercache.cpp
+++ b/src/server/qgsmslayercache.cpp
@@ -34,6 +34,7 @@ QgsMSLayerCache* QgsMSLayerCache::instance()
 QgsMSLayerCache::QgsMSLayerCache()
     : mProjectMaxLayers( 0 )
 {
+  QgsMessageLog::logMessage( "QgsMSLayerCache initialized", "Server", QgsMessageLog::INFO );
   mDefaultMaxLayers = 100;
   //max layer from environment variable overrides default
   char* maxLayerEnv = getenv( "MAX_CACHE_LAYERS" );
@@ -61,7 +62,7 @@ QgsMSLayerCache::~QgsMSLayerCache()
 
 void QgsMSLayerCache::insertLayer( const QString& url, const QString& layerName, QgsMapLayer* layer, const QString& configFile, const QList<QString>& tempFiles )
 {
-  QgsMessageLog::logMessage( "Layer cache: insert Layer '" + layerName + "' configFile: " + configFile, "Server", QgsMessageLog::INFO );
+  QgsMessageLog::logMessage( "Layer cache: insert Layer '" + layerName + "' url: '" + url + "' configFile: " + configFile, "Server", QgsMessageLog::INFO );
   if ( mEntries.size() > qMax( mDefaultMaxLayers, mProjectMaxLayers ) ) //force cache layer examination after 10 inserted layers
   {
     updateEntries();
@@ -100,7 +101,7 @@ QgsMapLayer* QgsMSLayerCache::searchLayer( const QString& url, const QString& la
   QPair<QString, QString> urlNamePair = qMakePair( url, layerName );
   if ( !mEntries.contains( urlNamePair ) )
   {
-    QgsMessageLog::logMessage( "Layer '" + layerName + "' configFile: " + configFile + " not found in layer cache'", "Server", QgsMessageLog::INFO );
+    QgsMessageLog::logMessage( "Layer '" + layerName + "' url: '" + url + "' configFile: " + configFile + " not found in layer cache'", "Server", QgsMessageLog::INFO );
     return nullptr;
   }
   else
@@ -112,11 +113,11 @@ QgsMapLayer* QgsMSLayerCache::searchLayer( const QString& url, const QString& la
       if ( configFile.isEmpty() || layerIt->configFile == configFile )
       {
         layerIt->lastUsedTime = time( nullptr );
-        QgsMessageLog::logMessage( "Layer '" + layerName + "' configFile: " + configFile + " found in layer cache", "Server", QgsMessageLog::INFO );
+        QgsMessageLog::logMessage( "Layer '" + layerName + "' url: '" + url + "' configFile: " + configFile + " found in layer cache", "Server", QgsMessageLog::INFO );
         return layerIt->layerPointer;
       }
     }
-    QgsMessageLog::logMessage( "Layer '" + layerName + "' configFile: " + configFile + " not found in layer cache'", "Server", QgsMessageLog::INFO );
+    QgsMessageLog::logMessage( "Layer '" + layerName + "' url: '" + url + "' configFile: " + configFile + " not found in layer cache'", "Server", QgsMessageLog::INFO );
     return nullptr;
   }
 }
diff --git a/src/server/qgswcsprojectparser.cpp b/src/server/qgswcsprojectparser.cpp
index 1fad06a..ec713ed 100644
--- a/src/server/qgswcsprojectparser.cpp
+++ b/src/server/qgswcsprojectparser.cpp
@@ -435,20 +435,24 @@ QList<QgsMapLayer*> QgsWCSProjectParser::mapLayerFromCoverage( const QString& cN
     QString type = elem.attribute( "type" );
     if ( type == "raster" )
     {
+      QString id = mProjectParser->layerId( elem );
+      if ( !wcsLayersId.contains( id ) )
+        continue;
+
+      QString coveName = mProjectParser->layerShortName( elem );
+      if ( coveName.isEmpty() )
+        coveName = mProjectParser->layerName( elem );
+      coveName = coveName.replace( " ", "_" );
+
+      if ( coveName != cName )
+        continue;
+
       QgsMapLayer *mLayer = mProjectParser->createLayerFromElement( elem, useCache );
       QgsRasterLayer* layer = qobject_cast<QgsRasterLayer*>( mLayer );
-      if ( !layer || !wcsLayersId.contains( layer->id() ) )
-        return layerList;
+      if ( !layer )
+        continue;
 
-      QString coveName = layer->name();
-      if ( !layer->shortName().isEmpty() )
-        coveName = layer->shortName();
-      coveName = coveName.replace( " ", "_" );
-      if ( cName == coveName )
-      {
-        layerList.push_back( mLayer );
-        return layerList;
-      }
+      layerList.push_back( mLayer );
     }
   }
   return layerList;
diff --git a/src/server/qgswfsprojectparser.cpp b/src/server/qgswfsprojectparser.cpp
index b72db3a..d6a730f 100644
--- a/src/server/qgswfsprojectparser.cpp
+++ b/src/server/qgswfsprojectparser.cpp
@@ -564,18 +564,24 @@ QList<QgsMapLayer*> QgsWFSProjectParser::mapLayerFromTypeName( const QString& aT
     QString type = elem.attribute( "type" );
     if ( type == "vector" )
     {
+      QString id = mProjectParser->layerId( elem );
+      if ( !wfsLayersId.contains( id ) )
+        continue;
+
+      QString typeName = mProjectParser->layerShortName( elem );
+      if ( typeName.isEmpty() )
+        typeName = mProjectParser->layerName( elem );
+      typeName = typeName.replace( " ", "_" );
+
+      if ( !aTypeName.isEmpty() && !typeNameList.contains( typeName ) )
+        continue;
+
       QgsMapLayer *mLayer = mProjectParser->createLayerFromElement( elem );
       QgsVectorLayer* layer = qobject_cast<QgsVectorLayer*>( mLayer );
       if ( !layer )
         continue;
 
-      QString typeName = layer->name();
-      if ( !layer->shortName().isEmpty() )
-        typeName = layer->shortName();
-      typeName = typeName.replace( " ", "_" );
-
-      if ( wfsLayersId.contains( layer->id() ) && ( aTypeName == "" || typeNameList.contains( typeName ) ) )
-        layerList.push_back( mLayer );
+      layerList.push_back( mLayer );
     }
   }
   return layerList;
diff --git a/tests/src/python/test_qgsserver.py b/tests/src/python/test_qgsserver.py
index f96cdb7..986b9e3 100644
--- a/tests/src/python/test_qgsserver.py
+++ b/tests/src/python/test_qgsserver.py
@@ -584,6 +584,7 @@ class TestQgsServer(unittest.TestCase):
         r, h = self._result(self.server.handleRequest(qs))
         self._img_diff_error(r, h, "WMS_GetPrint_Basic")
 
+    @unittest.skip('Randomly failing to draw the map layer')
     def test_wms_getprint_srs(self):
         qs = "&".join(["%s=%s" % i for i in list({
             "MAP": urllib.quote(self.projectPath),

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qgis.git



More information about the Pkg-grass-devel mailing list