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/QObject>
5#include <QtPositioning/QGeoCoordinate>
6#include <QtQmlIntegration/QtQmlIntegration>
7
10class ShapeFileHelper : public QObject
11{
12 Q_OBJECT
13 QML_ELEMENT
14 QML_SINGLETON
15 Q_PROPERTY(QStringList fileDialogKMLFilters READ fileDialogKMLFilters CONSTANT)
16 Q_PROPERTY(QStringList fileDialogKMLOrSHPFilters READ fileDialogKMLOrSHPFilters CONSTANT)
17
18public:
19 static QStringList fileDialogKMLFilters();
20 static QStringList fileDialogKMLOrSHPFilters();
21
22 enum class ShapeType {
23 Polygon,
25 Point,
26 Error
27 };
28
30 static constexpr double kDefaultVertexFilterMeters = 5.0;
31
32 static ShapeType determineShapeType(const QString &file, QString &errorString);
33
35 static int getEntityCount(const QString &file, QString &errorString);
36
39 static bool loadPolygonsFromFile(const QString &file, QList<QList<QGeoCoordinate>> &polygons, QString &errorString,
40 double filterMeters = kDefaultVertexFilterMeters);
41
44 static bool loadPolylinesFromFile(const QString &file, QList<QList<QGeoCoordinate>> &polylines, QString &errorString,
45 double filterMeters = kDefaultVertexFilterMeters);
46
48 static bool loadPointsFromFile(const QString &file, QList<QGeoCoordinate> &points, QString &errorString);
49
50 static constexpr const char *kmlFileExtension = ".kml";
51 static constexpr const char *shpFileExtension = ".shp";
52
53private:
54 enum class ShapeFileType {
55 None,
56 KML,
57 SHP
58 };
59 static ShapeFileType _getShapeFileType(const QString &file, QString &errorString);
60};
QString errorString
Routines for loading polygons or polylines from KML or SHP files.
static constexpr double kDefaultVertexFilterMeters
Default distance threshold for filtering nearby vertices (meters)
static bool loadPolylinesFromFile(const QString &file, QList< QList< QGeoCoordinate > > &polylines, QString &errorString, double filterMeters=kDefaultVertexFilterMeters)
static constexpr const char * shpFileExtension
static ShapeType determineShapeType(const QString &file, QString &errorString)
static constexpr const char * kmlFileExtension
static QStringList fileDialogKMLOrSHPFilters()
static QStringList fileDialogKMLFilters()
static bool loadPointsFromFile(const QString &file, QList< QGeoCoordinate > &points, QString &errorString)
Load point entities.
static int getEntityCount(const QString &file, QString &errorString)
Get the number of geometry entities in the file.
static bool loadPolygonsFromFile(const QString &file, QList< QList< QGeoCoordinate > > &polygons, QString &errorString, double filterMeters=kDefaultVertexFilterMeters)