GEOS  3.9.1
MultiLineString.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
7  * Copyright (C) 2001-2002 Vivid Solutions Inc.
8  * Copyright (C) 2005 2006 Refractions Research Inc.
9  *
10  * This is free software; you can redistribute and/or modify it under
11  * the terms of the GNU Lesser General Public Licence as published
12  * by the Free Software Foundation.
13  * See the COPYING file for more information.
14  *
15  **********************************************************************
16  *
17  * Last port: geom/MultiLineString.java r320 (JTS-1.12)
18  *
19  **********************************************************************/
20 
21 #ifndef GEOS_GEOS_MULTILINESTRING_H
22 #define GEOS_GEOS_MULTILINESTRING_H
23 
24 #include <geos/export.h>
25 #include <geos/geom/GeometryCollection.h> // for inheritance
26 #include <geos/geom/Dimension.h>
27 #include <geos/geom/LineString.h>
28 
29 #include <string>
30 #include <vector>
31 
32 #include <geos/inline.h>
33 
34 // Forward declarations
35 namespace geos {
36 namespace geom { // geos::geom
37 class Coordinate;
38 class CoordinateArraySequence;
39 }
40 }
41 
42 namespace geos {
43 namespace geom { // geos::geom
44 
45 #ifdef _MSC_VER
46 #pragma warning(push)
47 #pragma warning(disable:4250) // T1 inherits T2 via dominance
48 #endif
49 
51 class GEOS_DLL MultiLineString: public GeometryCollection {
52 
53 public:
54 
55  friend class GeometryFactory;
56 
57  ~MultiLineString() override = default;
58 
61 
63  return d == Dimension::L;
64  }
65 
71  int getBoundaryDimension() const override;
72 
74  std::unique_ptr<Geometry> getBoundary() const override;
75 
76  const LineString* getGeometryN(std::size_t n) const override;
77 
78  std::string getGeometryType() const override;
79 
81 
82  bool isClosed() const;
83 
84  bool equalsExact(const Geometry* other, double tolerance = 0) const override;
85 
86  std::unique_ptr<Geometry> clone() const override;
87 
97  std::unique_ptr<Geometry> reverse() const override;
98 
99 protected:
100 
118  MultiLineString(std::vector<Geometry*>* newLines,
119  const GeometryFactory* newFactory);
120 
121  MultiLineString(std::vector<std::unique_ptr<LineString>> && newLines,
122  const GeometryFactory& newFactory);
123 
124  MultiLineString(std::vector<std::unique_ptr<Geometry>> && newLines,
125  const GeometryFactory& newFactory);
126 
127  MultiLineString(const MultiLineString& mp);
128 
129  int
130  getSortIndex() const override
131  {
132  return SORTINDEX_MULTILINESTRING;
133  };
134 
135 };
136 
137 #ifdef _MSC_VER
138 #pragma warning(pop)
139 #endif
140 
141 } // namespace geos::geom
142 } // namespace geos
143 
144 #ifdef GEOS_INLINE
145 # include "geos/geom/MultiLineString.inl"
146 #endif
147 
148 #endif // ndef GEOS_GEOS_MULTILINESTRING_H
DimensionType
Definition: Dimension.h:31
@ L
Dimension value of a curve (1).
Definition: Dimension.h:45
Represents a collection of heterogeneous Geometry objects.
Definition: GeometryCollection.h:55
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:68
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:188
Definition: LineString.h:68
Models a collection of LineStrings.
Definition: MultiLineString.h:51
std::unique_ptr< Geometry > reverse() const override
std::unique_ptr< Geometry > getBoundary() const override
Returns a (possibly empty) MultiPoint.
bool isDimensionStrict(Dimension::DimensionType d) const override
Checks whether this Geometry consists only of components having dimension d.
Definition: MultiLineString.h:62
Dimension::DimensionType getDimension() const override
Returns line dimension (1)
std::unique_ptr< Geometry > clone() const override
const LineString * getGeometryN(std::size_t n) const override
Returns a pointer to the nth Geometry in this collection.
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...
GeometryTypeId getGeometryTypeId() const override
Return an integer representation of this Geometry type.
std::string getGeometryType() const override
Return a string representation of this Geometry type.
int getBoundaryDimension() const override
Returns Dimension::False if all LineStrings in the collection are closed, 0 otherwise.
MultiLineString(std::vector< Geometry * > *newLines, const GeometryFactory *newFactory)
Constructs a MultiLineString.
GeometryTypeId
Geometry types.
Definition: Geometry.h:75
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26