mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
[processing] Make translate algorithm native
And add option to translate z/m values
This commit is contained in:
parent
dd223d9b08
commit
ff900c0b05
@ -143,7 +143,6 @@ from .SymmetricalDifference import SymmetricalDifference
|
|||||||
from .TextToFloat import TextToFloat
|
from .TextToFloat import TextToFloat
|
||||||
from .TinInterpolation import TinInterpolation
|
from .TinInterpolation import TinInterpolation
|
||||||
from .TopoColors import TopoColor
|
from .TopoColors import TopoColor
|
||||||
from .Translate import Translate
|
|
||||||
from .TruncateTable import TruncateTable
|
from .TruncateTable import TruncateTable
|
||||||
from .Union import Union
|
from .Union import Union
|
||||||
from .UniqueValues import UniqueValues
|
from .UniqueValues import UniqueValues
|
||||||
@ -268,7 +267,6 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
|
|||||||
TextToFloat(),
|
TextToFloat(),
|
||||||
TinInterpolation(),
|
TinInterpolation(),
|
||||||
TopoColor(),
|
TopoColor(),
|
||||||
Translate(),
|
|
||||||
TruncateTable(),
|
TruncateTable(),
|
||||||
Union(),
|
Union(),
|
||||||
UniqueValues(),
|
UniqueValues(),
|
||||||
|
@ -1,76 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
"""
|
|
||||||
***************************************************************************
|
|
||||||
Translate.py
|
|
||||||
--------------
|
|
||||||
Date : August 2016
|
|
||||||
Copyright : (C) 2016 by Nyall Dawson
|
|
||||||
Email : nyall dot dawson 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__ = 'Nyall Dawson'
|
|
||||||
__date__ = 'August 2016'
|
|
||||||
__copyright__ = '(C) 2016, Nyall Dawson'
|
|
||||||
|
|
||||||
# This will get replaced with a git SHA1 when you do a git archive323
|
|
||||||
|
|
||||||
__revision__ = '$Format:%H$'
|
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingException,
|
|
||||||
QgsProcessingParameterNumber)
|
|
||||||
from processing.algs.qgis.QgisAlgorithm import QgisFeatureBasedAlgorithm
|
|
||||||
|
|
||||||
|
|
||||||
class Translate(QgisFeatureBasedAlgorithm):
|
|
||||||
|
|
||||||
DELTA_X = 'DELTA_X'
|
|
||||||
DELTA_Y = 'DELTA_Y'
|
|
||||||
|
|
||||||
def group(self):
|
|
||||||
return self.tr('Vector geometry')
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
self.delta_x = 0
|
|
||||||
self.delta_y = 0
|
|
||||||
|
|
||||||
def initParameters(self, config=None):
|
|
||||||
self.addParameter(QgsProcessingParameterNumber(self.DELTA_X,
|
|
||||||
self.tr('Offset distance (x-axis)'), QgsProcessingParameterNumber.Double, defaultValue=0.0))
|
|
||||||
self.addParameter(QgsProcessingParameterNumber(self.DELTA_Y,
|
|
||||||
self.tr('Offset distance (y-axis)'), QgsProcessingParameterNumber.Double, defaultValue=0.0))
|
|
||||||
|
|
||||||
def name(self):
|
|
||||||
return 'translategeometry'
|
|
||||||
|
|
||||||
def displayName(self):
|
|
||||||
return self.tr('Translate geometry')
|
|
||||||
|
|
||||||
def outputName(self):
|
|
||||||
return self.tr('Translated')
|
|
||||||
|
|
||||||
def prepareAlgorithm(self, parameters, context, feedback):
|
|
||||||
self.delta_x = self.parameterAsDouble(parameters, self.DELTA_X, context)
|
|
||||||
self.delta_y = self.parameterAsDouble(parameters, self.DELTA_Y, context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def processFeature(self, feature, feedback):
|
|
||||||
input_geometry = feature.geometry()
|
|
||||||
if input_geometry:
|
|
||||||
output_geometry = input_geometry
|
|
||||||
output_geometry.translate(self.delta_x, self.delta_y)
|
|
||||||
if not output_geometry:
|
|
||||||
raise QgsProcessingException(
|
|
||||||
self.tr('Error translating geometry'))
|
|
||||||
|
|
||||||
feature.setGeometry(output_geometry)
|
|
||||||
return feature
|
|
32
python/plugins/processing/tests/testdata/expected/buffer_polys.gfs
vendored
Normal file
32
python/plugins/processing/tests/testdata/expected/buffer_polys.gfs
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>buffer_polys</Name>
|
||||||
|
<ElementPath>buffer_polys</ElementPath>
|
||||||
|
<!--POLYGON-->
|
||||||
|
<GeometryType>3</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>6</FeatureCount>
|
||||||
|
<ExtentXMin>-1.50000</ExtentXMin>
|
||||||
|
<ExtentXMax>10.50000</ExtentXMax>
|
||||||
|
<ExtentYMin>-3.50000</ExtentYMin>
|
||||||
|
<ExtentYMax>6.50000</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>name</Name>
|
||||||
|
<ElementPath>name</ElementPath>
|
||||||
|
<Type>String</Type>
|
||||||
|
<Width>5</Width>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>intval</Name>
|
||||||
|
<ElementPath>intval</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>floatval</Name>
|
||||||
|
<ElementPath>floatval</ElementPath>
|
||||||
|
<Type>Real</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
16
python/plugins/processing/tests/testdata/expected/gridify_lines.gfs
vendored
Normal file
16
python/plugins/processing/tests/testdata/expected/gridify_lines.gfs
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>gridify_lines</Name>
|
||||||
|
<ElementPath>gridify_lines</ElementPath>
|
||||||
|
<!--LINESTRING-->
|
||||||
|
<GeometryType>2</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>7</FeatureCount>
|
||||||
|
<ExtentXMin>-2.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>12.00000</ExtentXMax>
|
||||||
|
<ExtentYMin>-4.00000</ExtentYMin>
|
||||||
|
<ExtentYMax>6.00000</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
32
python/plugins/processing/tests/testdata/expected/gridify_polys.gfs
vendored
Normal file
32
python/plugins/processing/tests/testdata/expected/gridify_polys.gfs
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>gridify_polys</Name>
|
||||||
|
<ElementPath>gridify_polys</ElementPath>
|
||||||
|
<!--POLYGON-->
|
||||||
|
<GeometryType>3</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>6</FeatureCount>
|
||||||
|
<ExtentXMin>-2.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>10.00000</ExtentXMax>
|
||||||
|
<ExtentYMin>-4.00000</ExtentYMin>
|
||||||
|
<ExtentYMax>6.00000</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>name</Name>
|
||||||
|
<ElementPath>name</ElementPath>
|
||||||
|
<Type>String</Type>
|
||||||
|
<Width>5</Width>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>intval</Name>
|
||||||
|
<ElementPath>intval</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>floatval</Name>
|
||||||
|
<ElementPath>floatval</ElementPath>
|
||||||
|
<Type>Real</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
16
python/plugins/processing/tests/testdata/expected/lines_bounds.gfs
vendored
Normal file
16
python/plugins/processing/tests/testdata/expected/lines_bounds.gfs
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>lines_bounds</Name>
|
||||||
|
<ElementPath>lines_bounds</ElementPath>
|
||||||
|
<!--POLYGON-->
|
||||||
|
<GeometryType>3</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>7</FeatureCount>
|
||||||
|
<ExtentXMin>-1.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>11.00000</ExtentXMax>
|
||||||
|
<ExtentYMin>-3.00000</ExtentYMin>
|
||||||
|
<ExtentYMax>5.00000</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
16
python/plugins/processing/tests/testdata/expected/multiline_offset.gfs
vendored
Normal file
16
python/plugins/processing/tests/testdata/expected/multiline_offset.gfs
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>multiline_offset</Name>
|
||||||
|
<ElementPath>multiline_offset</ElementPath>
|
||||||
|
<!--MULTILINESTRING-->
|
||||||
|
<GeometryType>5</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>4</FeatureCount>
|
||||||
|
<ExtentXMin>-1.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>6.02404</ExtentXMax>
|
||||||
|
<ExtentYMin>0.00000</ExtentYMin>
|
||||||
|
<ExtentYMax>5.11935</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
31
python/plugins/processing/tests/testdata/expected/variable_buffer_points.gfs
vendored
Normal file
31
python/plugins/processing/tests/testdata/expected/variable_buffer_points.gfs
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>variable_buffer_points</Name>
|
||||||
|
<ElementPath>variable_buffer_points</ElementPath>
|
||||||
|
<!--POLYGON-->
|
||||||
|
<GeometryType>3</GeometryType>
|
||||||
|
<SRSName>EPSG:3857</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>9</FeatureCount>
|
||||||
|
<ExtentXMin>-50000.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>990555.92635</ExtentXMax>
|
||||||
|
<ExtentYMin>-607305.25727</ExtentYMin>
|
||||||
|
<ExtentYMax>384111.17140</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>id</Name>
|
||||||
|
<ElementPath>id</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>id2</Name>
|
||||||
|
<ElementPath>id2</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>buffer</Name>
|
||||||
|
<ElementPath>buffer</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
@ -1087,7 +1087,7 @@ tests:
|
|||||||
geometry:
|
geometry:
|
||||||
precision: 7
|
precision: 7
|
||||||
|
|
||||||
- algorithm: qgis:translategeometry
|
- algorithm: native:translategeometry
|
||||||
name: Lines translated
|
name: Lines translated
|
||||||
params:
|
params:
|
||||||
DELTA_X: 0.1
|
DELTA_X: 0.1
|
||||||
|
@ -59,6 +59,7 @@ SET(QGIS_ANALYSIS_SRCS
|
|||||||
processing/qgsalgorithmsubdivide.cpp
|
processing/qgsalgorithmsubdivide.cpp
|
||||||
processing/qgsalgorithmtransect.cpp
|
processing/qgsalgorithmtransect.cpp
|
||||||
processing/qgsalgorithmtransform.cpp
|
processing/qgsalgorithmtransform.cpp
|
||||||
|
processing/qgsalgorithmtranslate.cpp
|
||||||
|
|
||||||
processing/qgsnativealgorithms.cpp
|
processing/qgsnativealgorithms.cpp
|
||||||
|
|
||||||
|
114
src/analysis/processing/qgsalgorithmtranslate.cpp
Normal file
114
src/analysis/processing/qgsalgorithmtranslate.cpp
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
qgsalgorithmtranslate.cpp
|
||||||
|
---------------------
|
||||||
|
begin : November 2017
|
||||||
|
copyright : (C) 2017 by Nyall Dawson
|
||||||
|
email : nyall dot dawson 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "qgsalgorithmtranslate.h"
|
||||||
|
|
||||||
|
///@cond PRIVATE
|
||||||
|
|
||||||
|
QString QgsTranslateAlgorithm::name() const
|
||||||
|
{
|
||||||
|
return QStringLiteral( "translategeometry" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsTranslateAlgorithm::displayName() const
|
||||||
|
{
|
||||||
|
return QObject::tr( "Translate geometry" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList QgsTranslateAlgorithm::tags() const
|
||||||
|
{
|
||||||
|
return QObject::tr( "move,shift,transform,z,m,values,add" ).split( ',' );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsTranslateAlgorithm::group() const
|
||||||
|
{
|
||||||
|
return QObject::tr( "Vector geometry" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsTranslateAlgorithm::outputName() const
|
||||||
|
{
|
||||||
|
return QObject::tr( "Translated" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsTranslateAlgorithm::shortHelpString() const
|
||||||
|
{
|
||||||
|
return QObject::tr( "This algorithm moves the geometries within a layer, by offsetting them with a specified x and y displacement." )
|
||||||
|
+ QStringLiteral( "\n\n" )
|
||||||
|
+ QObject::tr( "Z and M values present in the geometry can also be translated." );
|
||||||
|
}
|
||||||
|
|
||||||
|
QgsTranslateAlgorithm *QgsTranslateAlgorithm::createInstance() const
|
||||||
|
{
|
||||||
|
return new QgsTranslateAlgorithm();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsTranslateAlgorithm::initParameters( const QVariantMap & )
|
||||||
|
{
|
||||||
|
addParameter( new QgsProcessingParameterNumber( QStringLiteral( "DELTA_X" ),
|
||||||
|
QObject::tr( "Offset distance (x-axis)" ), QgsProcessingParameterNumber::Double,
|
||||||
|
0.0 ) );
|
||||||
|
addParameter( new QgsProcessingParameterNumber( QStringLiteral( "DELTA_Y" ),
|
||||||
|
QObject::tr( "Offset distance (y-axis)" ), QgsProcessingParameterNumber::Double,
|
||||||
|
0.0 ) );
|
||||||
|
addParameter( new QgsProcessingParameterNumber( QStringLiteral( "DELTA_Z" ),
|
||||||
|
QObject::tr( "Offset distance (z-axis)" ), QgsProcessingParameterNumber::Double,
|
||||||
|
0.0 ) );
|
||||||
|
addParameter( new QgsProcessingParameterNumber( QStringLiteral( "DELTA_M" ),
|
||||||
|
QObject::tr( "Offset distance (m values)" ), QgsProcessingParameterNumber::Double,
|
||||||
|
0.0 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QgsTranslateAlgorithm::prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
|
||||||
|
{
|
||||||
|
mDeltaX = parameterAsDouble( parameters, QStringLiteral( "DELTA_X" ), context );
|
||||||
|
mDeltaY = parameterAsDouble( parameters, QStringLiteral( "DELTA_Y" ), context );
|
||||||
|
mDeltaZ = parameterAsDouble( parameters, QStringLiteral( "DELTA_Z" ), context );
|
||||||
|
mDeltaM = parameterAsDouble( parameters, QStringLiteral( "DELTA_M" ), context );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QgsFeature QgsTranslateAlgorithm::processFeature( const QgsFeature &feature, QgsProcessingFeedback * )
|
||||||
|
{
|
||||||
|
QgsFeature f = feature;
|
||||||
|
if ( f.hasGeometry() )
|
||||||
|
{
|
||||||
|
QgsGeometry geometry = f.geometry();
|
||||||
|
if ( mDeltaZ != 0 && !geometry.constGet()->is3D() )
|
||||||
|
geometry.get()->addZValue( 0 );
|
||||||
|
if ( mDeltaM != 0 && !geometry.constGet()->isMeasure() )
|
||||||
|
geometry.get()->addMValue( 0 );
|
||||||
|
|
||||||
|
geometry.translate( mDeltaX, mDeltaY, mDeltaZ, mDeltaM );
|
||||||
|
f.setGeometry( geometry );
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
QgsWkbTypes::Type QgsTranslateAlgorithm::outputWkbType( QgsWkbTypes::Type inputWkbType ) const
|
||||||
|
{
|
||||||
|
QgsWkbTypes::Type wkb = inputWkbType;
|
||||||
|
if ( mDeltaZ != 0 )
|
||||||
|
wkb = QgsWkbTypes::addZ( wkb );
|
||||||
|
if ( mDeltaM != 0 )
|
||||||
|
wkb = QgsWkbTypes::addM( wkb );
|
||||||
|
return wkb;
|
||||||
|
}
|
||||||
|
|
||||||
|
///@endcond
|
||||||
|
|
||||||
|
|
65
src/analysis/processing/qgsalgorithmtranslate.h
Normal file
65
src/analysis/processing/qgsalgorithmtranslate.h
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
qgsalgorithmtranslate.h
|
||||||
|
---------------------
|
||||||
|
begin : November 2017
|
||||||
|
copyright : (C) 2017 by Nyall Dawson
|
||||||
|
email : nyall dot dawson 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef QGSALGORITHMTRANSLATE_H
|
||||||
|
#define QGSALGORITHMTRANSLATE_H
|
||||||
|
|
||||||
|
#define SIP_NO_FILE
|
||||||
|
|
||||||
|
#include "qgis.h"
|
||||||
|
#include "qgsprocessingalgorithm.h"
|
||||||
|
|
||||||
|
///@cond PRIVATE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Native translate algorithm.
|
||||||
|
*/
|
||||||
|
class QgsTranslateAlgorithm : public QgsProcessingFeatureBasedAlgorithm
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
QgsTranslateAlgorithm() = default;
|
||||||
|
QString name() const override;
|
||||||
|
QString displayName() const override;
|
||||||
|
virtual QStringList tags() const override;
|
||||||
|
QString group() const override;
|
||||||
|
QString shortHelpString() const override;
|
||||||
|
QgsTranslateAlgorithm *createInstance() const override SIP_FACTORY;
|
||||||
|
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString outputName() const override;
|
||||||
|
bool prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
|
||||||
|
QgsFeature processFeature( const QgsFeature &feature, QgsProcessingFeedback *feedback ) override;
|
||||||
|
QgsWkbTypes::Type outputWkbType( QgsWkbTypes::Type inputWkbType ) const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
double mDeltaX = 0.0;
|
||||||
|
double mDeltaY = 0.0;
|
||||||
|
double mDeltaZ = 0.0;
|
||||||
|
double mDeltaM = 0.0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
///@endcond PRIVATE
|
||||||
|
|
||||||
|
#endif // QGSALGORITHMTRANSLATE_H
|
||||||
|
|
||||||
|
|
@ -56,6 +56,7 @@
|
|||||||
#include "qgsalgorithmsubdivide.h"
|
#include "qgsalgorithmsubdivide.h"
|
||||||
#include "qgsalgorithmtransect.h"
|
#include "qgsalgorithmtransect.h"
|
||||||
#include "qgsalgorithmtransform.h"
|
#include "qgsalgorithmtransform.h"
|
||||||
|
#include "qgsalgorithmtranslate.h"
|
||||||
|
|
||||||
|
|
||||||
///@cond PRIVATE
|
///@cond PRIVATE
|
||||||
@ -133,7 +134,7 @@ void QgsNativeAlgorithms::loadAlgorithms()
|
|||||||
addAlgorithm( new QgsSubdivideAlgorithm() );
|
addAlgorithm( new QgsSubdivideAlgorithm() );
|
||||||
addAlgorithm( new QgsTransectAlgorithm() );
|
addAlgorithm( new QgsTransectAlgorithm() );
|
||||||
addAlgorithm( new QgsTransformAlgorithm() );
|
addAlgorithm( new QgsTransformAlgorithm() );
|
||||||
|
addAlgorithm( new QgsTranslateAlgorithm() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user