Order by nearest - PostGIS, GeoRuby, spatial_adapter

后端 未结 6 2058
醉酒成梦
醉酒成梦 2021-02-06 04:03

I\'m trying to do an order query that finds records nearest to the current_user.

I know the distance between the two points is: current_location.euclidean_distance

6条回答
  •  终归单人心
    2021-02-06 04:50

    To get the 5 closest:

    SELECT * FROM your_table 
    ORDER BY ST_Distance(your_table.geom, ST_Geomfromtext(your point as wkt)) 
    limit 5;
    

    If you have a big dataset and know that you don't want to search further than , say 1 km, the query will be more efficient if you do:

    SELECT * FROM your_table 
    WHERE ST_DWithin(your_table.geom, ST_Geomfromtext(your point as wkt, 1000)
    ORDER BY ST_Distance(your_table.geom, ST_Geomfromtext(your point as wkt))  
    limit 5;
    

    /Nicklas

提交回复
热议问题