Définition
ST_DWithin accepte deux géométries en entrée et renvoie la valeur true si les géométries sont éloignées de la distance spécifiée. Sinon, la valeur false est renvoyée. Le système de référence spatiale des géométries détermine l’unité de mesure appliquée à la distance spécifiée. Ainsi, les géométries fournies à ST_DWithin doivent toutes deux utiliser les mêmes projection de coordonnées et SRID.
Syntaxe
sde.st_dwithin (st_geometry geometry1, st_geometry geometry2, double_precision distance);
Type de retour
Booléen
Exemple
Dans l’exemple suivant, deux tables sont créées et des entités y sont insérées. Puis la fonction ST_DWithin est utilisée pour déterminer si un point de la première table se situe à 100 mètres maximum d’un polygone dans le second tableau.
--Create table to store points.
CREATE TABLE dwithin_test_pt (id INT, geom sde.st_geometry);
--Create table to store polygons.
CREATE TABLE dwithin_test_poly (id INT, geom sde.st_geometry);
--Insert features into each table.
INSERT INTO dwithin_test_pt
VALUES
(
1,
sde.st_geometry('point (1 2)', 4326)
)
;
INSERT INTO dwithin_test_pt
VALUES
(
2,
sde.st_geometry('point (10.02 20.01)', 4326)
)
;
INSERT INTO dwithin_test_poly
VALUES
(
1,
sde.st_geometry('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 4326)
)
;
INSERT INTO dwithin_test_poly
VALUES
(
2,
sde.st_geometry('polygon ((101.02 200.01, 111.92 350.64, 250.02 340.15, 190.15 330.94, 101.02 200.01))', 4326)
)
;
--Determine which features in the point table are within 100 meters of the features in the polygon table. SELECT pt.id, poly.id, sde.st_distance(pt.geom, poly.geom) distance_meters, sde.st_dwithin(pt.geom, poly.geom, 100) DWithin
FROM dwithin_test_pt pt, dwithin_test_poly poly;
L’instruction Select renvoie les données suivantes lorsqu’elle est exécutée sur des données dans PostgreSQL :
id id distance_meters dwithin 1 1 20.1425048094819 t 1 2 221.837689538996 f 2 1 0 t 2 2 201.69531476958 f
L’instruction renvoie les données suivantes lorsqu’elle est exécutée sur des données dans Oracle :
ID ID DISTANCE_METERS DWITHIN 1 1 20.1425048 1 1 2 221.83769 0 2 1 0 1 2 2 201.695315 0
Dans l’exemple suivant, ST_DWithin est utilisée pour identifier les entités qui se trouvent à 300 mètres maximum les unes des autres :
--Determine which features in the point table are within 300 meters of the features in the polygon table.
SELECT pt.id, poly.id, sde.st_distance(pt.geom, poly.geom) distance_meters, sde.st_dwithin(pt.geom, poly.geom, 300) DWithin
FROM dwithin_test_pt pt, dwithin_test_poly poly;
Cette seconde instruction Select renvoie les données suivantes lorsqu’elle est exécutée sur des données dans PostgreSQL :
id id distance_meters dwithin 1 1 20.1425048094819 t 1 2 221.837689538996 t 2 1 0 t 2 2 201.69531476958 t
Cette seconde instruction Select renvoie les données suivantes lorsqu’elle est exécutée sur des données dans Oracle :
ID ID DISTANCE_METERS DWITHIN 1 1 20.1425048 1 1 2 221.83769 1 2 1 0 1 2 2 201.695315 1