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