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.

9/11/2013