18#ifndef QGSCOPCPOINTCLOUDINDEX_H
19#define QGSCOPCPOINTCLOUDINDEX_H
35#include "lazperf/vlr.hpp"
47 explicit QgsCopcPointCloudIndex();
48 ~QgsCopcPointCloudIndex();
50 std::unique_ptr<QgsPointCloudIndex>
clone()
const override;
52 void load(
const QString &fileName )
override;
93 bool gpsTimeFlag()
const;
105 virtual void fetchHierarchyPage( uint64_t offset, uint64_t byteSize )
const;
107 void populateHierarchy(
const char *hierarchyPageData, uint64_t byteSize )
const;
109 QByteArray fetchCopcStatisticsEvlrData();
111 bool mIsValid =
false;
113 mutable std::ifstream mCopcFile;
114 mutable lazperf::copc_info_vlr mCopcInfoVlr;
115 mutable QHash<IndexedPointCloudNode, QPair<uint64_t, int32_t>> mHierarchyNodePos;
117 QVariantMap mOriginalMetadata;
119 std::unique_ptr<QgsLazInfo> mLazInfo =
nullptr;
Represents a indexed point cloud node in octree.
This class represents a coordinate reference system (CRS).
Class for extracting information contained in LAZ file such as the public header block and variable l...
Base class for handling loading QgsPointCloudBlock asynchronously.
Represents a indexed point clouds data in octree.
virtual QgsPointCloudBlockRequest * asyncNodeData(const IndexedPointCloudNode &n, const QgsPointCloudRequest &request)=0
Returns a handle responsible for loading a node data block.
virtual QList< IndexedPointCloudNode > nodeChildren(const IndexedPointCloudNode &n) const
Returns all children of node.
AccessType
The access type of the data, local is for local files and remote for remote files (over HTTP)
@ Local
Local means the source is a local file on the machine.
virtual qint64 pointCount() const =0
Returns the number of points in the point cloud.
void copyCommonProperties(QgsPointCloudIndex *destination) const
Copies common properties to the destination index.
virtual AccessType accessType() const =0
Returns the access type of the data If the access type is Remote, data will be fetched from an HTTP s...
virtual std::unique_ptr< QgsPointCloudIndex > clone() const =0
Returns a clone of the current point cloud index object.
virtual bool isValid() const =0
Returns whether index is loaded and valid.
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate reference system of the point cloud index.
virtual bool hasNode(const IndexedPointCloudNode &n) const
Returns whether the octree contain given node.
virtual void load(const QString &fileName)=0
Loads the index from the file.
virtual bool hasStatisticsMetadata() const =0
Returns whether the dataset contains metadata of statistics.
virtual std::unique_ptr< QgsPointCloudBlock > nodeData(const IndexedPointCloudNode &n, const QgsPointCloudRequest &request)=0
Returns node data block.
virtual QVariantMap originalMetadata() const =0
Returns the original metadata map.
Point cloud data request.
Class used to store statistics of a point cloud dataset.