Skip to content

Commit 126a274

Browse files
committed
[network analysis] use QgsFeatureSource instead of QgsVectorLayer in
QgsVectorLayerDirector
1 parent 23a4d60 commit 126a274

File tree

4 files changed

+26
-28
lines changed

4 files changed

+26
-28
lines changed

doc/api_break.dox

+6-3
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,6 @@ Data Providers {#qgis_api_break_3_0_DataProviders}
361361
- mAttrPalIndexName: overwrite palAttributeIndexNames()
362362

363363

364-
365-
366364
Qgis {#qgis_api_break_3_0_Qgis}
367365
----
368366

@@ -1116,7 +1114,7 @@ version instead.
11161114
- QgsExpression::Node::referencedColumns() returns QSet<QString> instead of QStringList
11171115
- `QgsExpression::Node` was renamed to `QgsExpressionNode`
11181116
- `QgsExpression::Function` was renamed to `QgsExpressionFunction`
1119-
- variableHelpText() no longer returns a formatted HTML string. It now just returns the plain text help string. Use formatVariableHelp()
1117+
- variableHelpText() no longer returns a formatted HTML string. It now just returns the plain text help string. Use formatVariableHelp()
11201118
to obtain the formatted version.
11211119

11221120

@@ -2512,6 +2510,11 @@ QgsRendererAbstractMetadata {#qgis_api_break_3_0_QgsRendererAbstractMetadata}
25122510

25132511
- createRenderer() now expects a reference to QgsReadWriteContext as the second argument
25142512

2513+
QgsVectorLayerDirector {#qgis_api_break_3_0_QgsVectorLayerDirector}
2514+
----------------------
2515+
2516+
- QgsVectorLayerDirector() constructor now expects a reference to QgsFeatureSource as the first argument
2517+
25152518

25162519
Processing {#qgis_api_break_3_0_Processing}
25172520
----------

python/analysis/network/qgsvectorlayerdirector.sip

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class QgsVectorLayerDirector : QgsGraphDirector
2929
DirectionBoth,
3030
};
3131

32-
QgsVectorLayerDirector( QgsVectorLayer *myLayer,
32+
QgsVectorLayerDirector( QgsFeatureSource *source,
3333
int directionFieldId,
3434
const QString &directDirectionValue,
3535
const QString &reverseDirectionValue,
@@ -38,7 +38,7 @@ class QgsVectorLayerDirector : QgsGraphDirector
3838
);
3939
%Docstring
4040
Default constructor
41-
\param myLayer source vector layer
41+
\param source feature source representing network
4242
\param directionFieldId field containing direction value
4343
\param directDirectionValue value for direct one-way road
4444
\param reverseDirectionValue value for reversed one-way road

src/analysis/network/qgsvectorlayerdirector.cpp

+14-19
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
#include "qgsgraphbuilderinterface.h"
2323

2424
#include "qgsfeatureiterator.h"
25-
#include <qgsvectorlayer.h>
26-
#include <qgsvectordataprovider.h>
27-
#include <qgspoint.h>
28-
#include <qgsgeometry.h>
29-
#include <qgsdistancearea.h>
30-
#include <qgswkbtypes.h>
25+
#include "qgsfeaturesource.h"
26+
#include "qgsvectordataprovider.h"
27+
#include "qgspoint.h"
28+
#include "qgsgeometry.h"
29+
#include "qgsdistancearea.h"
30+
#include 'qgswkbtypes.h"
3131
3232
#include <QString>
3333
#include <QtAlgorithms>
@@ -102,15 +102,15 @@ bool TiePointInfoCompare( const TiePointInfo &a, const TiePointInfo &b )
102102
return a.mFirstPoint.x() == b.mFirstPoint.x() ? a.mFirstPoint.y() < b.mFirstPoint.y() : a.mFirstPoint.x() < b.mFirstPoint.x();
103103
}
104104
105-
QgsVectorLayerDirector::QgsVectorLayerDirector( QgsVectorLayer *myLayer,
105+
QgsVectorLayerDirector::QgsVectorLayerDirector( QgsFeatureSource *source,
106106
int directionFieldId,
107107
const QString &directDirectionValue,
108108
const QString &reverseDirectionValue,
109109
const QString &bothDirectionValue,
110110
const Direction defaultDirection
111111
)
112112
{
113-
mVectorLayer = myLayer;
113+
mSource = source;
114114
mDirectionFieldId = directionFieldId;
115115
mDirectDirectionValue = directDirectionValue;
116116
mReverseDirectionValue = reverseDirectionValue;
@@ -126,23 +126,18 @@ QString QgsVectorLayerDirector::name() const
126126
void QgsVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, const QVector< QgsPointXY > &additionalPoints,
127127
QVector< QgsPointXY > &snappedPoints ) const
128128
{
129-
QgsVectorLayer *vl = mVectorLayer;
130-
131-
if ( !vl )
132-
return;
133-
134-
int featureCount = ( int ) vl->featureCount() * 2;
129+
int featureCount = ( int ) mSource->featureCount() * 2;
135130
int step = 0;
136131
137132
QgsCoordinateTransform ct;
138-
ct.setSourceCrs( vl->crs() );
133+
ct.setSourceCrs( mSource->sourceCrs() );
139134
if ( builder->coordinateTransformationEnabled() )
140135
{
141136
ct.setDestinationCrs( builder->destinationCrs() );
142137
}
143138
else
144139
{
145-
ct.setDestinationCrs( vl->crs() );
140+
ct.setDestinationCrs( mSource->sourceCrs() );
146141
}
147142
148143
snappedPoints = QVector< QgsPointXY >( additionalPoints.size(), QgsPointXY( 0.0, 0.0 ) );
@@ -156,7 +151,7 @@ void QgsVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, const
156151
//Graph's points;
157152
QVector< QgsPointXY > points;
158153
159-
QgsFeatureIterator fit = vl->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) );
154+
QgsFeatureIterator fit = mSource->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) );
160155
161156
// begin: tie points to the graph
162157
QgsAttributeList la;
@@ -276,7 +271,7 @@ void QgsVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, const
276271
} // end fill attribute list 'la'
277272
278273
// begin graph construction
279-
fit = vl->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( la ) );
274+
fit = mSource->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( la ) );
280275
while ( fit.nextFeature( feature ) )
281276
{
282277
Direction directionType = mDefaultDirection;
@@ -388,5 +383,5 @@ void QgsVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, const
388383
} // for (it = pl.begin(); it != pl.end(); ++it)
389384
}
390385
emit buildProgress( ++step, featureCount );
391-
} // while( vl->nextFeature(feature) )
386+
} // while( mSource->nextFeature(feature) )
392387
} // makeGraph( QgsGraphBuilderInterface *builder, const QVector< QgsPointXY >& additionalPoints, QVector< QgsPointXY >& tiedPoint )

