Sortierung nach nächsten - PostGIS, GeoRuby, spatial_adapter

7

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?

    
DanS 24.02.2011, 23:00
quelle

6 Antworten

14

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

    
Nicklas Avén 25.02.2011, 08:08
quelle
5

Nur für den Fall, dass jemand auf dieses Thema in Schienen 4 stolpert. Ich benutze RGEO Edelstein und das funktioniert für mich

%Vor%     
dc10 09.04.2014 21:40
quelle
2

Um das zu vervollständigen, habe ich es mit aller Hilfe so gemacht, wie ich es wollte:

%Vor%     
DanS 25.02.2011 09:45
quelle
2

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.

    
Stefan 19.04.2012 22:55
quelle
1

Sehen Sie sich die Dokumentation zu ST_Distance in PostGIS an.

    
Sarge 24.02.2011 23:52
quelle
0

Wenn Sie nicht PostGIS verwenden müssen, macht Geo-Kit dies perfekt mit Google oder Yahoo (ich habe nur Google verwendet) und in Ihren Abfragen können Sie nach Entfernung sortieren, es ist fantastisch.

    
Rabbott 25.02.2011 03:45
quelle

Tags und Links