PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query K-Nearest Neighbor in PostGIS

Dalla fine di settembre 2011, PostGIS ha supportato le query del vicino più vicino indicizzato tramite uno o più operatori speciali utilizzabili nella clausola ORDER BY:

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

...restituirà i 10 oggetti il ​​cui geom è -90,40 più vicino in modo scalabile. Alcuni dettagli in più (opzioni e avvertenze) si trovano nel post dell'annuncio e l'uso degli operatori <-> e <#> è ora anche documentato nel riferimento ufficiale di PostGIS 2.0. (La principale differenza tra i due è che <-> confronta i centroidi della forma e <#> confronta i loro confini: nessuna differenza per i punti, altre forme scelgono ciò che è appropriato per le tue query.)