src/analysis/network/qgsvectorlayerdirector.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include "qgis_analysis.h"
2323

2424
class QgsGraphBuilderInterface;
25-
class QgsVectorLayer;
25+
class QgsFeatureSource;
2626

2727
/**
2828
* \ingroup analysis
@@ -51,15 +51,15 @@ class ANALYSIS_EXPORT QgsVectorLayerDirector : public QgsGraphDirector
5151

5252
/**
5353
* Default constructor
54-
* \param myLayer source vector layer
54+
* \param source feature source representing network
5555
* \param directionFieldId field containing direction value
5656
* \param directDirectionValue value for direct one-way road
5757
* \param reverseDirectionValue value for reversed one-way road
5858
* \param bothDirectionValue value for two-way (bidirectional) road
5959
* \param defaultDirection default direction. Will be used if corresponding
6060
* attribute value is not set or does not equal to the given values
6161
*/
62-
QgsVectorLayerDirector( QgsVectorLayer *myLayer,
62+
QgsVectorLayerDirector( QgsFeatureSource *source,
6363
int directionFieldId,
6464
const QString &directDirectionValue,
6565
const QString &reverseDirectionValue,
@@ -79,7 +79,7 @@ class ANALYSIS_EXPORT QgsVectorLayerDirector : public QgsGraphDirector
7979
QString name() const override;
8080

8181
private:
82-
QgsVectorLayer *mVectorLayer = nullptr;
82+
QgsFeatureSource *mSource = nullptr;
8383
int mDirectionFieldId;
8484
QString mDirectDirectionValue;
8585
QString mReverseDirectionValue;

0 commit comments

Comments
 (0)