QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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"
34 #include "qgscopcpointcloudindex.h"
35 #include "qgslazinfo.h"
36 
37 #include "lazperf/header.hpp"
38 #include "lazperf/vlr.hpp"
39 
41 #define SIP_NO_FILE
42 
46 
47 class 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
QgsTileDownloadManager
Tile download manager handles downloads of map tiles for the purpose of map rendering....
Definition: qgstiledownloadmanager.h:202
qgslazinfo.h
QgsPointCloudIndex::Remote
@ Remote
Remote means it's loaded through a protocol like HTTP.
Definition: qgspointcloudindex.h:171
QgsPointCloudBlock
Base class for storing raw data from point cloud nodes.
Definition: qgspointcloudblock.h:38
QgsPointCloudRequest
Point cloud data request.
Definition: qgspointcloudrequest.h:39
IndexedPointCloudNode
Represents a indexed point cloud node in octree.
Definition: qgspointcloudindex.h:57
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:211
qgspointcloudindex.h
QgsPointCloudBlockRequest
Base class for handling loading QgsPointCloudBlock asynchronously.
Definition: qgspointcloudblockrequest.h:36
QgsPointCloudIndex::AccessType
AccessType
The access type of the data, local is for local files and remote for remote files (over HTTP)
Definition: qgspointcloudindex.h:168
QgsCopcPointCloudBlockRequest
Base class for handling loading QgsPointCloudBlock asynchronously from a remote COPC dataset.
Definition: qgscopcpointcloudblockrequest.h:39
qgscopcpointcloudindex.h