diff --git a/doxygen/CGAlgorithmsDD_8h_source.html b/doxygen/CGAlgorithmsDD_8h_source.html index 8e99b39ad..1e6ab609e 100644 --- a/doxygen/CGAlgorithmsDD_8h_source.html +++ b/doxygen/CGAlgorithmsDD_8h_source.html @@ -109,7 +109,7 @@
73  double p2x, double p2y,
74  double qx, double qy);
75 
-
90  static int orientationIndexFilter(
+
90  static inline int orientationIndexFilter(
91  double pax, double pay,
92  double pbx, double pby,
93  double pcx, double pcy)
diff --git a/doxygen/RelateGeometry_8h_source.html b/doxygen/RelateGeometry_8h_source.html index a39397870..81fb36272 100644 --- a/doxygen/RelateGeometry_8h_source.html +++ b/doxygen/RelateGeometry_8h_source.html @@ -139,104 +139,129 @@
97 
98  static bool isZeroLength(const LineString* line);
99 
-
100  RelatePointLocator* getLocator();
-
101 
-
102  Coordinate::ConstXYSet createUniquePoints();
-
103 
-
104  void extractSegmentStringsFromAtomic(bool isA,
-
105  const Geometry* geom, const MultiPolygon* parentPolygonal,
-
106  const Envelope* env,
-
107  std::vector<const SegmentString*>& segStrings,
-
108  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
-
109 
-
110  void extractRingToSegmentString(bool isA,
-
111  const LinearRing* ring, int ringId, const Envelope* env,
-
112  const Geometry* parentPoly,
-
113  std::vector<const SegmentString*>& segStrings,
-
114  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
-
115 
-
116  void extractSegmentStrings(bool isA,
-
117  const Envelope* env, const Geometry* geom,
-
118  std::vector<const SegmentString*>& segStrings,
-
119  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
-
120 
-
121  const CoordinateSequence* orientAndRemoveRepeated(
-
122  const CoordinateSequence* cs, bool orientCW);
-
123 
-
124  const CoordinateSequence* removeRepeated(
-
125  const CoordinateSequence* cs);
-
126 
-
127 public:
-
128 
-
129  static constexpr bool GEOM_A = true;
-
130  static constexpr bool GEOM_B = false;
-
131 
-
132  RelateGeometry(const Geometry* input)
-
133  : RelateGeometry(input, false, BoundaryNodeRule::getBoundaryRuleMod2())
-
134  {};
+
100  bool isZeroLengthLine(const Geometry* g) const {
+
101  // avoid expensive zero-length calculation if not linear
+
102  if (getDimension() != Dimension::L)
+
103  return false;
+
104  return isZeroLength(g);
+
105  };
+
106 
+
107  RelatePointLocator* getLocator();
+
108 
+
109  Coordinate::ConstXYSet createUniquePoints();
+
110 
+
111  void extractSegmentStringsFromAtomic(bool isA,
+
112  const Geometry* geom, const MultiPolygon* parentPolygonal,
+
113  const Envelope* env,
+
114  std::vector<const SegmentString*>& segStrings,
+
115  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
+
116 
+
117  void extractRingToSegmentString(bool isA,
+
118  const LinearRing* ring, int ringId, const Envelope* env,
+
119  const Geometry* parentPoly,
+
120  std::vector<const SegmentString*>& segStrings,
+
121  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
+
122 
+
123  void extractSegmentStrings(bool isA,
+
124  const Envelope* env, const Geometry* geom,
+
125  std::vector<const SegmentString*>& segStrings,
+
126  std::vector<std::unique_ptr<const RelateSegmentString>>& segStore);
+
127 
+
128  const CoordinateSequence* orientAndRemoveRepeated(
+
129  const CoordinateSequence* cs, bool orientCW);
+
130 
+
131  const CoordinateSequence* removeRepeated(
+
132  const CoordinateSequence* cs);
+
133 
+
134 public:
135 
-
136  RelateGeometry(const Geometry* input, const BoundaryNodeRule& bnRule)
-
137  : RelateGeometry(input, false, bnRule)
-
138  {};
-
139 
-
140  RelateGeometry(const Geometry* input, bool p_isPrepared, const BoundaryNodeRule& bnRule);
-
141 
-
142  static std::string name(bool isA);
-
143 
-
144  const Geometry* getGeometry() const;
-
145 
-
146  bool isPrepared() const;
-
147 
-
148  const Envelope* getEnvelope() const;
-
149 
-
150  int getDimension() const;
-
151 
-
152  bool hasDimension(int dim) const;
-
153 
-
160  int getDimensionReal() const;
-
161 
-
162  bool hasEdges() const;
-
163 
-
164  bool isNodeInArea(const CoordinateXY* nodePt, const Geometry* parentPolygonal);
-
165 
-
166  Location locateLineEnd(const CoordinateXY* p) ;
-
167 
-
178  Location locateAreaVertex(const CoordinateXY* pt);
-
179 
-
180  Location locateNode(const CoordinateXY* pt, const Geometry* parentPolygonal);
-
181 
-
182  int locateWithDim(const CoordinateXY* pt);
+
136  static constexpr bool GEOM_A = true;
+
137  static constexpr bool GEOM_B = false;
+
138 
+
139  RelateGeometry(const Geometry* input)
+
140  : RelateGeometry(input, false, BoundaryNodeRule::getBoundaryRuleMod2())
+
141  {};
+
142 
+
143  RelateGeometry(const Geometry* input, const BoundaryNodeRule& bnRule)
+
144  : RelateGeometry(input, false, bnRule)
+
145  {};
+
146 
+
147  RelateGeometry(const Geometry* input, bool p_isPrepared, const BoundaryNodeRule& bnRule);
+
148 
+
149  static std::string name(bool isA);
+
150 
+
151  const Geometry* getGeometry() const {
+
152  return geom;
+
153  }
+
154 
+
155  bool isPrepared() const {
+
156  return m_isPrepared;
+
157  }
+
158 
+
159  const Envelope* getEnvelope() const {
+
160  return geomEnv;
+
161  }
+
162 
+
163  inline int getDimension() const {
+
164  return geomDim;
+
165  }
+
166 
+
167  bool hasDimension(int dim) const {
+
168  switch (dim) {
+
169  case Dimension::P: return hasPoints;
+
170  case Dimension::L: return hasLines;
+
171  case Dimension::A: return hasAreas;
+
172  }
+
173  return false;
+
174  }
+
175 
+
182  int getDimensionReal() const;
183 
-
184  bool isPointsOrPolygons() const;
+
184  bool hasEdges() const;
185 
-
196  bool isPolygonal() const;
-
197 
-
198  bool isEmpty() const;
-
199 
-
200  bool hasBoundary();
+
186  bool isNodeInArea(const CoordinateXY* nodePt, const Geometry* parentPolygonal);
+
187 
+
188  Location locateLineEnd(const CoordinateXY* p) ;
+
189 
+
200  Location locateAreaVertex(const CoordinateXY* pt);
201 
-
202  Coordinate::ConstXYSet& getUniquePoints();
+
202  Location locateNode(const CoordinateXY* pt, const Geometry* parentPolygonal);
203 
-
204  std::vector<const Point*> getEffectivePoints();
+
204  int locateWithDim(const CoordinateXY* pt);
205 
-
215  std::vector<const SegmentString*> extractSegmentStrings(bool isA, const Envelope* env);
-
216 
-
217  std::string toString() const;
-
218 
-
219  friend std::ostream& operator<<(std::ostream& os, const RelateGeometry& rg);
-
220 
-
226  RelateGeometry(const RelateGeometry&) = delete;
-
227  RelateGeometry& operator=(const RelateGeometry&) = delete;
-
228 
-
229 };
-
230 
-
231 } // namespace geos.operation.relateng
-
232 } // namespace geos.operation
-
233 } // namespace geos
-
234 
+
206  bool isPointsOrPolygons() const;
+
207 
+
218  bool isPolygonal() const;
+
219 
+
220  bool isEmpty() const;
+
221 
+
222  bool hasBoundary();
+
223 
+
224  Coordinate::ConstXYSet& getUniquePoints();
+
225 
+
226  std::vector<const Point*> getEffectivePoints();
+
227 
+
237  std::vector<const SegmentString*> extractSegmentStrings(bool isA, const Envelope* env);
+
238 
+
239  std::string toString() const;
+
240 
+
241  friend std::ostream& operator<<(std::ostream& os, const RelateGeometry& rg);
+
242 
+
248  RelateGeometry(const RelateGeometry&) = delete;
+
249  RelateGeometry& operator=(const RelateGeometry&) = delete;
+
250 
+
251 };
+
252 
+
253 } // namespace geos.operation.relateng
+
254 } // namespace geos.operation
+
255 } // namespace geos
+
256 
geos::algorithm::BoundaryNodeRule
An interface for rules which determine whether node points which are in boundaries of lineal geometry...
Definition: BoundaryNodeRule.h:50
geos::geom::CoordinateSequence
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56
+
geos::geom::Dimension::A
@ A
Dimension value of a surface (2).
Definition: Dimension.h:46
+
geos::geom::Dimension::L
@ L
Dimension value of a curve (1).
Definition: Dimension.h:43
geos::geom::Dimension::False
@ False
Dimension value of the empty geometry (-1).
Definition: Dimension.h:37
+
geos::geom::Dimension::P
@ P
Dimension value of a point (0).
Definition: Dimension.h:40
geos::geom::Geometry
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
geos::geom::LineString
Definition: LineString.h:66
geos::geom::LinearRing
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:54
diff --git a/doxygen/RelateSegmentString_8h_source.html b/doxygen/RelateSegmentString_8h_source.html index 39d82ac5e..25b524f7d 100644 --- a/doxygen/RelateSegmentString_8h_source.html +++ b/doxygen/RelateSegmentString_8h_source.html @@ -159,22 +159,28 @@
123  bool isA, int elementId, int ringId,
124  const Geometry* poly, const RelateGeometry* parent);
125 
-
126  bool isA() const;
-
127 
-
128  const RelateGeometry* getGeometry() const;
+
126  inline bool isA() const {
+
127  return m_isA;
+
128  }
129 
-
130  const Geometry* getPolygonal() const;
-
131 
-
132  NodeSection* createNodeSection(std::size_t segIndex, const CoordinateXY intPt) const;
+
130  inline const RelateGeometry* getGeometry() const {
+
131  return m_inputGeom;
+
132  }
133 
-
148  bool isContainingSegment(std::size_t segIndex, const CoordinateXY* pt) const;
-
149 
-
150 };
-
151 
-
152 } // namespace geos.operation.relateng
-
153 } // namespace geos.operation
-
154 } // namespace geos
+
134  inline const Geometry* getPolygonal() const {
+
135  return m_parentPolygonal;
+
136  }
+
137 
+
138  NodeSection* createNodeSection(std::size_t segIndex, const CoordinateXY intPt) const;
+
139 
+
154  bool isContainingSegment(std::size_t segIndex, const CoordinateXY* pt) const;
155 
+
156 };
+
157 
+
158 } // namespace geos.operation.relateng
+
159 } // namespace geos.operation
+
160 } // namespace geos
+
161 
geos::geom::CoordinateSequence
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56
geos::geom::Geometry
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
geos::noding::BasicSegmentString
Represents a list of contiguous line segments, and supports noding the segments.
Definition: BasicSegmentString.h:44
diff --git a/doxygen/TopologyComputer_8h_source.html b/doxygen/TopologyComputer_8h_source.html index 87a79c266..07b60a977 100644 --- a/doxygen/TopologyComputer_8h_source.html +++ b/doxygen/TopologyComputer_8h_source.html @@ -113,91 +113,93 @@
67 
68  void initExteriorEmpty(bool geomNonEmpty);
69 
-
70  RelateGeometry& getGeometry(bool isA) const;
-
71 
-
72  void updateDim(Location locA, Location locB, int dimension);
+
70  inline RelateGeometry& getGeometry(bool isA) const {
+
71  return isA ? geomA : geomB;
+
72  };
73 
-
74  void updateDim(bool isAB, Location loc1, Location loc2, int dimension);
+
74  void updateDim(Location locA, Location locB, int dimension);
75 
-
82  void updateIntersectionAB(const NodeSection* a, const NodeSection* b);
-
83 
-
95  void updateAreaAreaCross(const NodeSection* a, const NodeSection* b);
-
96 
-
103  void updateNodeLocation(const NodeSection* a, const NodeSection* b);
-
104 
-
105  void addNodeSections(NodeSection* ns0, NodeSection* ns1);
+
76  void updateDim(bool isAB, Location loc1, Location loc2, int dimension);
+
77 
+
84  void updateIntersectionAB(const NodeSection* a, const NodeSection* b);
+
85 
+
97  void updateAreaAreaCross(const NodeSection* a, const NodeSection* b);
+
98 
+
105  void updateNodeLocation(const NodeSection* a, const NodeSection* b);
106 
-
107  void addLineEndOnPoint(bool isLineA, Location locLineEnd, Location locPoint, const CoordinateXY* pt);
+
107  void addNodeSections(NodeSection* ns0, NodeSection* ns1);
108 
-
109  void addLineEndOnLine(bool isLineA, Location locLineEnd, Location locLine, const CoordinateXY* pt);
+
109  void addLineEndOnPoint(bool isLineA, Location locLineEnd, Location locPoint, const CoordinateXY* pt);
110 
-
111  void addLineEndOnArea(bool isLineA, Location locLineEnd, Location locArea, const CoordinateXY* pt);
+
111  void addLineEndOnLine(bool isLineA, Location locLineEnd, Location locLine, const CoordinateXY* pt);
112 
-
124  void addAreaVertexOnPoint(bool isAreaA, Location locArea, const CoordinateXY* pt);
-
125 
-
126  void addAreaVertexOnLine(bool isAreaA, Location locArea, Location locTarget, const CoordinateXY* pt);
+
113  void addLineEndOnArea(bool isLineA, Location locLineEnd, Location locArea, const CoordinateXY* pt);
+
114 
+
126  void addAreaVertexOnPoint(bool isAreaA, Location locArea, const CoordinateXY* pt);
127 
-
128  void evaluateNode(NodeSections* nodeSections);
+
128  void addAreaVertexOnLine(bool isAreaA, Location locArea, Location locTarget, const CoordinateXY* pt);
129 
-
130  void evaluateNodeEdges(const RelateNode* node);
+
130  void evaluateNode(NodeSections* nodeSections);
131 
-
132  NodeSections* getNodeSections(const CoordinateXY& nodePt);
+
132  void evaluateNodeEdges(const RelateNode* node);
133 
-
134 
+
134  NodeSections* getNodeSections(const CoordinateXY& nodePt);
135 
-
136 public:
+
136 
137 
-
138  TopologyComputer(
-
139  TopologyPredicate& p_predicate,
-
140  RelateGeometry& p_geomA,
-
141  RelateGeometry& p_geomB)
-
142  : predicate(p_predicate)
-
143  , geomA(p_geomA)
-
144  , geomB(p_geomB)
-
145  {
-
146  initExteriorDims();
-
147  };
-
148 
-
149  int getDimension(bool isA) const;
+
138 public:
+
139 
+
140  TopologyComputer(
+
141  TopologyPredicate& p_predicate,
+
142  RelateGeometry& p_geomA,
+
143  RelateGeometry& p_geomB)
+
144  : predicate(p_predicate)
+
145  , geomA(p_geomA)
+
146  , geomB(p_geomB)
+
147  {
+
148  initExteriorDims();
+
149  };
150 
-
151  bool isAreaArea() const;
+
151  int getDimension(bool isA) const;
152 
-
168  bool isSelfNodingRequired() const;
-
169 
-
170  bool isExteriorCheckRequired(bool isA) const;
+
153  bool isAreaArea() const;
+
154 
+
170  bool isSelfNodingRequired() const;
171 
-
172  bool isResultKnown() const;
+
172  bool isExteriorCheckRequired(bool isA) const;
173 
-
174  bool getResult() const;
+
174  bool isResultKnown() const;
175 
-
179  void finish();
-
180 
-
181  void addIntersection(NodeSection* a, NodeSection* b);
+
176  bool getResult() const;
+
177 
+
181  void finish();
182 
-
183  void addPointOnPointInterior(const CoordinateXY* pt);
+
183  void addIntersection(NodeSection* a, NodeSection* b);
184 
-
185  void addPointOnPointExterior(bool isGeomA, const CoordinateXY* pt);
+
185  void addPointOnPointInterior(const CoordinateXY* pt);
186 
-
187  void addPointOnGeometry(bool isA, Location locTarget, int dimTarget, const CoordinateXY* pt);
+
187  void addPointOnPointExterior(bool isGeomA, const CoordinateXY* pt);
188 
-
189  void addLineEndOnGeometry(bool isLineA, Location locLineEnd, Location locTarget, int dimTarget, const CoordinateXY* pt);
+
189  void addPointOnGeometry(bool isA, Location locTarget, int dimTarget, const CoordinateXY* pt);
190 
-
207  void addAreaVertex(bool isAreaA, Location locArea, Location locTarget, int dimTarget, const CoordinateXY* pt);
-
208 
-
209  void addAreaVertexOnArea(bool isAreaA, Location locArea, Location locTarget, const CoordinateXY* pt);
+
191  void addLineEndOnGeometry(bool isLineA, Location locLineEnd, Location locTarget, int dimTarget, const CoordinateXY* pt);
+
192 
+
209  void addAreaVertex(bool isAreaA, Location locArea, Location locTarget, int dimTarget, const CoordinateXY* pt);
210 
-
211  void evaluateNodes();
+
211  void addAreaVertexOnArea(bool isAreaA, Location locArea, Location locTarget, const CoordinateXY* pt);
212 
-
217  TopologyComputer(const TopologyComputer&) = delete;
-
218  TopologyComputer& operator=(const TopologyComputer&) = delete;
-
219 
-
220 
-
221 };
+
213  void evaluateNodes();
+
214 
+
219  TopologyComputer(const TopologyComputer&) = delete;
+
220  TopologyComputer& operator=(const TopologyComputer&) = delete;
+
221 
222 
-
223 } // namespace geos.operation.relateng
-
224 } // namespace geos.operation
-
225 } // namespace geos
-
226 
+
223 };
+
224 
+
225 } // namespace geos.operation.relateng
+
226 } // namespace geos.operation
+
227 } // namespace geos
+
228 
geos::operation::relateng::NodeSection
Definition: NodeSection.h:55
geos::geom::Location
Location
Constants representing the location of a point relative to a geometry.
Definition: Location.h:32
geos
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
diff --git a/doxygen/functions_func_i.html b/doxygen/functions_func_i.html index 370be9b68..b8982255b 100644 --- a/doxygen/functions_func_i.html +++ b/doxygen/functions_func_i.html @@ -283,12 +283,12 @@

- i -