ST_Overlaps

Definición

ST_Overlaps toma dos objetos de ST_Geometry y devuelve 1 (Oracle) o t (PostgreSQL) si la intersección de los objetos resulta en un objeto ST_Geometry de la misma dimensión pero no igual a un objeto de origen; de lo contrario, devuelve 0 (Oracle) o f (PostgreSQL).

Sintaxis

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

Tipo de devolución

Booleano

Ejemplo

El supervisor del condado necesita una lista de áreas sensibles que se superponen al radio de la zona de influencia de sitios de residuos peligrosos. La tabla sensitive_areas contiene varias columnas, que describen las instituciones amenazadas, además de la columna de zona, que almacena las geometrías de ST_Polygon de dichas instituciones.

La tabla hazardous_sites almacena la identidad de los sitios en la columna Id., mientras que la ubicación geográfica real de cada sitio se almacena en la columna de punto de ubicación.

CREATE TABLE sensitive_areas (id integer, 
                               zone sde.st_geometry); 

CREATE TABLE hazardous_sites (id integer, 
                              location sde.st_geometry);


INSERT INTO sensitive_areas VALUES (
1,
sde.st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 0)
);

INSERT INTO sensitive_areas VALUES (
2,
sde.st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 0)
);

INSERT INTO sensitive_areas VALUES (
3,
sde.st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 0)
);

INSERT INTO hazardous_sites VALUES (
4,
sde.st_point ('point (60 60)', 0)
);

INSERT INTO hazardous_sites VALUES (
5,
sde.st_point ('point (30 30)', 0)
);

Las tablas sensitive_areas y hazardous_sites están unidas por la función ST_Overlaps, que devuelve el Id. para todas las filas sensitive_areas que contienen polígonos que se superponen con el radio de la zona de influencia de los puntos de ubicación de hazardous_sites.

Oracle

SELECT UNIQUE (hs.id)
FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa
WHERE sde.st_overlaps (sde.st_buffer (hs.location, .01), sa.zone) = 1;

ID

4
5

PostgreSQL

SELECT DISTINCT (hs.id)
FROM hazardous_sites hs, sensitive_areas sa
WHERE sde.st_overlaps (sde.st_buffer (hs.location, .01), sa.zone) = 't';

ID

4
5

7/11/2012