[postgis-users] Shortest Distance from Every Point

Yancho mpulis at gmail.com
Sun Nov 4 09:15:35 PST 2007


Just wanted to say that I managed to write this Query :

SELECT DISTINCT ON (c1)
    c1.city_name AS "c1",	
    c2.city_name AS "c2",
    distance(c1.the_geom, c2.the_geom),
    makeline(c1.the_geom, c2.the_geom)
FROM
    city c1
JOIN
    city c2
    ON (
        c1.city_name <> c2.city_name
    )
ORDER BY c1, distance ASC
;

It works perfectly, however how much do you think it can scale ? On 16 rows
it didnt take long, however or 28,000 rows? Will it use the O(n^2)
scalability?

Thanks


Yancho wrote:
> 
> Hi,
> 
> I am trying to make a query so it parses through all the 16 cities i have
> in
> a table called city, and for each city, picks the nearest city, and gives
> me
> the distance between both cities.
> 
> This is the query I made :
> 
> select
> c.city_name, astext(c.the_geom), distance(c.the_geom, d.the_geom) AS
> Distance, d.city_name, astext(d.the_geom)
> from city c, city d
> where
> c.city_name = (
> select c.city_name order by c.city_name ASC
> )
> and
> d.city_name = (
> select d.city_name order by d.city_name DESC
> )
> group by c.city_name
> order by Distance DESC
> LIMIT 1;
> 
> But I am getting this error : ERROR: column "c.the_geom" must appear in
> the
> GROUP BY clause or be used in an aggregate function
> 
> I am seeing no reason why I should add c.the_geom, anyone can enlighten me
> more on why I should group by the_geom and after all if it does make
> sense?
> 
> Thanks
> 
> -- 
> Matthew Pulis
> www.solutions-lab.net // www.mepa-clan.info
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Shortest-Distance-from-Every-Point-tf4743229.html#a13575499
Sent from the PostGIS - User mailing list archive at Nabble.com.




More information about the postgis-users mailing list