QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsnetworkspeedstrategy.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsspeedstrategy.h
3 --------------------------------------
4 Date : 2011-04-01
5 Copyright : (C) 2010 by Yakushev Sergey
6 Email : YakushevS <at> list.ru
7****************************************************************************
8* *
9* This program is free software; you can redistribute it and/or modify *
10* it under the terms of the GNU General Public License as published by *
11* the Free Software Foundation; either version 2 of the License, or *
12* (at your option) any later version. *
13* *
14***************************************************************************/
15
17
18QgsNetworkSpeedStrategy::QgsNetworkSpeedStrategy( int attributeId, double defaultValue, double toMetricFactor )
19{
20 mAttributeId = attributeId;
21 mDefaultValue = defaultValue;
22 mToMetricFactor = toMetricFactor;
23}
24
25QVariant QgsNetworkSpeedStrategy::cost( double distance, const QgsFeature &f ) const
26{
27 const QgsAttributes attrs = f.attributes();
28
29 if ( mAttributeId < 0 || mAttributeId >= attrs.count() )
30 return QVariant( distance / ( mDefaultValue * mToMetricFactor ) );
31
32 const double val = distance / ( attrs.at( mAttributeId ).toDouble() * mToMetricFactor );
33 if ( val <= 0.0 )
34 return QVariant( distance / ( mDefaultValue / mToMetricFactor ) );
35
36 return QVariant( val );
37}
38
40{
41 QSet< int > l;
42 l.insert( mAttributeId );
43 return l;
44}
A vector of attributes.
Definition: qgsattributes.h:59
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
QgsAttributes attributes
Definition: qgsfeature.h:65
QVariant cost(double distance, const QgsFeature &f) const override
Returns edge cost.
QgsNetworkSpeedStrategy(int attributeId, double defaultValue, double toMetricFactor)
Default constructor.
QSet< int > requiredAttributes() const override
Returns a list of the source layer attributes needed for cost calculation.