Definition
ST_DWithin wählt zwei Geometrien als Eingabe aus und gibt "true" zurück, wenn die Geometrien sich innerhalb der angegebenen Entfernung voneinander befinden. Andernfalls lautet die Rückgabe "false". Das Raumbezugssystem der Geometrien bestimmt, welche Maßeinheit für die angegebene Entfernung verwendet wird. Die an ST_DWithin bereitgestellten Geometrien müssen deshalb die gleiche Koordinatenprojektion und SRID verwenden.
Syntax
sde.st_dwithin (st_geometry geometry1, st_geometry geometry2, double_precision distance);
Rückgabetyp
Boolesch
Beispiel
Im folgenden Beispiel werden zwei Tabellen erstellt und mit Features versehen. Dann wird anhand der ST_DWithin-Funktion bestimmt, ob ein Punkt in der ersten Tabelle sich innerhalb von 100 Metern Entfernung zu einem Polygon in der zweiten Tabelle befindet.
--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;
Die Select-Anweisung gibt Folgendes zurück, wenn sie für Daten in PostgreSQL ausgeführt wird:
id id distance_meters dwithin 1 1 20.1425048094819 t 1 2 221.837689538996 f 2 1 0 t 2 2 201.69531476958 f
Die Anweisung gibt Folgendes zurück, wenn sie für Daten in Oracle ausgeführt wird:
ID ID DISTANCE_METERS DWITHIN 1 1 20.1425048 1 1 2 221.83769 0 2 1 0 1 2 2 201.695315 0
Im folgenden Beispiel wird ST_DWithin verwendet, um Features zu finden, die sich innerhalb einer Entfernung von 300 Metern zueinander befinden:
--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;
Diese zweite Select-Anweisung gibt Folgendes zurück, wenn sie für Daten in PostgreSQL ausgeführt wird:
id id distance_meters dwithin 1 1 20.1425048094819 t 1 2 221.837689538996 t 2 1 0 t 2 2 201.69531476958 t
Die zweite Select-Anweisung gibt Folgendes zurück, wenn sie für Daten in Oracle ausgeführt wird:
ID ID DISTANCE_METERS DWITHIN 1 1 20.1425048 1 1 2 221.83769 1 2 1 0 1 2 2 201.695315 1