19 #ifndef GEOS_OPERATION_DISTANCE_FACETSEQUENCETREEBUILDER_H
20 #define GEOS_OPERATION_DISTANCE_FACETSEQUENCETREEBUILDER_H
22 #include <geos/index/ItemVisitor.h>
23 #include <geos/index/strtree/TemplateSTRtree.h>
24 #include <geos/geom/Geometry.h>
25 #include <geos/geom/CoordinateSequence.h>
26 #include <geos/operation/distance/FacetSequence.h>
31 class GEOS_DLL FacetSequenceTreeBuilder {
34 static const int FACET_SEQUENCE_SIZE = 6;
37 static const int STR_TREE_NODE_CAPACITY = 4;
39 static void addFacetSequences(
const geom::Geometry* geom,
40 const geom::CoordinateSequence* pts,
41 std::vector<FacetSequence> & sections);
42 static std::vector<FacetSequence> computeFacetSequences(
const geom::Geometry* g);
44 class FacetSequenceTree :
public geos::index::strtree::TemplateSTRtree<const FacetSequence*> {
47 FacetSequenceTree(std::vector<FacetSequence> &&seq) :
48 TemplateSTRtree(STR_TREE_NODE_CAPACITY, seq.size()), sequences(seq) {
49 for (
auto& fs : sequences) {
50 TemplateSTRtree::insert(fs.getEnvelope(), &fs);
55 std::vector<FacetSequence> sequences;
65 static std::unique_ptr<geos::index::strtree::TemplateSTRtree<const FacetSequence*>> build(
const geom::Geometry* g);
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26