knowL: Knowledge Libraries
Loading...
Searching...
No Matches
GeometryObject.h
1#pragma once
2
3#include <QSharedDataPointer>
4#include <QVariant>
5
6#include <Cartography/Forward.h>
7
8#include <clog_qt>
9#include <cres_qt>
10
11#include "EuclidSystem.h"
12#include "Forward.h"
13
14#include <Cartography/GeometryObject.h>
15
16class QString;
17
18namespace knowGIS
19{
23 class GeometryObject : public Cartography::GeometryObject
24 {
25 public:
26 using Cartography::GeometryObject::GeometryObject;
27 using Cartography::GeometryObject::operator=;
28 GeometryObject(const Cartography::GeometryObject& _rhs) : Cartography::GeometryObject(_rhs) {}
31 operator=(const Cartography::GeometryObject& _rhs); // has to be explicitly defined because
32 // of deprecation of generated ones
36 Point toPoint() const;
40 Point centroid() const;
41 public:
42 static cres_qresult<GeometryObject> fromEWKB(const QByteArray& _data)
43 {
44 return Cartography::GeometryObject::fromEWKB(_data);
45 }
46 static cres_qresult<GeometryObject> fromWKB(const QByteArray& _data, bool _extented = false)
47 {
48 return Cartography::GeometryObject::fromWKB(_data, _extented);
49 }
50 static cres_qresult<GeometryObject> fromWKT(const QString& _data)
51 {
52 return Cartography::GeometryObject::fromWKT(_data);
53 }
54 static cres_qresult<GeometryObject> fromGML(const QString& _data)
55 {
56 return Cartography::GeometryObject::fromGML(_data);
57 }
58 static cres_qresult<GeometryObject> fromJson(const QString& _data)
59 {
60 return Cartography::GeometryObject::fromJson(_data);
61 }
62 static cres_qresult<GeometryObject> fromJsonValue(const QJsonValue& _data)
63 {
64 return Cartography::GeometryObject::fromJsonValue(_data);
65 }
70 static cres_qresult<GeometryObject> fromGeoVariant(const QVariant& _data)
71 {
72 return Cartography::GeometryObject::fromGeoVariant(_data);
73 }
74 static cres_qresult<GeometryObject> polygon(const QVariantList& _exteriorRing,
75 const QVariantList& _interiorRings = QVariantList())
76 {
77 return Cartography::GeometryObject::polygon(_exteriorRing, _interiorRings);
78 }
79 public:
80 static QList<GeometryObject> load(const QString& _filename);
81 };
82} // namespace knowGIS
83
84#include <knowCore/Formatter.h>
85clog_format_declare_formatter(knowGIS::GeometryObject)
86{
87 if(p.isValid())
88 {
89 return std::format_to(ctx.out(), "{}", p.toWKT());
90 }
91 else
92 {
93 return std::format_to(ctx.out(), "[invalid geometry]");
94 }
95}
96
97#include <knowCore/MetaType.h>
98KNOWCORE_DECLARE_FULL_METATYPE(knowGIS, GeometryObject);
99
100#include "Operators.h"
101
102namespace knowGIS
103{
104 template<>
106 {
107 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
108 {
109 return _lhs.intersects(_rhs);
110 }
111 };
112 template<>
114 {
115 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
116 {
117 return _lhs.overlaps(_rhs);
118 }
119 };
120 template<>
122 {
123 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
124 {
125 return _lhs.contains(_rhs);
126 }
127 };
128 template<>
130 {
131 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
132 {
133 return _lhs.within(_rhs);
134 }
135 };
136 template<>
138 {
139 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
140 {
141 return _lhs.touches(_rhs);
142 }
143 };
144 template<>
146 {
147 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
148 {
149 return _lhs.disjoint(_rhs);
150 }
151 };
152} // namespace knowGIS
Definition Forward.h:14
Definition GeometryObject.h:24
Point toPoint() const
Definition GeometryObject.cpp:42
static cres_qresult< GeometryObject > fromGeoVariant(const QVariant &_data)
Definition GeometryObject.h:70
Point centroid() const
Definition GeometryObject.cpp:55
Definition Point.h:12
Definition Operators.h:8
Definition Operators.h:14
Definition Operators.h:6
Definition Operators.h:4
Definition Operators.h:12
Definition Operators.h:10