ST_SymmetricDiff
Definición
ST_SymmetricDiff toma dos objetos de ST_Geometry y devuelve un objeto de geometría compuesto de las partes de los objetos de origen que no son comunes para ambos.
Sintaxis
sde.st_symmetricdiff (g1 sde.st_geometry, g2 sde.st_geometry)
Tipo de devolución
ST_Geometry
Ejemplo
Para un informe especial, el supervisor del condados deben determinar las áreas sensibles y áreas del radio del sitio peligroso que no se intersecan.
La tabla sensitive_areas contiene una columna id además de la columna de forma, que almacena las geometrías de polígono de las instituciones.
La tabla hazardous_sites almacena la identidad de los sitios en la columna id., mientras que la ubicación geográfica de cada sitio se almacena en la columna de punto de sitio.
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 función ST_Buffer genera una zona de influencia que rodea los puntos del sitio de residuos peligrosos. La función ST_SymmetricDiff devuelve los polígonos de los sitios de residuos peligrosos de las zonas de influencia y las áreas sensibles que no se intersecan.
Oracle
SELECT sa.id SA_ID,hs.id HS_ID, sde.st_area (sde.st_symmetricdiff (sde.st_buffer (hs.site, .1), sa.shape)) AREA_NO_INT FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa WHERE hs.id = 4; SA_ID HS_ID AREA_NO_INT 1 4 100.031393 2 4 400.031393 3 4 400.015697
PostgreSQL
SELECT sa.id AS SA_ID, hs.id AS HS_ID, sde.st_area (sde.st_symmetricdiff (sde.st_buffer (hs.site, .1), sa.shape)) AS "no intersection" FROM hazardous_sites hs, sensitive_areas sa WHERE hs.id = 4; sa_id hs_id no intersection 1 4 100.031393502001 2 4 400.031393502001 3 4 400.01569751
La diferencia simétrica de los sitios de residuos peligrosos y las áreas sensibles resulta en la sustracción de la intersección de los ámbitos.