QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ShapeFileHelper.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QList>
4#include <QtCore/QLoggingCategory>
5#include <QtCore/QObject>
6#include <QtPositioning/QGeoCoordinate>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9Q_DECLARE_LOGGING_CATEGORY(ShapeFileHelperLog)
10
11
12class ShapeFileHelper : public QObject
13{
14 Q_OBJECT
15 QML_ELEMENT
16 QML_SINGLETON
17 Q_PROPERTY(QStringList fileDialogKMLFilters READ fileDialogKMLFilters CONSTANT)
18 Q_PROPERTY(QStringList fileDialogKMLOrSHPFilters READ fileDialogKMLOrSHPFilters CONSTANT)
19
20public:
21 static QStringList fileDialogKMLFilters();
22 static QStringList fileDialogKMLOrSHPFilters();
23
24 enum class ShapeType {
25 Polygon,
26 Polyline,
27 Point,
28 Error
29 };
30
32 static constexpr double kDefaultVertexFilterMeters = 5.0;
33
34 static ShapeType determineShapeType(const QString &file, QString &errorString);
35
37 static int getEntityCount(const QString &file, QString &errorString);
38
41 static bool loadPolygonsFromFile(const QString &file, QList<QList<QGeoCoordinate>> &polygons, QString &errorString,
42 double filterMeters = kDefaultVertexFilterMeters);
43
46 static bool loadPolylinesFromFile(const QString &file, QList<QList<QGeoCoordinate>> &polylines, QString &errorString,
47 double filterMeters = kDefaultVertexFilterMeters);
48
50 static bool loadPointsFromFile(const QString &file, QList<QGeoCoordinate> &points, QString &errorString);
51
52 static constexpr const char *kmlFileExtension = ".kml";
53 static constexpr const char *shpFileExtension = ".shp";
54
55private:
56 enum class ShapeFileType {
57 None,
58 KML,
59 SHP
60 };
61 static ShapeFileType _getShapeFileType(const QString &file, QString &errorString);
62};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
QString errorString
Routines for loading polygons or polylines from KML or SHP files.