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<Geometry> clone()
const override;
93 virtual const Coordinate& getCoordinateN(
size_t n)
const;
119 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
133 virtual bool isClosed()
const;
135 virtual bool isRing()
const;
141 virtual bool isCoordinate(
Coordinate& pt)
const;
172 int compareToSameClass(
const Geometry* ls)
const override;
184 std::unique_ptr<Geometry>
reverse()
const override;
199 Envelope::Ptr computeEnvelopeInternal()
const override;
201 CoordinateSequence::Ptr points;
204 getSortIndex()
const override
206 return SORTINDEX_LINESTRING;
211 void validateConstruction();
212 void normalizeClosed();
217 struct GEOS_DLL LineStringLT {
219 operator()(
const LineString* ls1,
const LineString* ls2)
const
221 return ls1->compareTo(ls2) < 0;
226 inline std::unique_ptr<Geometry>
229 return std::unique_ptr<Geometry>(
new LineString(*
this));
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.
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.
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.
std::unique_ptr< Geometry > reverse() const override
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.
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...
std::unique_ptr< Geometry > clone() const override
Creates and returns a full copy of this LineString object (including all coordinates contained by it)
Definition: LineString.h:227
uint8_t getCoordinateDimension() const override
Returns coordinate dimension.
std::size_t getNumPoints() const override
Returns the count of this Geometrys vertices.
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: IndexedNestedRingTester.h:26