Thread: nearest neighbor search from xyz coordinates
Hello, I have a table containing x y z coordinates. But I have no geometry column? Is it possible to find the k nearest neighbors of any point. Is there something like a kd-tree Index in postgres??? I know, if i had a geometry column I could make use of the distance function to find the k nearest neighbors. But my table has millions of records, thus it would take a very long time to use the distance function for each point. Thanks in advance. Andi
What exactly do you want to measure, since values can be compared easily by a where clause
If you would want for example all rows within a spherical distance
you will either have to write a stored procedure (which takes 4 parameters x,y,z,distance)
Or manually compare each corodinate to the distance
Regards,
Serge Fonville
On Mon, Oct 27, 2008 at 11:50 AM, Andreas Jochem <andruit@gmx.de> wrote:
Hello,
I have a table containing x y z coordinates. But I have no geometry column?
Is it possible to find the k nearest neighbors of any point. Is there something like a kd-tree Index in postgres???
I know, if i had a geometry column I could make use of the distance function to find the k nearest neighbors. But my table has millions of records, thus it would take a very long time to use the distance function for each point.
Thanks in advance.
Andi
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
El Lunes 27 Octubre 2008 Andreas Jochem escribió: > Hello, > > I have a table containing x y z coordinates. But I have no geometry column? > Is it possible to find the k nearest neighbors of any point. Is there > something like a kd-tree Index in postgres??? > > I know, if i had a geometry column I could make use of the distance > function to find the k nearest neighbors. But my table has millions of > records, thus it would take a very long time to use the distance > function for each point. > > Thanks in advance. > > Andi > Maybe you can partition your 3d space into cubes and add one colum to the table precalculating the cube that owns the point. For an arbitrary point you can calculate the cube that contains it and surrounding boxes and restrict full distance calculation to records belonging to those cubes. for millions of points seems to be faster than trying all points blindy (despite of being indexed). -- ->>----------------------------------------------- Clist UAH a.k.a Angel ---------------------------------[www.uah.es]-<<-- ""
On Mon, Oct 27, 2008 at 6:50 AM, Andreas Jochem <andruit@gmx.de> wrote: > Hello, > > I have a table containing x y z coordinates. But I have no geometry column? > Is it possible to find the k nearest neighbors of any point. Is there > something like a kd-tree Index in postgres??? > cubes: http://www.postgresql.org/docs/8.3/interactive/cube.html merlin