18#include <geos/export.h>
19#include <geos/index/strtree/TemplateSTRtree.h>
20#include <geos/algorithm/locate/IndexedPointInAreaLocator.h>
40class GEOS_DLL IndexedNestedPolygonTester {
44 using CoordinateXY = geos::geom::CoordinateXY;
45 using IndexedPointInAreaLocator = algorithm::locate::IndexedPointInAreaLocator;
46 template<
typename ItemType>
47 using TemplateSTRtree = index::strtree::TemplateSTRtree<ItemType>;
51 const MultiPolygon* multiPoly;
52 TemplateSTRtree<const Polygon*> index;
54 std::map<const Polygon*, IndexedPointInAreaLocator> locators;
55 CoordinateXY nestedPt;
59 IndexedPointInAreaLocator& getLocator(
const Polygon* poly);
61 bool findNestedPoint(
const LinearRing* shell,
62 const Polygon* possibleOuterPoly,
63 IndexedPointInAreaLocator& locator,
64 CoordinateXY& coordNested);
76 static bool findIncidentSegmentNestedPoint(
77 const LinearRing* shell,
79 CoordinateXY& coordNested);
82 IndexedNestedPolygonTester(
const IndexedNestedPolygonTester& other) =
delete;
83 IndexedNestedPolygonTester& operator=(
const IndexedNestedPolygonTester& rhs) =
delete;
87 IndexedNestedPolygonTester(
const MultiPolygon* p_multiPoly);
94 const CoordinateXY& getNestedPoint()
const {
return nestedPt; }
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition LinearRing.h:54
Definition MultiPolygon.h:58
Represents a linear polygon, which may include holes.
Definition Polygon.h:61
Basic namespace for all GEOS functionalities.
Definition geos.h:39