18#ifndef QGSPOINTCLOUDLAYER_H
19#define QGSPOINTCLOUDLAYER_H
33using namespace Qt::StringLiterals;
105 Calculating = 1 << 0,
108 Q_ENUM( PointCloudStatisticsCalculationState )
124 SIP_PYOBJECT __repr__();
126 QString str = u
"<QgsPointCloudLayer: '%1' (%2)>"_s.arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : u
"Invalid"_s );
127 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
143 bool supportsEditing() const override;
144 bool isEditable() const override;
145 bool isModified() const override;
149 bool writeXml( QDomNode &layerNode, QDomDocument &doc, const
QgsReadWriteContext &context ) const override;
151 bool readSymbology( const QDomNode &node, QString &errorMessage,
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
152 bool readStyle( const QDomNode &node, QString &errorMessage,
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) final;
154 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) const override;
155 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage, const
QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) const final;
159 QString encodedSource( const QString &source, const
QgsReadWriteContext &context ) const override;
160 QString decodedSource( const QString &source, const QString &dataProvider, const
QgsReadWriteContext &context ) const override;
161 QString loadDefaultStyle(
bool &resultFlag
SIP_OUT ) final;
162 QString htmlMetadata() const override;
173 qint64 pointCount() const;
206 bool setSubsetString( const QString &subset );
214 QString subsetString() const;
222 void setSync3DRendererTo2DRenderer(
bool sync );
230 bool sync3DRendererTo2DRenderer() const;
238 bool convertRenderer3DFromRenderer2D();
289 bool commitChanges(
bool stopEditing =
true );
297 QString commitError()
const;
355 QVector<QgsPointCloudSubIndex> subIndexes()
const;
362 bool isVpc()
const {
return mIsVpc; }
406 bool isReadOnly()
const override {
return true; }
408 void calculateStatistics();
410 void resetRenderer();
412 void loadIndexesForRenderContext(
QgsRenderContext &rendererContext )
const;
418 std::unique_ptr<QgsPointCloudDataProvider> mDataProvider;
420 std::unique_ptr<QgsPointCloudRenderer> mRenderer;
424 LayerOptions mLayerOptions;
426 bool mSync3DRendererTo2DRenderer =
true;
428 PointCloudStatisticsCalculationState mStatisticsCalculationState = PointCloudStatisticsCalculationState::NotStarted;
429 long mStatsCalculationTask = 0;
432 mutable QMap< int, QgsPointCloudIndex > mEditingIndexes;
434 bool mEditable =
false;
435 QString mCommitError;
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
Base class for point cloud 3D renderers.
Abstract base class for objects which generate elevation profiles.
Interface for classes which can generate elevation profiles.
virtual QgsAbstractProfileGenerator * createProfileGenerator(const QgsProfileRequest &request)=0
Given a profile request, returns a new profile generator ready for generating elevation profiles.
Contains information about the context in which a coordinate transform is executed.
Base class for storage of map layer elevation properties.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
QgsMapLayer(Qgis::LayerType type=Qgis::LayerType::Vector, const QString &name=QString(), const QString &source=QString())
Constructor for QgsMapLayer.
QgsMapLayer::LayerFlags flags
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
virtual Q_INVOKABLE QgsDataProvider * dataProvider()
Returns the layer's data provider, it may be nullptr.
A collection of point cloud attributes.
Attribute for point cloud data pair of name and size in bytes.
Base class for providing data for QgsPointCloudLayer.
PointCloudIndexGenerationState
Point cloud index state.
Smart pointer for QgsAbstractPointCloudIndex.
Point cloud layer specific subclass of QgsMapLayerElevationProperties.
Implementation of threaded rendering for point cloud layers.
Represents a map layer supporting display of point clouds.
PointCloudStatisticsCalculationState
Point cloud statistics calculation task.
QgsRectangle extent() const override
Returns the extent of the layer.
void raiseError(const QString &msg)
Signals an error related to this point cloud layer.
PointCloudStatisticsCalculationState statisticsCalculationState() const
Returns the status of point cloud statistics calculation.
QString profileSourceName() const override
Returns a name for displaying this profile source in the elevation profile layer tree.
QgsPointCloudLayer(const QgsPointCloudLayer &rhs)=delete
void statisticsCalculationStateChanged(QgsPointCloudLayer::PointCloudStatisticsCalculationState state)
Emitted when statistics calculation state has changed.
bool isVpc() const
Returns whether the layer has a virtual point cloud data provider or not.
QString profileSourceId() const override
Returns a unique identifier for this profile source.
const QgsPointCloudStatistics statistics() const
Returns the object containing statistics.
QgsAbstractProfileSource * profileSource() override
Returns the layer's profile source if it has profile capabilities.
QgsPointCloudLayer(const QString &uri=QString(), const QString &baseName=QString(), const QString &providerLib=u"pointcloud"_s, const QgsPointCloudLayer::LayerOptions &options=QgsPointCloudLayer::LayerOptions())
Constructor - creates a point cloud layer.
friend class TestQgsVirtualPointCloudProvider
void subsetStringChanged()
Emitted when the layer's subset string has changed.
QgsPointCloudLayer & operator=(QgsPointCloudLayer const &rhs)=delete
void chunkAttributeValuesChanged(const QgsPointCloudNodeId &n, const int position)
Emitted when a node gets some attribute values of some points changed.
QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext) override
Returns new instance of QgsMapLayerRenderer that will be used for rendering of given context.
Represents an indexed point cloud node's position in octree.
Abstract base class for 2d point cloud renderers.
Used to store statistics of a point cloud dataset.
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
A container for the context for various read/write operations on objects.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
#define SIP_ENUM_BASETYPE(type)
Setting options for creating vector data providers.
Setting options for loading point cloud layers.
bool skipCrsValidation
Controls whether the layer is allowed to have an invalid/unknown CRS.
bool skipStatisticsCalculation
Set to true if the statistics calculation for this point cloud is disabled.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
bool skipIndexGeneration
Set to true if point cloud index generation should be skipped.
LayerOptions(const QgsCoordinateTransformContext &transformContext=QgsCoordinateTransformContext())
Constructor for LayerOptions with optional transformContext.
QgsCoordinateTransformContext transformContext
Coordinate transform context.