Ich versuche eine Bestellungsabfrage durchzuführen, die Datensätze findet, die dem current_user am nächsten sind.
Ich weiß, dass der Abstand zwischen den zwei Punkten ist: current_location.euclidean_distance(@record.position)
Wie kann ich das in einer PostGIS (oder active_record / spatial_adapter) -Abfrage bearbeiten?
Um die 5 am nächsten zu bekommen:
%Vor%Wenn Sie einen großen Datensatz haben und wissen, dass Sie nicht weiter als beispielsweise 1 km suchen möchten, ist die Abfrage effizienter, wenn Sie Folgendes tun:
%Vor%/ Nicklas
Wenn Sie wirklich die 5 Datensätze finden möchten, die dem current_user am nächsten sind, sollten Sie die Nachbarschaftssuche berücksichtigen, die von KNN index in PostGIS 2.0 unterstützt wird (siehe '& lt; - & gt;' - Operator):
SELECT * FROM Ihre_Tabelle ORDER BY Ihre_Tabelle.geom & lt; - & gt; ST_Geomfromtext (dein Punkt als wkt, 1000) LIMIT 5
Ihr, S.
Tags und Links ruby-on-rails gis postgis