ST_Intersects
Definición
ST_Intersects devuelve 1 (Oracle) o t (PostgreSQL) si la intersección de dos ST_Geometries no resulta en un conjunto vacío; de lo contrario, devuelve 0 (Oracle) o f (PostgreSQL).
Sintaxis
sde.st_intersects (g1 sde.st_geometry, g2 sde.st_geometry)
Tipo de devolución
Booleano
Ejemplo
El jefe de bomberos quiere una lista de áreas sensibles dentro de un radio de un sitio de residuos peligrosos.
Las áreas sensibles se almacenan en la tabla sensitive_areas que se crea con la declaración CREATE TABLE que se muestra a continuación. La columna de forma, que se define como un polígono, almacena el contorno de cada una de las zonas sensibles.
Los sitios peligrosos se almacenan en la tabla hazardous_sites creada con la declaración CREATE TABLE que sigue. La columna de sitio, que se define como un punto, almacena una ubicación que es el centro geográfico de cada sitio peligroso.
CREATE TABLE sensitive_areas (id integer, shape sde.st_geometry); CREATE TABLE hazardous_sites (id integer, site 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 consulta devuelve una lista de áreas sensibles y sitios peligrosos, para las áreas sensibles que intersecan el radio de la zona de influencia de los sitios peligrosos.
Oracle
SELECT sa.id SA_ID, hs.id HS_ID FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs WHERE sde.st_intersects (sde.st_buffer (hs.site, .1), sa.shape) = 1 ORDER BY sa.id; SA_ID HS_ID 1 5 2 5 3 4
PostgreSQL
SELECT sa.id AS sid, hs.id AS hid FROM sensitive_areas sa, hazardous_sites hs WHERE sde.st_intersects (sde.st_buffer (hs.site, .1), sa.shape) = 't' ORDER BY sa.id; sid hid 1 5 2 5 3 4