Voici la déclaration SQL pour récupérer tous les utilisateurs qui vivent dans le centre-ville de Boston en utilisant les coordonnées lat/long dans Postgres :
SELECT *
FROM users
WHERE ST_DWithin(
ST_SetSRID(ST_MakePoint(users.longitude, users.latitude), 4326)::geography,
ST_SetSRID(ST_MakePoint(-71.0596, 42.3601), 4326)::geography,
1000
);
Explication :
ST_SetSRID(ST_MakePoint(users.longitude, users.latitude), 4326)
crée un point à partir des coordonnées lat/long de chaque utilisateur.ST_SetSRID(ST_MakePoint(-71.0596, 42.3601), 4326)
crée un point à partir des coordonnées lat/long du centre-ville de Boston.::geography
convertit les points en objets géographiques pour pouvoir utiliser la fonction ST_DWithin
.ST_DWithin
est une fonction qui vérifie si deux objets géographiques sont à une distance inférieure ou égale à une certaine valeur (en mètres).