PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

K-Nachbar-Abfrage in PostGIS

Seit Ende September 2011 unterstützt PostGIS indexierte Nächste-Nachbar-Abfragen über einen oder mehrere spezielle Operatoren, die in der ORDER BY-Klausel verwendet werden können:

SELECT name, gid
FROM geonames
ORDER BY geom <-> st_setsrid(st_makepoint(-90,40),4326)
LIMIT 10;

...gibt die 10 Objekte zurück, deren geom ist am nächsten -90,40 auf skalierbare Weise. Ein paar weitere Details (Optionen und Vorbehalte) sind in diesem Ankündigungspost und die Verwendung der Operatoren <-> und <#> ist jetzt auch in der offiziellen PostGIS 2.0-Referenz dokumentiert. (Der Hauptunterschied zwischen den beiden besteht darin, dass <-> vergleicht die Formschwerpunkte und <#> vergleicht ihre Grenzen – kein Unterschied für Punkte, andere Formen wählen, was für Ihre Abfragen geeignet ist.)