From: Sunburned S. <sun...@gm...> - 2007-04-22 14:25:17
|
njh told me this didn't make it to the list. Sorry about that. Scott Huey ---------- Forwarded message ---------- From: Sunburned Surveyor <sun...@gm...> Date: Apr 21, 2007 7:19 PM Subject: Re: [Lib2geom-devel] Requirements for lib2geom spatial index... To: njh <nj...@nj...> Perhaps the quadtree class doesn't need any work and I can help with something else? Is there another simple feature of the library that I can get started with? Or perhaps I should just work on some API documentation for the existing quadtree class? I did put together a simple API documentation in HTML that could be used to document any type of object-oriented language. I could put together a sample of the documentation using this html format and also in PDF. What do you guys think? Scott Huey P.S. - I still need to figure out how to compile the manual. Maybe I need to do that next Friday before I do anything else. Then I won't irritate anybody with needless questions. On 4/21/07, njh <nj...@nj...> wrote: > > On Fri, 20 Apr 2007, Sunburned Surveyor wrote: > > > lib2geom spatial index. I want to have these in mind when I start to > look at > > the existing quadtree class. > > > > Requirement #1: The spatial index should not be limited to a fixed size. > > The existing quadtree does this. > > > Requirement #2: The spatial index should offer the ability for efficient > > > updates. > > It does this. > > > Requirement #3: The spatial index should present a simple API for its > basic > > functionality. In other words it shoud have a method that accepts a > > rectangle or envelope and returns a list of the geometries that are > > contained or intersected by that argument. > > And this. > > > What do you guys think? Am I missing anything? > > From the manual: > > \chapter{2D databases} > > 2Geom provides an implementation of a 2D database using quad trees and > using a list. Quad trees aren't the best data-structure for queries, > but they usually out perform the linear list. We provide a > standard interface for object databases with performance guarantees > and provide a set of useful operations Operations: > > \begin{description} > \item[Insert:] given a bounding box and a 'reference', insert into the db > \item[Delete:] given a bounding box and a 'reference', delete from the db > \item[Search:] given a box, find all objects that may interact with this > box > \item[Cast:] given a path (including rays) return a list of objects that > interact with the path, roughly sorted by path order > \item[Shape query:] given a closed path, find all objects whose bounding > boxes intersect path. (this and cast are nearly the same) > \item[Nearest:] given a point (or maybe box) find the nearest objects, > perhaps as a generator to get all objects in order. To do this, we walk > around the quad tree neighbourhood, pushing all the elements into a > priority queue, while the queue is empty, move out a bit. Nearest could > be manhattan, max norm or euc? > \item[Binary:] take two dbs, generate all pairs that have intersecting > boxes. > \item[Sweep:] traverse the tree in say y order, maintaining a y-range of > relevant objects. (to implement sweepline algorithms) > \item[Walk:] traverse the tree in an arbitrary order. > \end{description} > > njh > |