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.