def setup_rtree(self, ndim, clusters=None): if self._rtree: return self._rtree self._ndim = ndim if not ndim: class k(object): def __init__(self, graph): self.graph = graph def insert(self, *args, **kwargs): pass def delete(self, *args, **kwargs): pass def intersection(self, *args, **kwargs): return xrange(len(self.graph.clusters)) self._rtree = k(self) return self._rtree p = RProp() p.dimension = max(2, ndim) p.dat_extension = 'data' p.idx_extension = 'index' if clusters: gen_func = ((i, self.bbox_rtree(c, enlarge=0.005), None) for i, c in enumerate(clusters)) self._rtree = RTree(gen_func, properties=p) else: self._rtree = RTree(properties=p) return self._rtree
def create_rtree(self, clusters): if not len(clusters[0].bbox[0]): class k(object): def intersection(self, foo): return xrange(len(clusters)) return k() ndim = len(clusters[0].bbox[0]) + 1 p = RProp() p.dimension = ndim p.dat_extension = 'data' p.idx_extension = 'index' rtree = RTree(properties=p) for idx, c in enumerate(clusters): rtree.insert(idx, c.bbox[0] + (0,) + c.bbox[1] + (1,)) return rtree
def create_rtree(self, clusters): if not len(clusters[0].bbox[0]): class k(object): def intersection(self, foo): return xrange(len(clusters)) return k() ndim = len(clusters[0].bbox[0]) + 1 p = RProp() p.dimension = ndim p.dat_extension = 'data' p.idx_extension = 'index' rtree = RTree(properties=p) for idx, c in enumerate(clusters): rtree.insert(idx, c.bbox[0] + (0, ) + c.bbox[1] + (1, )) return rtree
def construct_rtree(self, clusters): if not len(clusters[0].bbox[0]): class k(object): def intersection(self, foo): return xrange(len(clusters)) return k() ndim = max(2, len(clusters[0].centroid)) p = RProp() p.dimension = ndim p.dat_extension = 'data' p.idx_extension = 'index' rtree = RTree(properties=p) for idx, c in enumerate(clusters): box = c.bbox #self.scale_box(c.bbox) if ndim == 1: rtree.insert(idx, box[0] + [0] + box[1] + [1]) else: rtree.insert(idx, box[0] + box[1]) return rtree