[postgis-users] spatial join nearest neighbor
Paragon Corporation
lr at pcorp.us
Fri Nov 19 13:27:59 PST 2010
Faroek ,
Sounds like you probably want to use a DISTINCT ON clause. Your below query
looks needlessly complicated. Try this one which will do a distance check
of 60000 and for each point that is within 60000 units of a polygon will
return
The gid of that polygon and the distance between the 2.
SELECT DISTINCT ON (p.gid,) p.gid,
v.gid,
st_distance (p.the_geom,v.the_geom) As dist
from
nvm_85_09 p
INNER JOIN stads_dorp_gezicht v
ON st_dwithin
(p.the_geom,v.the_geom,60000)
ORDER BY p.gid, v.gid, st_distance (p.the_geom,v.the_geom);
Leo,
http://www.postgis.us
-----Original Message-----
From: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Lazrak,
F. (Faroek)
Sent: Friday, November 19, 2010 8:49 AM
To: PostGIS Users Discussion
Subject: Re: [postgis-users] spatial join nearest neighbor
I have read this but I realy don't know how to write the query..
Currently I use:
CREATE TEMPORARY TABLE afstand
(p_gid INTEGER,
v_gid INTEGER,
afstand NUMERIC,
CONSTRAINT afstand_pk PRIMARY KEY (p_gid))
INSERT INTO afstand
SELECT p.gid,
v.gid,
st_distance (p.the_geom,v.the_geom) from
nvm_85_09 p
INNER JOIN stads_dorp_gezicht v
ON st_dwithin
(p.the_geom,v.the_geom,60000)
INNER JOIN (
Select
p.gid as
p2gid,
MIN(st_distance (p.the_geom,v.the_geom)) as mindist
from
nvm_85_09 p
INNER JOIN
stads_dorp_gezicht v
ON st_dwithin (p.the_geom,v.the_geom,60000)
where
p.gid not in
(select p_gid from afstand)
GROUP BY
p.gid
) as mindistance
ON p.gid = p2gid AND
st_distance (p.the_geom,v.the_geom) =
mindist WHERE
p.gid not in (select p_gid from afstand)
But this gives the following error:
ERROR: duplicate key value violates unique constraint "afstand_pk"
********** Fout **********
ERROR: duplicate key value violates unique constraint "afstand_pk"
SQL status:23505
I have checked if "p.gid" has multiple outcomes but this is not the case...
Best wishes,
Faroek
-----Original Message-----
From: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of
ByronCinNz
Sent: donderdag 18 november 2010 22:06
To: postgis-users at postgis.refractions.net
Subject: Re: [postgis-users] spatial join nearest neighbor
Hello,
This link might provide the solution you need. I am using this for a similar
issue to yours with good results.
http://www.bostongis.com/?content_name=postgis_nearest_neighbor_generic
Cheers,
Byron
Lazrak, F. (Faroek) wrote:
>
> Hi,
>
>
>
> I have a really simple problem but I am not able to solve the problem.
>
>
>
> I have a point data and a have polygon data and I want to merge the
data
> of the polygon to the points based on the nearest distance to polygon.
>
>
>
> The problem is that my point data is 2,5 million observations and the
> polygon are approximately 700 observations resulting in 1,75 billion
> rows where I have to minimize over 700.
>
>
>
> Currently I have the following query:
>
>
>
> SELECT
>
> a.key,
>
> b.gid,
>
> st_distance(a.the_geom, b.the_geom) as dist,
>
> s.min_dist
>
> FROM
>
> Neighbor as b, point as a
>
> LEFT JOIN
>
> (SELECT
>
> a.key, MIN(st_distance(a.the_geom, b.the_geom)) as min_dist
>
> FROM
>
> Neighbor as b, point as a
>
> GROUP BY
>
> a.key) s
>
> ON
>
> a."key" = S."key"
>
> ORDER by a.key
>
>
>
> This querty gives all the 1,75 billion possibilities which then can be
> used to minimize over a.key restricted by dist=min_dist, the problem
is
> that by the first query the computer run out of memory, so the second
> query is not working.
>
>
>
> In arcgis the problem is joining by closed distance but I need to do
it
> in postgis.
>
>
>
> Hope you can help my,
>
>
>
> Faroek
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
--
View this message in context:
http://old.nabble.com/spatial-join-nearest-neighbor-tp30246195p30252222.
html
Sent from the PostGIS - User mailing list archive at Nabble.com.
_______________________________________________
postgis-users mailing list
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list