21 #ifndef GEOS_GEOS_LINESTRING_H
22 #define GEOS_GEOS_LINESTRING_H
24 #include <geos/export.h>
25 #include <geos/geom/Geometry.h>
26 #include <geos/geom/CoordinateSequence.h>
27 #include <geos/geom/Envelope.h>
28 #include <geos/geom/Dimension.h>
34 #include <geos/inline.h>
38 #pragma warning(disable: 4251)
44 class CoordinateArraySequence;
45 class CoordinateSequenceFilter;
86 std::unique_ptr<LineString>
clone()
const
88 return std::unique_ptr<LineString>(cloneImpl());
96 virtual const Coordinate& getCoordinateN(std::size_t n)
const;
131 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
145 virtual bool isClosed()
const;
147 virtual bool isRing()
const;
153 virtual bool isCoordinate(
Coordinate& pt)
const;
184 int compareToSameClass(
const Geometry* ls)
const override;
196 std::unique_ptr<LineString>
reverse()
const {
return std::unique_ptr<LineString>(reverseImpl()); }
215 Envelope::Ptr computeEnvelopeInternal()
const override;
217 CoordinateSequence::Ptr points;
220 getSortIndex()
const override
222 return SORTINDEX_LINESTRING;
227 void validateConstruction();
228 void normalizeClosed();
233 struct GEOS_DLL LineStringLT {
235 operator()(
const LineString* ls1,
const LineString* ls2)
const
237 return ls1->compareTo(ls2) < 0;
Geometry classes support the concept of applying a coordinate filter to every coordinate in the Geome...
Definition: CoordinateFilter.h:43
Interface for classes which provide operations that can be applied to the coordinates in a Coordinate...
Definition: CoordinateSequenceFilter.h:57
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
DimensionType
Definition: Dimension.h:31
Definition: GeometryComponentFilter.h:43
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:68
Geometry classes support the concept of applying a Geometry filter to the Geometry.
Definition: GeometryFilter.h:47
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:188
Definition: LineString.h:68
void apply_ro(CoordinateSequenceFilter &filter) const override
const CoordinateSequence * getCoordinatesRO() const
Returns a read-only pointer to internal CoordinateSequence.
LineString(CoordinateSequence *pts, const GeometryFactory *newFactory)
Constructs a LineString taking ownership the given CoordinateSequence.
LineString * reverseImpl() const override
Make a geometry with coordinates in reverse order.
std::unique_ptr< Geometry > getBoundary() const override
Returns a MultiPoint. Empty for closed LineString, a Point for each vertex otherwise.
void normalize() override
Normalizes a LineString.
bool isEmpty() const override
Returns whether or not the set of points in this Geometry is empty.
LineString * cloneImpl() const override
Make a deep-copy of this Geometry.
Definition: LineString.h:211
Dimension::DimensionType getDimension() const override
Returns line dimension (1)
GeometryTypeId getGeometryTypeId() const override
Return an integer representation of this Geometry type.
virtual std::unique_ptr< Point > getEndPoint() const
Return the end point of the LineString or NULL if this is an EMPTY LineString.
std::vector< const LineString * > ConstVect
A vector of const LineString pointers.
Definition: LineString.h:75
void apply_rw(CoordinateSequenceFilter &filter) override
LineString(CoordinateSequence::Ptr &&pts, const GeometryFactory &newFactory)
Hopefully cleaner version of the above.
virtual std::unique_ptr< Point > getStartPoint() const
Return the start point of the LineString or NULL if this is an EMPTY LineString.
double getLength() const override
Returns the length of this Geometry.
int getBoundaryDimension() const override
Returns Dimension::False for a closed LineString, 0 otherwise (LineString boundary is a MultiPoint)
std::string getGeometryType() const override
Return a string representation of this Geometry type.
std::unique_ptr< CoordinateSequence > releaseCoordinates()
Take ownership of the CoordinateSequence managed by this geometry. After releasing the coordinates,...
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...
uint8_t getCoordinateDimension() const override
Returns coordinate dimension.
std::unique_ptr< LineString > clone() const
Creates and returns a full copy of this LineString object (including all coordinates contained by it)
Definition: LineString.h:86
std::size_t getNumPoints() const override
Returns the count of this Geometrys vertices.
std::unique_ptr< LineString > reverse() const
Definition: LineString.h:196
std::unique_ptr< CoordinateSequence > getCoordinates() const override
Returns this Geometry vertices. Caller takes ownership of the returned object.
const Coordinate * getCoordinate() const override
Returns a vertex of this Geometry, or NULL if this is the empty geometry.
GeometryTypeId
Geometry types.
Definition: Geometry.h:75
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26