GEOS
3.13.0dev
|
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple. More...
#include <LinearRing.h>
Public Member Functions | |
LinearRing (const LinearRing &lr) | |
LinearRing (CoordinateSequence::Ptr &&points, const GeometryFactory &newFactory) | |
Constructs a LinearRing with the given points. More... | |
std::unique_ptr< LinearRing > | clone () const |
int | getBoundaryDimension () const override |
Returns Dimension.FALSE , since by definition LinearRings do not have a boundary. More... | |
bool | isClosed () const override |
std::string | getGeometryType () const override |
Return a string representation of this Geometry type. | |
GeometryTypeId | getGeometryTypeId () const override |
Return an integer representation of this Geometry type. | |
void | setPoints (const CoordinateSequence *cl) |
std::unique_ptr< LinearRing > | reverse () const |
void | orient (bool isCW) |
![]() | |
std::unique_ptr< LineString > | clone () const |
Creates and returns a full copy of this LineString object (including all coordinates contained by it) More... | |
std::unique_ptr< CoordinateSequence > | getCoordinates () const override |
Returns this Geometry vertices. Caller takes ownership of the returned object. | |
const CoordinateSequence * | getCoordinatesRO () const |
Returns a read-only pointer to internal CoordinateSequence. | |
virtual const Coordinate & | getCoordinateN (std::size_t n) const |
std::unique_ptr< CoordinateSequence > | releaseCoordinates () |
Take ownership of the CoordinateSequence managed by this geometry. After releasing the coordinates, the geometry should be considered in a moved-from state and should not be accessed. More... | |
Dimension::DimensionType | getDimension () const override |
Returns line dimension (1) | |
int | getBoundaryDimension () const override |
Returns Dimension::False for a closed LineString, 0 otherwise (LineString boundary is a MultiPoint) | |
uint8_t | getCoordinateDimension () const override |
Returns coordinate dimension. | |
bool | hasM () const override |
bool | hasZ () const override |
std::unique_ptr< Geometry > | getBoundary () const override |
Returns a MultiPoint. Empty for closed LineString, a Point for each vertex otherwise. | |
bool | isEmpty () const override |
Returns whether or not the set of points in this Geometry is empty. | |
std::size_t | getNumPoints () const override |
Returns the count of this Geometrys vertices. | |
virtual std::unique_ptr< Point > | getPointN (std::size_t n) const |
virtual std::unique_ptr< Point > | getStartPoint () const |
Return the start point of the LineString or NULL if this is an EMPTY LineString. | |
virtual std::unique_ptr< Point > | getEndPoint () const |
Return the end point of the LineString or NULL if this is an EMPTY LineString. | |
virtual bool | isRing () const |
std::string | getGeometryType () const override |
Return a string representation of this Geometry type. | |
GeometryTypeId | getGeometryTypeId () const override |
Return an integer representation of this Geometry type. | |
virtual bool | isCoordinate (Coordinate &pt) const |
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 equal up to a specified distance tolerance. Geometries are not required to have the same dimemsion; any Z/M values are ignored. | |
bool | equalsIdentical (const Geometry *other) const override |
Returns true if the two geometries are of the same type and their vertices corresponding by index are equal in all dimensions. | |
void | apply_rw (const CoordinateFilter *filter) override |
void | apply_ro (CoordinateFilter *filter) const override |
void | apply_rw (GeometryFilter *filter) override |
void | apply_ro (GeometryFilter *filter) const override |
void | apply_rw (GeometryComponentFilter *filter) override |
void | apply_ro (GeometryComponentFilter *filter) const override |
void | apply_rw (CoordinateSequenceFilter &filter) override |
void | apply_ro (CoordinateSequenceFilter &filter) const override |
void | normalize () override |
Normalizes a LineString. More... | |
int | compareToSameClass (const Geometry *ls) const override |
const CoordinateXY * | getCoordinate () const override |
Returns a vertex of this Geometry, or NULL if this is the empty geometry. | |
double | getLength () const override |
Returns the length of this Geometry. | |
std::unique_ptr< LineString > | reverse () const |
const Envelope * | getEnvelopeInternal () const override |
Returns the minimum and maximum x and y values in this Geometry, or a null Envelope if this Geometry is empty. | |
![]() | |
std::unique_ptr< Geometry > | clone () const |
Make a deep-copy of this Geometry. | |
virtual | ~Geometry () |
Destroy Geometry and all components. | |
const GeometryFactory * | getFactory () const |
Gets the factory which contains the context in which this geometry was created. More... | |
void | setUserData (void *newUserData) |
A simple scheme for applications to add their own custom data to a Geometry. An example use might be to add an object representing a Coordinate Reference System. More... | |
void * | getUserData () const |
Gets the user data object for this geometry, if any. More... | |
virtual int | getSRID () const |
Returns the ID of the Spatial Reference System used by the Geometry. More... | |
virtual void | setSRID (int newSRID) |
Sets the ID of the Spatial Reference System used by the Geometry. | |
const PrecisionModel * | getPrecisionModel () const |
Get the PrecisionModel used to create this Geometry. | |
virtual bool | isSimple () const |
Returns false if the Geometry not simple. | |
virtual std::size_t | getNumGeometries () const |
Returns the number of geometries in this collection, or 1 if this is not a collection. More... | |
virtual const Geometry * | getGeometryN (std::size_t) const |
Returns a pointer to the nth Geometry in this collection (or self if this is not a collection) | |
virtual bool | isValid () const |
Tests the validity of this Geometry . More... | |
virtual bool | isRectangle () const |
Polygon overrides to check for actual rectangle. | |
virtual bool | hasDimension (Dimension::DimensionType d) const |
Checks whether any component of this geometry has dimension d. | |
virtual bool | isDimensionStrict (Dimension::DimensionType d) const |
Checks whether this Geometry consists only of components having dimension d. | |
bool | isPuntal () const |
bool | isLineal () const |
bool | isPolygonal () const |
bool | isMixedDimension () const |
bool | isMixedDimension (Dimension::DimensionType *baseDim) const |
bool | isCollection () const |
virtual std::unique_ptr< Geometry > | getEnvelope () const |
Returns this Geometrys bounding box. | |
virtual bool | disjoint (const Geometry *other) const |
virtual bool | touches (const Geometry *other) const |
Returns true if the DE-9IM intersection matrix for the two Geometrys is FT*******, F**T***** or F***T****. | |
virtual bool | intersects (const Geometry *g) const |
Returns true if disjoint returns false. | |
virtual bool | crosses (const Geometry *g) const |
virtual bool | within (const Geometry *g) const |
Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**F***. | |
virtual bool | contains (const Geometry *g) const |
Returns true if other.within(this) returns true. | |
virtual bool | overlaps (const Geometry *g) const |
Returns true if the DE-9IM intersection matrix for the two Geometrys is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves). | |
bool | relate (const Geometry *g, const std::string &intersectionPattern) const |
Returns true if the elements in the DE-9IM intersection matrix for the two Geometrys match the elements in intersectionPattern. More... | |
bool | relate (const Geometry &g, const std::string &intersectionPattern) const |
std::unique_ptr< IntersectionMatrix > | relate (const Geometry *g) const |
Returns the DE-9IM intersection matrix for the two Geometrys. | |
std::unique_ptr< IntersectionMatrix > | relate (const Geometry &g) const |
virtual bool | equals (const Geometry *g) const |
Returns true if the DE-9IM intersection matrix for the two Geometrys is T*F**FFF*. | |
bool | covers (const Geometry *g) const |
Returns true if this geometry covers the specified geometry. More... | |
bool | coveredBy (const Geometry *g) const |
Tests whether this geometry is covered by the specified geometry. More... | |
virtual std::string | toString () const |
Returns the Well-known Text representation of this Geometry. | |
virtual std::string | toText () const |
std::unique_ptr< Geometry > | buffer (double distance) const |
std::unique_ptr< Geometry > | buffer (double distance, int quadrantSegments) const |
Returns a buffer region around this Geometry having the given width and with a specified number of segments used to approximate curves. More... | |
std::unique_ptr< Geometry > | buffer (double distance, int quadrantSegments, int endCapStyle) const |
Computes a buffer area around this geometry having the given width and with a specified accuracy of approximation for circular arcs, and using a specified end cap style. More... | |
virtual std::unique_ptr< Geometry > | convexHull () const |
Returns the smallest convex Polygon that contains all the points in the Geometry. | |
std::unique_ptr< Geometry > | reverse () const |
Computes a new geometry which has all component coordinate sequences in reverse order (opposite orientation) to this one. More... | |
std::unique_ptr< Geometry > | intersection (const Geometry *other) const |
Returns a Geometry representing the points shared by this Geometry and other. More... | |
std::unique_ptr< Geometry > | Union (const Geometry *other) const |
Returns a Geometry representing all the points in this Geometry and other. More... | |
Ptr | Union () const |
Computes the union of all the elements of this geometry. Heterogeneous GeometryCollections are fully supported. More... | |
std::unique_ptr< Geometry > | difference (const Geometry *other) const |
Returns a Geometry representing the points making up this Geometry that do not make up other. More... | |
std::unique_ptr< Geometry > | symDifference (const Geometry *other) const |
Returns a set combining the points in this Geometry not in other, and the points in other not in this Geometry. More... | |
template<class T > | |
void | applyComponentFilter (T &f) const |
Apply a filter to each component of this geometry. The filter is expected to provide a .filter(const Geometry*) method. More... | |
virtual int | compareTo (const Geometry *geom) const |
Comparator for sorting geometry. | |
virtual double | getArea () const |
Returns the area of this Geometry. | |
virtual double | distance (const Geometry *g) const |
virtual bool | isWithinDistance (const Geometry *geom, double cDistance) const |
Tests whether the distance from this Geometry to another is less than or equal to a specified value. More... | |
virtual std::unique_ptr< Point > | getCentroid () const |
Computes the centroid of this Geometry . More... | |
virtual bool | getCentroid (CoordinateXY &ret) const |
Computes the centroid of this Geometry as a Coordinate. More... | |
std::unique_ptr< Point > | getInteriorPoint () const |
Computes an interior point of this Geometry . More... | |
virtual void | geometryChanged () |
Notifies this Geometry that its Coordinates have been changed by an external party (using a CoordinateFilter, for example). | |
Static Public Attributes | |
static const unsigned int | MINIMUM_VALID_SIZE = 3 |
The minimum number of vertices allowed in a valid non-empty ring. Empty rings with 0 vertices are also valid. | |
Protected Member Functions | |
int | getSortIndex () const override |
LinearRing * | cloneImpl () const override |
Make a deep-copy of this Geometry. | |
LinearRing * | reverseImpl () const override |
Make a geometry with coordinates in reverse order. | |
![]() | |
LineString (const LineString &ls) | |
LineString (CoordinateSequence::Ptr &&pts, const GeometryFactory &newFactory) | |
Constructs a LineString taking ownership the given CoordinateSequence. | |
LineString * | cloneImpl () const override |
Make a deep-copy of this Geometry. | |
LineString * | reverseImpl () const override |
Make a geometry with coordinates in reverse order. | |
Envelope | computeEnvelopeInternal () const |
int | getSortIndex () const override |
void | geometryChangedAction () override |
Notifies this Geometry that its Coordinates have been changed by an external party. | |
![]() | |
virtual bool | isEquivalentClass (const Geometry *other) const |
Returns whether the two Geometrys are equal, from the point of view of the equalsExact method. | |
int | compare (std::vector< Coordinate > a, std::vector< Coordinate > b) const |
int | compare (std::vector< Geometry * > a, std::vector< Geometry * > b) const |
int | compare (const std::vector< std::unique_ptr< Geometry >> &a, const std::vector< std::unique_ptr< Geometry >> &b) const |
bool | equal (const CoordinateXY &a, const CoordinateXY &b, double tolerance) const |
Geometry (const Geometry &geom) | |
Geometry (const GeometryFactory *factory) | |
Construct a geometry with the given GeometryFactory. More... | |
Additional Inherited Members | |
![]() | |
typedef std::vector< const LineString * > | ConstVect |
A vector of const LineString pointers. | |
![]() | |
using | ConstVect = std::vector< const Geometry * > |
A vector of const Geometry pointers. | |
using | NonConstVect = std::vector< Geometry * > |
A vector of non-const Geometry pointers. | |
using | Ptr = std::unique_ptr< Geometry > |
An unique_ptr of Geometry. | |
![]() | |
static GeometryTypeId | multiTypeId (GeometryTypeId typeId) |
![]() | |
template<typename T > | |
static bool | hasNonEmptyElements (const std::vector< T > *geometries) |
Returns true if the array contains any non-empty Geometrys. | |
static bool | hasNullElements (const CoordinateSequence *list) |
Returns true if the CoordinateSequence contains any null elements. | |
template<typename T > | |
static bool | hasNullElements (const std::vector< T > *geometries) |
Returns true if the vector contains any null elements. | |
static void | checkNotGeometryCollection (const Geometry *g) |
template<typename T > | |
static std::vector< std::unique_ptr< Geometry > > | toGeometryArray (std::vector< std::unique_ptr< T >> &&v) |
static std::vector< std::unique_ptr< Geometry > > | toGeometryArray (std::vector< std::unique_ptr< Geometry >> &&v) |
![]() | |
CoordinateSequence::Ptr | points |
Envelope | envelope |
![]() | |
int | SRID |
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
In other words, the first and last coordinate in the ring must be equal, and the ring must not self-intersect. Either orientation of the ring is allowed.
A ring must have either 0 or 3 or more points. The first and last points must be equal (in 2D). If these conditions are not met, the constructors throw an geos::util::IllegalArgumentException A ring with 3 points is invalid, because it is collapsed and thus has a self-intersection. It is allowed to be constructed so that it can be represented, and repaired if needed.
geos::geom::LinearRing::LinearRing | ( | CoordinateSequence::Ptr && | points, |
const GeometryFactory & | newFactory | ||
) |
Constructs a LinearRing with the given points.
points | points forming a closed and simple linestring, or null or an empty array to create the empty geometry. This array must not contain null elements. If not null LinearRing will take ownership of points. |
newFactory | the GeometryFactory used to create this geometry |
|
overridevirtual |
Returns Dimension.FALSE
, since by definition LinearRings do not have a boundary.
Implements geos::geom::Geometry.