23 #include <geos/export.h>
26 #include <geos/geom/Geometry.h>
27 #include <geos/geom/Envelope.h>
28 #include <geos/geom/LinearRing.h>
29 #include <geos/geom/Dimension.h>
37 class CoordinateArraySequence;
38 class CoordinateSequenceFilter;
78 std::unique_ptr<Polygon>
clone()
const
80 return std::unique_ptr<Polygon>(cloneImpl());
151 std::unique_ptr<Polygon> reverse()
const {
return std::unique_ptr<Polygon>(reverseImpl()); }
167 int compareToSameClass(
const Geometry* p)
const override;
190 Polygon(std::unique_ptr<LinearRing> && newShell,
193 Polygon(std::unique_ptr<LinearRing> && newShell,
194 std::vector<std::unique_ptr<LinearRing>> && newHoles,
201 std::unique_ptr<LinearRing> shell;
203 std::vector<std::unique_ptr<LinearRing>> holes;
205 Envelope::Ptr computeEnvelopeInternal()
const override;
208 getSortIndex()
const override
210 return SORTINDEX_POLYGON;
216 void normalize(
LinearRing* ring,
bool clockwise);
Geometry classes support the concept of applying a coordinate filter to every coordinate in the Geome...
Definition: CoordinateFilter.h:41
Interface for classes which provide operations that can be applied to the coordinates in a Coordinate...
Definition: CoordinateSequenceFilter.h:55
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
DimensionType
Definition: Dimension.h:29
Definition: GeometryComponentFilter.h:41
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:66
Geometry classes support the concept of applying a Geometry filter to the Geometry.
Definition: GeometryFilter.h:45
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:186
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:55
Represents a linear polygon, which may include holes.
Definition: Polygon.h:61
std::size_t getNumPoints() const override
Returns the count of this Geometrys vertices.
std::vector< std::unique_ptr< LinearRing > > releaseInteriorRings()
Take ownership of this Polygon's interior rings. After releasing the rings, the Polygon should be con...
void normalize() override
std::unique_ptr< Polygon > clone() const
Definition: Polygon.h:78
double getLength() const override
Returns the perimeter of this Polygon
const LinearRing * getInteriorRingN(std::size_t n) const
Get nth interior ring (hole)
uint8_t getCoordinateDimension() const override
Returns coordinate dimension.
const Coordinate * getCoordinate() const override
Returns a vertex of this Geometry, or NULL if this is the empty geometry.
int getBoundaryDimension() const override
Returns 1 (Polygon boundary is a MultiLineString)
Polygon(LinearRing *newShell, std::vector< LinearRing * > *newHoles, const GeometryFactory *newFactory)
std::string getGeometryType() const override
Return a string representation of this Geometry type.
std::unique_ptr< Geometry > convexHull() const override
Returns the smallest convex Polygon that contains all the points in the Geometry.
std::vector< const Polygon * > ConstVect
A vector of const Polygon pointers.
Definition: Polygon.h:68
std::size_t getNumInteriorRing() const
Returns number of interior rings (hole)
Polygon * cloneImpl() const override
Make a deep-copy of this Geometry.
Definition: Polygon.h:197
double getArea() const override
Returns the area of this Geometry.
Polygon * reverseImpl() const override
Make a geometry with coordinates in reverse order.
std::unique_ptr< CoordinateSequence > getCoordinates() const override
Returns this Geometry vertices. Caller takes ownership of the returned object.
bool isRectangle() const override
Polygon overrides to check for actual rectangle.
void apply_ro(CoordinateSequenceFilter &filter) const override
std::unique_ptr< LinearRing > releaseExteriorRing()
Take ownership of this Polygon's exterior ring. After releasing the exterior ring,...
bool isEmpty() const override
Returns whether or not the set of points in this Geometry is empty.
bool equalsExact(const Geometry *other, double tolerance=0) const override
Returns true iff the two Geometrys are of the same type and their vertices corresponding by index are...
Dimension::DimensionType getDimension() const override
Returns surface dimension (2)
const LinearRing * getExteriorRing() const
Returns the exterior ring (shell)
std::unique_ptr< Geometry > getBoundary() const override
Computes the boundary of this geometry.
GeometryTypeId getGeometryTypeId() const override
Return an integer representation of this Geometry type.
void apply_rw(CoordinateSequenceFilter &filter) override
GeometryTypeId
Geometry types.
Definition: Geometry.h:73
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25