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