Opened 7 years ago
Closed 7 years ago
#11987 closed Bugs (fixed)
Cannot find any way remove from an rtree if using a geographic type
Reported by: | Owned by: | awulkiew | |
---|---|---|---|
Milestone: | Boost 1.61.0 | Component: | geometry |
Version: | Boost 1.60.0 | Severity: | Showstopper |
Keywords: | rtree geographic remove | Cc: |
Description
I cannot find any supported way to remove objects from an rtree using a 2d geographic type. I do see where Cartesian 2d works. No matter what method I try, it compiles with unsupported. I would like to remove as fast a possible, but I cannot even seem to find a way to search the whole rtree by values (instead of bounds and a value) to remove something. Maybe an rtree with geographic types is really experimental and not ready to be used?
Change History (2)
comment:1 by , 7 years ago
Owner: | changed from | to
---|
comment:2 by , 7 years ago
Milestone: | To Be Determined → Boost 1.61.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
It's because some required operations was not implemented for this CS. In this case (
remove()
)covered_by()
was not implemented. It should be fixed in 1.61 at least for Points and Boxes, see:https://github.com/boostorg/geometry/pull/345
This bug should also be fixed in develop and master branches so you could pick the library from the repository if you need it now.
Furthermore, some other algorithms might not work correctly for some cases in 1.60, e.g. when an rtree spanned across more than a half of a globe (bounds width >= 180deg) or when stored boxes could cross antimeridian (e.g. longitude min-max = 170-190). So spatial predicates might not work correctly in such cases.
So yes, it basically means that in 1.60 you could e.g. calculate boxes with
bg::envelope()
in geographic but then convert boxes to cartesian and store them in the rtree. And if you know that boxes could cross antimeridian perform some of the queries near the antimeridian 2 times, one for negative coordinates near -180 and the second one for corresponding coordinates greater than 180.