ST_Disjoint

Definición

ST_Disjoint toma dos ST_Geometries (Oracle) y devuelve 1 o t (PostgreSQL) si la intersección de dos geometrías produce un conjunto vacío; de lo contrario, devuelve 0 (Oracle) o f (PostgreSQL).

Sintaxis

sde.st_disjoint (g1 sde.st_geometry, g2 sde.st_geometry)

Tipo de devolución

Booleano

Ejemplo

En este ejemplo se crean dos tablas sensitive_areas y hazardous_sites, y se insertan los valores en cada uno de ellos.

CREATE TABLE sensitive_areas (id integer,                                 zones sde.st_geometry);   CREATE TABLE hazardous_sites (id integer,                                loc sde.st_geometry);   INSERT INTO sensitive_areas VALUES ( 1, sde.st_geometry ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 0) );  INSERT INTO sensitive_areas VALUES ( 2, sde.st_geometry ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 0) );  INSERT INTO sensitive_areas VALUES ( 3, sde.st_geometry ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 0) );  INSERT INTO hazardous_sites VALUES ( 4, sde.st_geometry ('point (60 60)', 0) );  INSERT INTO hazardous_sites VALUES ( 5, sde.st_geometry ('point (30 30)', 0) );

La declaración SELECT enumera los nombres de todas las áres sensibles que están fuera de la zona de influencia de un sitio de residuos peligrosos.

Oracle

SELECT sa.id FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs WHERE sde.st_disjoint ((sde.st_buffer (hs.loc, .1)), sa.zones) = 1 AND hs.id = 5;  ID  3

PostgreSQL

SELECT sa.id FROM sensitive_areas sa, hazardous_sites hs WHERE sde.st_disjoint ((sde.st_buffer (hs.loc, .1)), sa.zones) = 't' AND hs.id = 5;  id  3
SugerenciaSugerencia:

Puede utilizar la función de ST_Intersects en su lugar en esta consulta al equiparar el resultado de la función a 0, porque ST_Intersects y ST_Disjoint devuelven resultados contrarios. La función de ST_Intersects utiliza el índice espacial al evaluar la consulta, mientras que la función ST_Disjoint no.

9/11/2013