GEOS 3.14.0dev
|
#include <CoverageSimplifier.h>
Public Member Functions | |
CoverageSimplifier (const std::vector< const Geometry * > &coverage) | |
std::vector< std::unique_ptr< Geometry > > | simplify (double tolerance) |
std::vector< std::unique_ptr< Geometry > > | simplifyInner (double tolerance) |
Static Public Member Functions | |
static std::vector< std::unique_ptr< Geometry > > | simplify (std::vector< const Geometry * > &coverage, double tolerance) |
static std::vector< std::unique_ptr< Geometry > > | simplify (const std::vector< std::unique_ptr< Geometry > > &coverage, double tolerance) |
static std::vector< std::unique_ptr< Geometry > > | simplifyInner (std::vector< const Geometry * > &coverage, double tolerance) |
static std::vector< std::unique_ptr< Geometry > > | simplifyInner (const std::vector< std::unique_ptr< Geometry > > &coverage, double tolerance) |
Simplifies the boundaries of the polygons in a polygonal coverage while preserving the original coverage topology. An area-based simplification algorithm (similar to Visvalingam-Whyatt simplification) is used to provide high-quality results. Also supports simplifying just the inner edges in a coverage, which allows simplifying "patches" without affecting their boundary.
The amount of simplification is determined by a tolerance value, which is a non-negative quantity. It equates roughly to the maximum distance by which a simplified line can change from the original. (In fact, it is the square root of the area tolerance used in the Visvalingam-Whyatt algorithm.)
The simplified result coverage has the following characteristics:
This class also supports inner simplification, which simplifies only edges of the coverage which are adjacent to two polygons. This allows partial simplification of a coverage, since a simplified subset of a coverage still matches the remainder of the coverage.
The input coverage should be valid according to CoverageValidator
.
geos::coverage::CoverageSimplifier::CoverageSimplifier | ( | const std::vector< const Geometry * > & | coverage | ) |
Create a new coverage simplifier instance.
coverage | a set of polygonal geometries forming a coverage |
std::vector< std::unique_ptr< Geometry > > geos::coverage::CoverageSimplifier::simplify | ( | double | tolerance | ) |
Computes the simplified coverage, preserving the coverage topology.
tolerance | the simplification tolerance |
|
static |
Simplifies the boundaries of a set of polygonal geometries forming a coverage, preserving the coverage topology.
coverage | a set of polygonal geometries forming a coverage |
tolerance | the simplification tolerance |
std::vector< std::unique_ptr< Geometry > > geos::coverage::CoverageSimplifier::simplifyInner | ( | double | tolerance | ) |
Computes the inner-boundary simplified coverage, preserving the coverage topology, and leaving outer boundary edges unchanged.
tolerance | the simplification tolerance |
|
static |
Simplifies the inner boundaries of a set of polygonal geometries forming a coverage, preserving the coverage topology. Edges which form the exterior boundary of the coverage are left unchanged.
coverage | a set of polygonal geometries forming a coverage |
tolerance | the simplification tolerance |