|
static bool | isFloating (const PrecisionModel *pm) |
|
static bool | clippingEnvelope (int opCode, const InputGeometry *inputGeom, const PrecisionModel *pm, Envelope &rsltEnvelope) |
|
static bool | isEmptyResult (int opCode, const Geometry *a, const Geometry *b, const PrecisionModel *pm) |
|
static bool | isEnvDisjoint (const Geometry *a, const Geometry *b, const PrecisionModel *pm) |
|
static std::unique_ptr< Geometry > | createEmptyResult (int dim, const GeometryFactory *geomFact) |
|
static int | resultDimension (int opCode, int dim0, int dim1) |
|
static std::unique_ptr< Geometry > | createResultGeometry (std::vector< std::unique_ptr< Polygon > > &resultPolyList, std::vector< std::unique_ptr< LineString > > &resultLineList, std::vector< std::unique_ptr< Point > > &resultPointList, const GeometryFactory *geometryFactory) |
|
static std::unique_ptr< Geometry > | toLines (OverlayGraph *graph, bool isOutputEdges, const GeometryFactory *geomFact) |
|
static bool | isResultAreaConsistent (const Geometry *geom0, const Geometry *geom1, int opCode, const Geometry *result) |
|
static bool | round (const Point *pt, const PrecisionModel *pm, Coordinate &rsltCoord) |
|
template<typename T > |
static void | moveGeometry (std::vector< std::unique_ptr< T > > &inGeoms, std::vector< std::unique_ptr< Geometry > > &outGeoms) |
|
Utility methods for overlay processing.
- Author
- mdavis
Computes a clipping envelope for overlay input geometries. The clipping envelope encloses all geometry line segments which might participate in the overlay, with a buffer to account for numerical precision (in particular, rounding due to a precision model. The clipping envelope is used in both the RingClipper
and in the LineLimiter
.
Some overlay operations (i.e. UNION and SYMDIFFERENCE cannot use clipping as an optimization, since the result envelope is the full extent of the two input geometries. In this case the returned envelope is null to indicate this.