Tous les produits
Search
Centre de documentation

ApsaraDB RDS:ST_DWithin

Dernière mise à jour :Sep 02, 2026

Renvoie true si deux objets spatiaux sont distants d'une valeur inférieure ou égale à une distance spécifiée, et false dans le cas contraire. Contrairement à ST_Distance, ST_DWithin exploite automatiquement les index spatiaux disponibles, ce qui en fait la solution privilégiée pour les requêtes de proximité.

Syntaxe

boolean ST_DWithin(geometry g1, geometry g2, double precision distanceOfSrid);
boolean ST_DWithin(geography gg1, geography gg2, double precision distanceMeters);
boolean ST_DWithin(geography gg1, geography gg2, double precision distanceMeters, boolean useSpheroid);

Paramètres

Paramètre Type Description
g1 geometry Premier objet geometry.
g2 geometry Deuxième objet geometry.
distanceOfSrid double precision Distance seuil, exprimée dans l'unité du système de référence spatiale (SRS) des objets geometry.
gg1 geography Premier objet geography.
gg2 geography Deuxième objet geography.
distanceMeters double precision Distance seuil, en mètres.
useSpheroid boolean Indique s'il faut utiliser un système de référence ellipsoïdal. Cette option améliore la précision des résultats au prix d'une légère baisse de performance.

Notes d'utilisation

  • Si les deux arguments sont de type geometry, ils doivent partager le même identifiant de système de référence spatiale (SRID).

  • Si les deux arguments sont de type geography, la distance est mesurée en mètres par défaut.

  • La fonction compare les boîtes englobantes en s'appuyant sur tous les index spatiaux disponibles ; les vérifications de proximité bénéficient ainsi d'une accélération par index native.

  • Pour les vérifications de proximité en 3D, utilisez plutôt ST_3DDWithin.

Exemples

Différence entre ST_DWithin et ST_DFullyWithin

ST_DWithin renvoie true si la distance minimale entre les deux objets est inférieure ou égale au seuil défini. ST_DFullyWithin applique une contrainte plus stricte : chaque point des deux objets doit respecter le seuil de distance.

SELECT ST_DFullyWithin(g1, g2, 2), ST_DWithin(g1, g2, 2)
FROM (
  SELECT 'LINESTRING(0 1,1 1)'::geometry AS g1,
         'LINESTRING(0 0,0 -1)'::geometry AS g2
) AS test;

Résultat attendu :

 st_dfullywithin | st_dwithin
-----------------+------------
 f               | t
(1 row)

Étapes suivantes

  • ST_DFullyWithin : vérifie si tous les points de deux objets respectent une distance spécifiée

  • ST_3DDWithin : vérification de proximité pour les objets 3D dans un système de coordonnées projeté