|
| RectangleIntersection (const geom::Geometry &geom, const Rectangle &rect) |
|
std::unique_ptr< geom::Geometry > | clipBoundary () |
|
std::unique_ptr< geom::Geometry > | clip () |
|
void | clip_geom (const geom::Geometry *g, RectangleIntersectionBuilder &parts, const Rectangle &rect, bool keep_polygons) |
|
void | clip_point (const geom::Point *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
void | clip_multipoint (const geom::MultiPoint *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
void | clip_linestring (const geom::LineString *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
void | clip_multilinestring (const geom::MultiLineString *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
void | clip_polygon (const geom::Polygon *g, RectangleIntersectionBuilder &parts, const Rectangle &rect, bool keep_polygons) |
|
void | clip_multipolygon (const geom::MultiPolygon *g, RectangleIntersectionBuilder &parts, const Rectangle &rect, bool keep_polygons) |
|
void | clip_geometrycollection (const geom::GeometryCollection *g, RectangleIntersectionBuilder &parts, const Rectangle &rect, bool keep_polygons) |
|
void | clip_polygon_to_linestrings (const geom::Polygon *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
void | clip_polygon_to_polygons (const geom::Polygon *g, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
|
bool | clip_linestring_parts (const geom::LineString *gi, RectangleIntersectionBuilder &parts, const Rectangle &rect) |
| Clip geometry. More...
|
|
Speed-optimized clipping of a Geometry with a rectangle.
Two different methods are provided. The first performs normal clipping, the second clips the boundaries of polygons, not the polygons themselves. In the first case a polygon will remain a polygon or is completely cut out. In the latter case polygons will be converted to polylines if any vertex is outside the clipping rectangle, or will be cut out completely.
The algorithm works best when the number of intersections is very low. For example, if the geometry is completely to the left of the clipping rectangle, only the x-coordinate of the geometry is ever tested and is only compared with the x-coordinate of the left edge of the rectangle. Hence clipping may be faster than calculating the envelope of the geometry for trivial overlap tests.
The input geometry must be valid. In particular all LinearRings must be properly closed, or the algorithm may not terminate.
Definition at line 75 of file RectangleIntersection.h.