QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
src
3d
qgsfeature3dhandler_p.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsfeature3dhandler_p.cpp
3
--------------------------------------
4
Date : January 2019
5
Copyright : (C) 2019 by Martin Dobias
6
Email : wonder dot sk at gmail dot com
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
16
17
#include "
qgsfeature3dhandler_p.h
"
18
19
#include "
qgsfeaturerequest.h
"
20
#include "
qgsvectorlayer.h
"
21
22
#include "
qgs3dmapsettings.h
"
23
#include "
qgs3dutils.h
"
24
26
27
28
namespace
Qgs3DSymbolImpl
29
{
30
31
Qt3DCore::QEntity *entityFromHandler( QgsFeature3DHandler *handler,
const
Qgs3DMapSettings
&map,
QgsVectorLayer
*layer )
32
{
33
Qgs3DRenderContext context( map );
34
35
QgsExpressionContext
exprContext(
Qgs3DUtils::globalProjectLayerExpressionContext
( layer ) );
36
exprContext.setFields( layer->
fields
() );
37
context.setExpressionContext( exprContext );
38
39
QSet<QString> attributeNames;
40
if
( !handler->prepare( context, attributeNames ) )
41
return
nullptr
;
42
43
// build the feature request
44
QgsFeatureRequest
req;
45
req.
setDestinationCrs
( map.
crs
(), map.
transformContext
() );
46
req.
setSubsetOfAttributes
( attributeNames, layer->
fields
() );
47
48
QgsFeature
f;
49
QgsFeatureIterator
fi = layer->
getFeatures
( req );
50
while
( fi.
nextFeature
( f ) )
51
{
52
context.expressionContext().setFeature( f );
53
handler->processFeature( f, context );
54
}
55
56
Qt3DCore::QEntity *entity =
new
Qt3DCore::QEntity;
57
handler->finalize( entity, context );
58
return
entity;
59
}
60
61
}
62
63
void
QgsFeature3DHandler::updateZRangeFromPositions(
const
QVector<QVector3D> &positions )
64
{
65
for
(
const
QVector3D &pos : positions )
66
{
67
if
( pos.y() < mZMin )
68
mZMin = pos.y();
69
if
( pos.y() > mZMax )
70
mZMax = pos.y();
71
}
72
}
73
QgsVectorLayer::getFeatures
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
Definition:
qgsvectorlayer.cpp:993
QgsExpressionContext
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Definition:
qgsexpressioncontext.h:370
Qgs3DMapSettings::crs
QgsCoordinateReferenceSystem crs() const
Returns coordinate reference system used in the 3D scene.
Definition:
qgs3dmapsettings.h:96
qgsfeature3dhandler_p.h
qgsfeaturerequest.h
QgsFeatureRequest::setSubsetOfAttributes
QgsFeatureRequest & setSubsetOfAttributes(const QgsAttributeList &attrs)
Set a subset of attributes that will be fetched.
Definition:
qgsfeaturerequest.cpp:185
Qgs3DMapSettings::transformContext
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context, which stores various information regarding which datum tran...
Definition:
qgs3dmapsettings.cpp:392
Qgs3DUtils::globalProjectLayerExpressionContext
static QgsExpressionContext globalProjectLayerExpressionContext(QgsVectorLayer *layer)
Returns expression context for use in preparation of 3D data of a layer.
Definition:
qgs3dutils.cpp:551
QgsVectorLayer::fields
QgsFields fields() const FINAL
Returns the list of fields of this layer.
Definition:
qgsvectorlayer.cpp:3283
QgsFeatureRequest
This class wraps a request for features to a vector layer (or directly its vector data provider).
Definition:
qgsfeaturerequest.h:76
qgs3dutils.h
Qgs3DMapSettings
3 Definition of the world
Definition:
qgs3dmapsettings.h:54
qgsvectorlayer.h
qgs3dmapsettings.h
QgsFeatureIterator::nextFeature
bool nextFeature(QgsFeature &f)
Definition:
qgsfeatureiterator.h:374
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition:
qgsvectorlayer.h:387
QgsFeature
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition:
qgsfeature.h:56
QgsFeatureRequest::setDestinationCrs
QgsFeatureRequest & setDestinationCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets the destination crs for feature's geometries.
Definition:
qgsfeaturerequest.cpp:258
QgsFeatureIterator
Wrapper for iterator of features from vector data provider or vector layer.
Definition:
qgsfeatureiterator.h:265
Generated on Sat Oct 24 2020 17:43:09 for QGIS API Documentation by
1.8.20