$include_dir="/home/hyper-archives/geometry/include"; include("$include_dir/msg-header.inc") ?>
Subject: [ggl] rtree query interface
From: Adam Wulkiewicz (adam.wulkiewicz)
Date: 2011-08-22 22:20:36
Barend Gehrels wrote:
> Hi Adam,
>
>>
>> I now realize that this may be confusing since everybody thinks that
>> predicates works exactly like filters from Boost.Range but they
>> shouldn't. They should work more like Expressions.
>
> Yes, actually I did as well. What is exactly the difference?
Well it isn't commutative and transparent like filters which just
operates on iterators. index::filter (or a sequence of index::
predicates) must be passed just after the tree object and it doesn't
operate on iterators but calls some searching routine, stores elements
inside some container (e.g. std::deque) and exposes this container as a
range.
Think of it like if it was std::map. You may call find() method and find
a value in a fast way. But you may treat it like a range, get some
iterator, iterate over all elements and filter some of them. This isn't
effective.
>> (...)
>> Because everybody thinks: "Oh! Boost.Ranges. I know how it works!"
>> maby it's better to use something else to distinguish between Geometry
>> query and ranges. Function or operator different than.
>
> Yes, if they are different, I agree.
It is a matter of choice. How the user should pass the expression or
sequence of predicates or wathever to the spatial index?
There are some examples in the previous email.
Regards,
Adam