knowL: Knowledge Libraries
Loading...
Searching...
No Matches
GeometryObject.h
1#pragma once
2
3#include <QVariant>
4#include <QSharedDataPointer>
5
6#include <Cartography/Forward.h>
7
8#include <knowCore/ReturnValue.h>
9
10#include "EuclidSystem.h"
11#include "Forward.h"
12
13#include <Cartography/GeometryObject.h>
14
15class QString;
16
17
18
19namespace knowCore
20{
21 template<>
22 struct FollowReturnValuePattern<Cartography::ReturnValue> : public std::true_type
23 {};
24}
25
26namespace knowGIS
27{
31 class GeometryObject : public Cartography::GeometryObject
32 {
33 public:
34 using Cartography::GeometryObject::GeometryObject;
35 using Cartography::GeometryObject::operator=;
36 GeometryObject(const Cartography::GeometryObject& _rhs) : Cartography::GeometryObject(_rhs)
37 {}
39 GeometryObject& operator=(const Cartography::GeometryObject& _rhs); // has to be explicitly defined because of deprecation of generated ones
43 Point toPoint() const;
47 Point centroid() const;
48 public:
49 static knowCore::ReturnValue<GeometryObject> fromEWKB(const QByteArray& _data) { return Cartography::GeometryObject::fromEWKB(_data); }
50 static knowCore::ReturnValue<GeometryObject> fromWKB(const QByteArray& _data, bool _extented = false) { return Cartography::GeometryObject::fromWKB(_data, _extented); }
51 static knowCore::ReturnValue<GeometryObject> fromWKT(const QString& _data) { return Cartography::GeometryObject::fromWKT(_data); }
52 static knowCore::ReturnValue<GeometryObject> fromGML(const QString& _data) { return Cartography::GeometryObject::fromGML(_data); }
53 static knowCore::ReturnValue<GeometryObject> fromJson(const QString& _data) { return Cartography::GeometryObject::fromJson(_data); }
54 static knowCore::ReturnValue<GeometryObject> fromJsonValue(const QJsonValue& _data) { return Cartography::GeometryObject::fromJsonValue(_data); }
58 static knowCore::ReturnValue<GeometryObject> fromGeoVariant(const QVariant& _data) { return Cartography::GeometryObject::fromGeoVariant(_data); }
59 static knowCore::ReturnValue<GeometryObject> polygon(const QVariantList& _exteriorRing, const QVariantList& _interiorRings = QVariantList()) { return Cartography::GeometryObject::polygon(_exteriorRing, _interiorRings); }
60 public:
61 static QList<GeometryObject> load(const QString& _filename);
62 };
63}
64
65#include <knowCore/Formatter.h>
66KNOWCORE_CORE_DECLARE_FORMATTER(knowGIS::GeometryObject)
67{
68 if(p.isValid())
69 {
70 return forward(p.toWKT(), ctx);
71 } else {
72 return forward("[invalid geometry]", ctx);
73 }
74}
75
76#include <knowCore/MetaType.h>
77KNOWCORE_DECLARE_FULL_METATYPE(knowGIS, GeometryObject)
78
79#include "Operators.h"
80
81namespace knowGIS
82{
83 template<>
85 {
86 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
87 {
88 return _lhs.intersects(_rhs);
89 }
90 };
91 template<>
93 {
94 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
95 {
96 return _lhs.overlaps(_rhs);
97 }
98 };
99 template<>
101 {
102 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
103 {
104 return _lhs.contains(_rhs);
105 }
106 };
107 template<>
109 {
110 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
111 {
112 return _lhs.within(_rhs);
113 }
114 };
115 template<>
117 {
118 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
119 {
120 return _lhs.touches(_rhs);
121 }
122 };
123 template<>
125 {
126 bool operator()(const GeometryObject& _lhs, const GeometryObject& _rhs) const
127 {
128 return _lhs.disjoint(_rhs);
129 }
130 };
131}
Definition Forward.h:12
Definition ReturnValue.h:29
Definition GeometryObject.h:32
Point toPoint() const
Definition GeometryObject.cpp:47
static knowCore::ReturnValue< GeometryObject > fromGeoVariant(const QVariant &_data)
Definition GeometryObject.h:58
Point centroid() const
Definition GeometryObject.cpp:58
Definition Point.h:11
Definition ReturnValue.h:21
Definition Operators.h:8
Definition Operators.h:14
Definition Operators.h:6
Definition Operators.h:4
Definition Operators.h:12
Definition Operators.h:10