1#ifndef SQL_GIS_DIFFERENCE_FUNCTOR_H_INCLUDED
2#define SQL_GIS_DIFFERENCE_FUNCTOR_H_INCLUDED
35#include <boost/geometry.hpp>
56 boost::geometry::strategy::within::geographic_winding<Geographic_point>
59 boost::geometry::strategy::intersection::geographic_segments<>
76 std::unique_ptr<Cartesian_multipoint>
eval(
80 std::unique_ptr<Cartesian_multipoint>
eval(
82 std::unique_ptr<Cartesian_multipoint>
eval(
84 std::unique_ptr<Cartesian_multipoint>
eval(
95 std::unique_ptr<Cartesian_multilinestring>
eval(
97 std::unique_ptr<Cartesian_multilinestring>
eval(
99 std::unique_ptr<Cartesian_linestring>
eval(
101 std::unique_ptr<Cartesian_multilinestring>
eval(
104 std::unique_ptr<Cartesian_multilinestring>
eval(
117 std::unique_ptr<Cartesian_multipolygon>
eval(
121 std::unique_ptr<Cartesian_polygon>
eval(
123 std::unique_ptr<Cartesian_multipolygon>
eval(
141 std::unique_ptr<Cartesian_multipoint>
eval(
145 std::unique_ptr<Cartesian_multipoint>
eval(
147 std::unique_ptr<Cartesian_multipoint>
eval(
150 std::unique_ptr<Cartesian_multipoint>
eval(
159 std::unique_ptr<Cartesian_multilinestring>
eval(
161 std::unique_ptr<Cartesian_multilinestring>
eval(
164 std::unique_ptr<Cartesian_multilinestring>
eval(
166 std::unique_ptr<Cartesian_multilinestring>
eval(
169 std::unique_ptr<Cartesian_multilinestring>
eval(
172 std::unique_ptr<Cartesian_multilinestring>
eval(
184 std::unique_ptr<Cartesian_multipolygon>
eval(
186 std::unique_ptr<Cartesian_multipolygon>
eval(
188 std::unique_ptr<Cartesian_multipolygon>
eval(
190 std::unique_ptr<Cartesian_multipolygon>
eval(
193 std::unique_ptr<Cartesian_multipolygon>
eval(
204 std::unique_ptr<Geographic_multipoint>
eval(
206 std::unique_ptr<Geographic_multipoint>
eval(
208 std::unique_ptr<Geographic_multipoint>
eval(
210 std::unique_ptr<Geographic_multipoint>
eval(
212 std::unique_ptr<Geographic_multipoint>
eval(
223 std::unique_ptr<Geographic_multilinestring>
eval(
225 std::unique_ptr<Geographic_multilinestring>
eval(
227 std::unique_ptr<Geographic_linestring>
eval(
229 std::unique_ptr<Geographic_multilinestring>
eval(
232 std::unique_ptr<Geographic_multilinestring>
eval(
243 std::unique_ptr<Geographic_polygon>
eval(
245 std::unique_ptr<Geographic_multipolygon>
eval(
247 std::unique_ptr<Geographic_polygon>
eval(
249 std::unique_ptr<Geographic_polygon>
eval(
251 std::unique_ptr<Geographic_multipolygon>
eval(
275 std::unique_ptr<Geographic_multipoint>
eval(
277 std::unique_ptr<Geographic_multipoint>
eval(
279 std::unique_ptr<Geographic_multipoint>
eval(
281 std::unique_ptr<Geographic_multipoint>
eval(
284 std::unique_ptr<Geographic_multipoint>
eval(
293 std::unique_ptr<Geographic_multilinestring>
eval(
295 std::unique_ptr<Geographic_multilinestring>
eval(
298 std::unique_ptr<Geographic_multilinestring>
eval(
300 std::unique_ptr<Geographic_multilinestring>
eval(
303 std::unique_ptr<Geographic_multilinestring>
eval(
306 std::unique_ptr<Geographic_multilinestring>
eval(
316 std::unique_ptr<Geographic_multipolygon>
eval(
318 std::unique_ptr<Geographic_multipolygon>
eval(
320 std::unique_ptr<Geographic_multipolygon>
eval(
322 std::unique_ptr<Geographic_multipolygon>
eval(
324 std::unique_ptr<Geographic_multipolygon>
eval(
327 std::unique_ptr<Geographic_multipolygon>
eval(
A Cartesian 2d geometry collection.
Definition: geometries_cs.h:374
A Cartesian 2d linestring.
Definition: geometries_cs.h:70
A Cartesian 2d multilinestring.
Definition: geometries_cs.h:601
A Cartesian 2d multipoint.
Definition: geometries_cs.h:500
A Cartesian 2d multipolygon.
Definition: geometries_cs.h:719
A Cartesian 2d point.
Definition: geometries_cs.h:46
A Cartesian 2d polygon.
Definition: geometries_cs.h:268
Difference functor that calls Boost.Geometry with the correct parameter types.
Definition: difference_functor.h:49
double semi_major() const
Definition: difference_functor.h:65
double semi_minor() const
Definition: difference_functor.h:64
std::unique_ptr< Geometry > eval(const Geometry *g1, const Geometry *g2) const
Definition: difference_functor.cc:132
double m_semi_minor
Semi-minor axis of ellipsoid.
Definition: difference_functor.h:54
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:60
Difference(double semi_major, double semi_minor)
Definition: difference_functor.cc:116
std::unique_ptr< Geometry > operator()(const Geometry *g1, const Geometry *g2) const override
Definition: difference_functor.cc:124
double m_semi_major
Semi-major axis of ellipsoid.
Definition: difference_functor.h:52
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:57
The base class of all functors that takes two geometry arguments.
Definition: functor.h:164
A geographic (ellipsoidal) 2d geometry collection.
Definition: geometries_cs.h:437
A geographic (ellipsoidal) 2d linestring.
Definition: geometries_cs.h:124
A geographic (ellipsoidal) 2d multilinestring.
Definition: geometries_cs.h:660
A geographic (ellipsoidal) 2d multipoint.
Definition: geometries_cs.h:551
A geographic (ellipsoidal) 2d multipolygon.
Definition: geometries_cs.h:773
A geographic (ellipsoidal) 2d point.
Definition: geometries_cs.h:57
A geographic (ellipsoidal) 2d polygon.
Definition: geometries_cs.h:321
Abstract superclass for all geometric objects.
Definition: geometries.h:99
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.