- Core: Added methods for querying R-tree nodes and entries by location (
query
andquery_nodes
), as well as by an arbitrary condition (search
andsearch_nodes
). - Core: Added
traverse_node
to allow traversing a subtree beginning at a given node. - Core: Added
Rect.intersects
(returns abool
if a given rectangle intersects another) andRect.intersection
(returns aRect
representing the intersection region of two rectangles, orNone
if the rectangles do not intersect).
- Core:
RTreeBase.traverse
andRTreeBase.traverse_level_order
now accept an optionalcondition
function that gets evaluated at each node. This can be used to eliminate entire subtrees from being traversed. - Core:
RTreeBase.traverse
andRTreeBase.traverse_level_order
nowyield
the result of the passed function, andtraverse
andtraverse_level_order
now return an iterable instead ofNone
. This allows one to start consuming the results while still traversing the tree.
- Core: Initial implementation of R*-Tree
- Core: Provide additional exports of base strategies to aid custom implementations
- Diagram: Added support for PNG (which is now the default), in addition to PostScript
- Diagram: Launching viewer is now optional (will launch by default, but if
open_diagram
isFalse
, the viewer will not be launched) - Diagram: Add ability to pass keyword arguments to pydot
- PostGIS: Save python object ids when exporting R-tree nodes and entries to PostGIS
- Core: Insert strategy is now pluggable (and required for custom R-tree implementations)
- Diagram: Diagram utility now outputs to PNG by default (instead of PostScript)
- PostGIS: Restart identity when clearing R-tree tables in PostGIS
- Fix flaw in Guttman least enlargement implementation in a tie scenario
- Fix flaw with adjust_tree strategy in Guttman implementation
- Added ability to export R-tree to PostGIS
Initial release
- Guttman implementation (with framework for alternative implementations)
- Diagram creation