3.7. Quelle est la meilleure façon de trouver tous les objets autour d'un autre ?


Afin d'utiliser la base de données plus efficacement, il vaut mieux faire une requête de rayon qui combine le test de rayon et le test des cadres limites : le test de cadre limite utilise un index spatial, permettant un accès rapide à un sous-ensemble de données pour lesquels le test de rayon est ensuite effectué.

La fonction ST_DWithin(geometry, geometry, distance) permet de réaliser un calcul de distance utilisant les index. Elle fonctione en créant un espace rectangulaire de recherche suffisamment large pour contenir le rayon ayant la valeur du parmètre distance, ensuite elle réalise l'opération exacte de calcul de distance sur le sous-ensemble résultant.

Par exemple, pour trouver tout les objets dans un rayon de 100 mètres autour du point POINT(1000 1000), la requête suivante devrait bien fonctionner :


SELECT * FROM tablegeo
WHERE ST_DWithin(colonnegeo, 'POINT(1000 1000)', 100.0);