I'm
curious how did you compare the libraries?
What
was the test case?
Many
tests for Points within only one Polygon?
If
yes, then have you tried to first calculate the bounding box
of a
Polygon
and use it for the first check to eliminate this difference
between
libraries?
Are
the benchmarks available somewhere?
Adam -
The situation: I have
multiple polygons that don't change, and I am querying to
which one of those polygons contains various points. The
program works by first creating an rtree containing all the
polygons (using the packing method) and when a range of
polygons is returned covered_by() is called to check if the
point is indeed in the polygon (no reason to check
the bounding box in this case since that is what the rtree
is for). The fact that this program ran slower than the JTS
version prompted me to narrow down the cause. From running
the covered_by query of boost side by side with JTS's
(different name in JTS) I found that JTS had a far better
performance when the PreparedPolygon class was used. Looking
further into that it seems that JTS's prepared polygon does
something where it creates a data structure called an edge
graph to reduce the computation of intersections to log(n).
I don't think boost has anyway to do this, unfortunately I
can't post any of my code or the geometries I'm using,
hopefully this explanation helps enough.