ST_Difference
Definición
ST_Difference toma dos objetos de ST_Geometry y devuelve un objeto ST_Geometry que es la diferencia de los objetos de origen.
Sintaxis
sde.st_difference (g1 sde.st_geometry, g2 sde.st_geometry)
Tipo de devolución
ST_Geometry
Ejemplo
El ingeniero de la ciudad necesita conocer el área total del área de terreno de la ciudad no cubiertas por los edificios. De hecho, quiere la suma del área de terreno después de haber retirado el área de construcción.
CREATE TABLE footprints (building_id integer, footprint sde.st_geometry); CREATE TABLE lots (lot_id integer, lot sde.st_geometry); INSERT INTO footprints (building_id, footprint) VALUES ( 1, sde.st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 0) ); INSERT INTO footprints (building_id, footprint) VALUES ( 2, sde.st_polygon ('polygon ((20 0, 20 10, 30 10, 30 0, 20 0))', 0) ); INSERT INTO footprints (building_id, footprint) VALUES ( 3, sde.st_polygon ('polygon ((40 0, 40 10, 50 10, 50 0, 40 0))', 0) ); INSERT INTO lots (lot_id, lot) VALUES ( 1, sde.st_polygon ('polygon ((-1 -1, -1 11, 11 11, 11 -1, -1 -1))', 0) ); INSERT INTO lots (lot_id, lot) VALUES ( 2, sde.st_polygon ('polygon ((19 -1, 19 11, 29 9, 31 -1, 19 -1))', 0) ); INSERT INTO lots (lot_id, lot) VALUES ( 3, sde.st_polygon ('polygon ((39 -1, 39 11, 51 11, 51 -1, 39 -1))', 0) );
El ingeniero de la ciudad así mismo une la tabla de huellas y lotes en el lot_id y toma la suma del área de la diferencia de los lotes menos las huellas.
Oracle
SELECT SUM (sde.st_area (sde.st_difference (lot, footprint))) FROM FOOTPRINTS bf, LOTS WHERE bf.building_id = lots.lot_id; SUM(ST_AREA(ST_DIFFERENCE(LOT,FOOTPRINT))) 114
PostgreSQL
SELECT SUM (sde.st_area (sde.st_difference (lot, footprint))) FROM footprints bf, lots WHERE bf.building_id = lots.lot_id; sum 114
7/11/2012