ST_Intersection

Definición

ST_Intersection toma dos objetos de ST_Geometry y devuelve el conjunto de intersección como un objeto ST_Geometry.

Sintaxis

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

Tipo de devolución

ST_Geometry

Ejemplo

El jefe de bomberos debe obtener las áreas de los hospitales, escuelas y centros de asistencia intersecados por el radio de una posible contaminación de los residuos peligrosos.

Los hospitales, escuelas y centros de asistencia 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 zona, 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 ubicación, 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, 
                               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)
);

La función ST_Buffer genera una zona de influencia que rodea los sitios de residuos peligrosos. La función ST_Intersection genera polígonos desde la intersección de las áreas sensibles y sitios de residuos peligrosos de la zona de influencia.

Oracle

SELECT sa.id, sde.st_astext (sde.st_intersection (sde.st_buffer (hs.location, .1), sa.zone)) Intersection
FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs
WHERE hs.id = 5
AND sde.st_astext (sde.st_intersection (sde.st_buffer (hs.location, .1), sa.zone)) 
NOT LIKE '%EMPTY%';

  ID  INTERSECTION

  1   POLYGON  ((29.90000000 30.00000000, 30.00000000 30.00000000, 30.00000000 30.100

  2   POLYGON  ((30.00000000 30.00000000, 30.10000000 30.00000000, 30.09978589 30.006

PostgreSQL

SELECT sa.id, sde.st_astext (sde.st_intersection (sde.st_buffer (hs.location, .1), sa.zone)) AS Intersection
FROM sensitive_areas sa, hazardous_sites hs
WHERE hs.id = 5
AND sde.st_astext (sde.st_intersection (sde.st_buffer (hs.location, .1), sa.zone))::varchar  NOT LIKE '%EMPTY%';

  id  intersection

  1   POLYGON  ((29.90000000 30.00000000, 30.00000000 30.00000000, 30.00000000 30.100

  2   POLYGON  ((30.00000000 30.00000000, 30.10000000 30.00000000, 30.09978589 30.006

7/11/2012