QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsremotecopcpointcloudindex.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsremotecopcpointcloudindex.h
3 --------------------
4 begin : March 2022
5 copyright : (C) 2022 by Belgacem Nedjima
6 email : belgacem dot nedjima at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSREMOTECOPCPOINTCLOUDINDEX_H
19#define QGSREMOTECOPCPOINTCLOUDINDEX_H
20
21#include <QObject>
22#include <QString>
23#include <QHash>
24#include <QStringList>
25#include <QVector>
26#include <QList>
27#include <QFile>
28#include <QUrl>
29#include <QSet>
30
31#include <sstream>
32
33#include "qgspointcloudindex.h"
35#include "qgslazinfo.h"
36
37#include "lazperf/header.hpp"
38#include "lazperf/vlr.hpp"
39
41#define SIP_NO_FILE
42
46
47class CORE_EXPORT QgsRemoteCopcPointCloudIndex: public QgsCopcPointCloudIndex
48{
49 Q_OBJECT
50 public:
51
52 explicit QgsRemoteCopcPointCloudIndex();
53 ~QgsRemoteCopcPointCloudIndex();
54
55 std::unique_ptr<QgsPointCloudIndex> clone() const override;
56
57 QList<IndexedPointCloudNode> nodeChildren( const IndexedPointCloudNode &n ) const override;
58
59 void load( const QString &url ) override;
60
61 QgsPointCloudBlock *nodeData( const IndexedPointCloudNode &n, const QgsPointCloudRequest &request ) override;
62 QgsPointCloudBlockRequest *asyncNodeData( const IndexedPointCloudNode &n, const QgsPointCloudRequest &request ) override;
63
64 bool hasNode( const IndexedPointCloudNode &n ) const override;
65
66 bool isValid() const override;
67
68 QgsPointCloudIndex::AccessType accessType() const override { return QgsPointCloudIndex::Remote; }
69
74 void copyCommonProperties( QgsRemoteCopcPointCloudIndex *destination ) const;
75
76 protected:
77 virtual bool fetchNodeHierarchy( const IndexedPointCloudNode &nodeId ) const override;
78 virtual void fetchHierarchyPage( uint64_t offset, uint64_t byteSize ) const override;
79
80 QUrl mUrl;
81
82 mutable QSet<IndexedPointCloudNode> mHierarchyNodes;
83};
84
86
87#endif // QGSREMOTECOPCPOINTCLOUDINDEX_H
Represents a indexed point cloud node in octree.
This class represents a coordinate reference system (CRS).
Base class for handling loading QgsPointCloudBlock asynchronously from a remote COPC dataset.
Base class for handling loading QgsPointCloudBlock asynchronously.
Base class for storing raw data from point cloud nodes.
AccessType
The access type of the data, local is for local files and remote for remote files (over HTTP)
@ Remote
Remote means it's loaded through a protocol like HTTP.
Point cloud data request.
Tile download manager handles downloads of map tiles for the purpose of map rendering.