1#ifndef SQL_GIS_DIFFERENCE_FUNCTOR_H_INCLUDED
2#define SQL_GIS_DIFFERENCE_FUNCTOR_H_INCLUDED
36#include <boost/geometry.hpp>
57 boost::geometry::strategy::within::geographic_winding<Geographic_point>
60 boost::geometry::strategy::intersection::geographic_segments<>
77 std::unique_ptr<Cartesian_multipoint>
eval(
81 std::unique_ptr<Cartesian_multipoint>
eval(
83 std::unique_ptr<Cartesian_multipoint>
eval(
85 std::unique_ptr<Cartesian_multipoint>
eval(
96 std::unique_ptr<Cartesian_multilinestring>
eval(
98 std::unique_ptr<Cartesian_multilinestring>
eval(
100 std::unique_ptr<Cartesian_linestring>
eval(
102 std::unique_ptr<Cartesian_multilinestring>
eval(
105 std::unique_ptr<Cartesian_multilinestring>
eval(
118 std::unique_ptr<Cartesian_multipolygon>
eval(
122 std::unique_ptr<Cartesian_polygon>
eval(
124 std::unique_ptr<Cartesian_multipolygon>
eval(
142 std::unique_ptr<Cartesian_multipoint>
eval(
146 std::unique_ptr<Cartesian_multipoint>
eval(
148 std::unique_ptr<Cartesian_multipoint>
eval(
151 std::unique_ptr<Cartesian_multipoint>
eval(
160 std::unique_ptr<Cartesian_multilinestring>
eval(
162 std::unique_ptr<Cartesian_multilinestring>
eval(
165 std::unique_ptr<Cartesian_multilinestring>
eval(
167 std::unique_ptr<Cartesian_multilinestring>
eval(
170 std::unique_ptr<Cartesian_multilinestring>
eval(
173 std::unique_ptr<Cartesian_multilinestring>
eval(
185 std::unique_ptr<Cartesian_multipolygon>
eval(
187 std::unique_ptr<Cartesian_multipolygon>
eval(
189 std::unique_ptr<Cartesian_multipolygon>
eval(
191 std::unique_ptr<Cartesian_multipolygon>
eval(
194 std::unique_ptr<Cartesian_multipolygon>
eval(
205 std::unique_ptr<Geographic_multipoint>
eval(
207 std::unique_ptr<Geographic_multipoint>
eval(
209 std::unique_ptr<Geographic_multipoint>
eval(
211 std::unique_ptr<Geographic_multipoint>
eval(
213 std::unique_ptr<Geographic_multipoint>
eval(
224 std::unique_ptr<Geographic_multilinestring>
eval(
226 std::unique_ptr<Geographic_multilinestring>
eval(
228 std::unique_ptr<Geographic_linestring>
eval(
230 std::unique_ptr<Geographic_multilinestring>
eval(
233 std::unique_ptr<Geographic_multilinestring>
eval(
244 std::unique_ptr<Geographic_polygon>
eval(
246 std::unique_ptr<Geographic_multipolygon>
eval(
248 std::unique_ptr<Geographic_polygon>
eval(
250 std::unique_ptr<Geographic_polygon>
eval(
252 std::unique_ptr<Geographic_multipolygon>
eval(
276 std::unique_ptr<Geographic_multipoint>
eval(
278 std::unique_ptr<Geographic_multipoint>
eval(
280 std::unique_ptr<Geographic_multipoint>
eval(
282 std::unique_ptr<Geographic_multipoint>
eval(
285 std::unique_ptr<Geographic_multipoint>
eval(
294 std::unique_ptr<Geographic_multilinestring>
eval(
296 std::unique_ptr<Geographic_multilinestring>
eval(
299 std::unique_ptr<Geographic_multilinestring>
eval(
301 std::unique_ptr<Geographic_multilinestring>
eval(
304 std::unique_ptr<Geographic_multilinestring>
eval(
307 std::unique_ptr<Geographic_multilinestring>
eval(
317 std::unique_ptr<Geographic_multipolygon>
eval(
319 std::unique_ptr<Geographic_multipolygon>
eval(
321 std::unique_ptr<Geographic_multipolygon>
eval(
323 std::unique_ptr<Geographic_multipolygon>
eval(
325 std::unique_ptr<Geographic_multipolygon>
eval(
328 std::unique_ptr<Geographic_multipolygon>
eval(
A Cartesian 2d geometry collection.
Definition: geometries_cs.h:375
A Cartesian 2d linestring.
Definition: geometries_cs.h:71
A Cartesian 2d multilinestring.
Definition: geometries_cs.h:602
A Cartesian 2d multipoint.
Definition: geometries_cs.h:501
A Cartesian 2d multipolygon.
Definition: geometries_cs.h:720
A Cartesian 2d point.
Definition: geometries_cs.h:47
A Cartesian 2d polygon.
Definition: geometries_cs.h:269
Difference functor that calls Boost.Geometry with the correct parameter types.
Definition: difference_functor.h:50
double semi_major() const
Definition: difference_functor.h:66
double semi_minor() const
Definition: difference_functor.h:65
std::unique_ptr< Geometry > eval(const Geometry *g1, const Geometry *g2) const
Definition: difference_functor.cc:133
double m_semi_minor
Semi-minor axis of ellipsoid.
Definition: difference_functor.h:55
boost::geometry::strategy::intersection::geographic_segments m_geographic_ll_la_aa_strategy
Strategy used for L/L, L/A and A/A.
Definition: difference_functor.h:61
Difference(double semi_major, double semi_minor)
Definition: difference_functor.cc:117
std::unique_ptr< Geometry > operator()(const Geometry *g1, const Geometry *g2) const override
Definition: difference_functor.cc:125
double m_semi_major
Semi-major axis of ellipsoid.
Definition: difference_functor.h:53
boost::geometry::strategy::within::geographic_winding< Geographic_point > m_geographic_pl_pa_strategy
Strategy used for P/L and P/A.
Definition: difference_functor.h:58
The base class of all functors that takes two geometry arguments.
Definition: functor.h:165
A geographic (ellipsoidal) 2d geometry collection.
Definition: geometries_cs.h:438
A geographic (ellipsoidal) 2d linestring.
Definition: geometries_cs.h:125
A geographic (ellipsoidal) 2d multilinestring.
Definition: geometries_cs.h:661
A geographic (ellipsoidal) 2d multipoint.
Definition: geometries_cs.h:552
A geographic (ellipsoidal) 2d multipolygon.
Definition: geometries_cs.h:774
A geographic (ellipsoidal) 2d point.
Definition: geometries_cs.h:58
A geographic (ellipsoidal) 2d polygon.
Definition: geometries_cs.h:322
Abstract superclass for all geometric objects.
Definition: geometries.h:100
This file contains the superclasses for GIS functors.
This file declares the geometry class hierarchy used by the server as the internal representation of ...
This file contains Boost.Geometry type traits declarations for Cartesian and geographic geometries.