iVS3D v2.0.0
Loading...
Searching...
No Matches
geodistance.h
1#ifndef IVS3D_GEODISTANCEPLUGIN_H
2#define IVS3D_GEODISTANCEPLUGIN_H
3
4// Std
5#include <cmath>
6#include <memory>
7
8// Qt
9#include <QCheckBox>
10#include <QLabel>
11#include <QLayout>
12#include <QObject>
13#include <QPushButton>
14#include <QSpinBox>
15#include <QWidget>
16#include <QGeoCoordinate>
17#include <QCoreApplication>
18
19// iVS3D-core
20#include "../iVS3D-core/model/progressable.h"
21#include "../iVS3D-core/model/reader/reader.h"
22#include "../iVS3D-core/plugin/signalobject.h"
23
24// iVS3D-pluginInterface
25#include "../iVS3D-pluginInterface/ialgorithm.h"
26
27
28#define DESCRIPTION_STYLE "color: rgb(58, 58, 58); border-left: 6px solid rgb(58, 58, 58); " \
29 "border-top-right-radius: 5px; border-bottom-right-radius: 5px; " \
30 "background-color: lightblue;"
31
32#define NAME_Distance "Distance"
33#define NAME_Altitude "Altitude"
45class GeoDistance : public IAlgorithm
46{
47 Q_OBJECT
48
49 // implement interface as plugin, use the iid as identifier
50 Q_PLUGIN_METADATA(IID "iVS3D.IAlgorithm")
51
52 // declare this as implementation of IAlgorithm interface
53 Q_INTERFACES(IAlgorithm)
54
55 //--- METHOD DECLARATION ---//
56
57 public:
64
68 virtual ~GeoDistance();
69
78 QWidget* getSettingsWidget(QWidget* parent) override;
79
84 QString getName() const override;
85
99 std::vector<uint> sampleImages(const std::vector<uint>& imageList,
100 Progressable* receiver, volatile bool* stopped,
101 bool useCuda, LogFileParent* logFile) override;
102
110 void initialize(Reader* reader, QMap<QString, QVariant> buffer, signalObject* sigObj) override;
111
116 void setSettings(QMap<QString, QVariant> settings) override;
117
122 QMap<QString, QVariant> getSettings() override;
123
132 QMap<QString, QVariant> generateSettings(Progressable* receiver, bool useCuda,
133 volatile bool* stopped) override;
134
135 public slots:
136
140 void onNewMetaData();
145 void onKeyframesChanged(std::vector<uint> keyframes);
146
151 void slot_distChanged(double n);
152
157 void slot_altitudeCheckChanged(bool check);
158
159
160 private:
161 void createSettingsWidget(QWidget* parent);
162
163 void readMetaData();
164
165 std::vector<unsigned int> getKeyframesFromGps();
166
167 QPointF gpsHashToLatLong(QVariant hash);
168 QGeoCoordinate gpsHashtoGeoCo(QVariant hash);
169
170 double distanceBetweenPoints(int first, int second);
171 double greatCircleDistance(QPointF first, QPointF second);
172 //--- MEMBER DECLARATION ---//
173
174 private:
177
180
183
185 QMap<QString, QVariant> mBuffer;
186
188 QList<QVariant> mMetaData;
189
191 bool mAltitudeExisting = false;
192
194 QList<QPair<QPointF, bool>> mGpsData;
195
198
200 QDoubleSpinBox* mpSpinBoxDist;
201
203 QCheckBox* mpAltitudeCheckBox = nullptr;
204
206 bool mUseAltitude = false;
207
209 double mDistance = 1;
210
211};
212
213#endif // IVS3D_GEODISTANCEPLUGIN_H
...
Definition geodistance.h:46
QMap< QString, QVariant > getSettings() override
getter for plugin's settings
Definition geodistance.cpp:147
QMap< QString, QVariant > mBuffer
Buffered data form last call to sampleImages.
Definition geodistance.h:185
QList< QVariant > mMetaData
List of available meta data.
Definition geodistance.h:188
QMap< QString, QVariant > generateSettings(Progressable *receiver, bool useCuda, volatile bool *stopped) override
generateSettings tries to generate the best settings for the current input
Definition geodistance.cpp:158
GeoDistance()
Construct and initialize plugin with default parameterization.
Definition geodistance.cpp:12
void onKeyframesChanged(std::vector< uint > keyframes)
onKeyframesChanged Slot is triggerd if the core emtis new keyframes
Definition geodistance.cpp:173
double mDistance
distance for sampling set by the user
Definition geodistance.h:209
void initialize(Reader *reader, QMap< QString, QVariant > buffer, signalObject *sigObj) override
initialize the the IAlgorithm and the settings widget with plausible values from the Reader.
Definition geodistance.cpp:100
bool mIsGpsAvailable
Flag indicating if GPS data is available.
Definition geodistance.h:197
QCheckBox * mpAltitudeCheckBox
Pointer to altitude check box.
Definition geodistance.h:203
Reader * mpReader
Pointer to reader object of iVS3D-core.
Definition geodistance.h:179
virtual ~GeoDistance()
Destroy object of GeoMapPlugin.
Definition geodistance.cpp:29
QDoubleSpinBox * mpSpinBoxDist
Pointer to distance spin box.
Definition geodistance.h:200
bool mAltitudeExisting
Flag indicating if altitude data is available.
Definition geodistance.h:191
QString getName() const override
getName returns the display name for the plugin. This name is presented to the user.
Definition geodistance.cpp:45
QWidget * getSettingsWidget(QWidget *parent) override
getSettingsWidget is provides an QWidget to display plugin specific settings to the user....
Definition geodistance.cpp:35
void slot_altitudeCheckChanged(bool check)
slot_altitudeCheckChanged triggered with check box mpAltitudeCheck
Definition geodistance.cpp:251
QList< QPair< QPointF, bool > > mGpsData
List of GPS data associated with the images.
Definition geodistance.h:194
std::vector< uint > sampleImages(const std::vector< uint > &imageList, Progressable *receiver, volatile bool *stopped, bool useCuda, LogFileParent *logFile) override
sampleImages selects the keyframes from the given images. The computation is based on the images prov...
Definition geodistance.cpp:51
void onNewMetaData()
onNewMetaData Slot is triggerd if the core loads new meta data
Definition geodistance.cpp:165
QWidget * mpSamplingWidget
Pointer to the sampling widget.
Definition geodistance.h:182
void slot_distChanged(double n)
slot_devChanged Slot is triggerd when the value of mpSpinBoxDist is changed
Definition geodistance.cpp:246
void setSettings(QMap< QString, QVariant > settings) override
setter for plugin's settings
Definition geodistance.cpp:130
signalObject * mpSigObj
Pointer to signal object of iVS3D-core.
Definition geodistance.h:176
bool mUseAltitude
sampling flag indicating if altitude data should be used for distance calculation
Definition geodistance.h:206
The IAlgorithm interface is used to include plugin implementations for different sampling algorithms....
Definition ialgorithm.h:35
The LogFileParent class logs progress as well as information about a process (e.g....
Definition LogFileParent.h:30
The Progressable interface is used to by multithreaded actions such as sampling or exporting to repor...
Definition progressable.h:18
The Reader interface defines functions which are used for reading and parsing the import.
Definition reader.h:23
Definition signalobject.h:10