Exemplo n.º 1
0
def conductTrial(label, items):
    samples = 128
    n = len(items)
    rt = RTree(m=2, M=4)
    for r in items:
        rt.add(r)

    box = rt.root.region
    width = box.x_max - box.x_min
    height = box.y_max - box.y_min

    # can compute density for any tree, samples at 128 random spots
    ct = 0
    for _ in range(samples):
        x = box.x_min + random.random() * width
        y = box.y_min + random.random() * height
        for triple in rt.range(Region(x, y, x, y)):
            assert (triple[2] == False)
            ct += 1

    print("Density", n, "{:.2f}%".format(100 * ct / (n * samples)),
          "intersect random point in ", str(box))

    trials(n, items, BUILD, "Build")
    trials(n, items, SEARCH, "Search")
    trials(n, items, DELETE, "Delete")
Exemplo n.º 2
0
    def __init__(self):
        """App for creating R tree dynamically and executing range queries"""

        self.tree = RTree(m=2, M=4)
        self.ready = False

        # for range query
        self.selectedRegion = None
        self.newRegionStart = None
        self.newRegion = None

        # for identifiers
        self.counter = 0

        self.master = tkinter.Tk()
        self.master.title('R Tree Range Query Application')
        self.w = tkinter.Frame(self.master, width=512, height=512)
        self.canvas = tkinter.Canvas(self.w, width=512, height=512)

        self.paint()

        self.canvas.bind("<Button-1>", self.startAdd)
        self.canvas.bind("<B1-Motion>",
                         self.extendAdd)  # only when right mouse dragged
        self.canvas.bind("<ButtonRelease-1>", self.endAdd)

        self.canvas.bind("<Button-3>", self.range)  # when right mouse clicked
        self.canvas.bind("<ButtonRelease-3>", self.clear)
        self.canvas.bind("<B3-Motion>",
                         self.range)  # only when right mouse dragged
        self.w.pack()
Exemplo n.º 3
0
 def test_multipleM(self):
     # check multiple m,M values
     
     for m,M in zip([3, 4, 5, 6], [7, 8, 10, 13]):
         self.tree = RTree(m,M)
         regions = []
         for ctr in range(500):
             r = Region(2*random.randint(2,250), 2*random.randint(2,250), 2*random.randint(2,250), 2*random.randint(2,250))
             regions.append((r, ctr))
             self.tree.add(r,ctr)
             
         # make sure all can be individually found
         for ctr in range(len(regions)):
             match = [m for m in self.tree.search(regions[ctr][0])][0]
             self.assertEquals(match, regions[ctr][0])
             
         # make sure that all are contained within the 
         self.ensure_maxBounding(self.tree.root)
Exemplo n.º 4
0
def performanceR():
    """Demonstrate RTree stores all rectangles."""
    n = 1024
    while n <= 131072:
        rt = RTree()
        added = []
        for _ in range(n):
            new = randomRectangle()
            if rt.search(new) is None:
                rt.add(new)
                added.append(new)

        random.shuffle(added)

        for r in added:
            if rt.search(r) is None:
                print("Cannot find:" + r)
                assert False

        print("pass " + str(n))

        n *= 2
Exemplo n.º 5
0
 def setUp(self):
     self.tree = RTree()