ST_Intersection

Définition

ST_Intersection accepte deux objets ST_Geometry et retourne l'ensemble d'intersection sous la forme d'un objet ST_Geometry.

Syntaxe

sde.st_intersection (g1 sde.st_geometry, g2 sde.st_geometry)

Type de retour

ST_Geometry

Exemple

Le capitaine des pompiers doit connaître les surfaces des hôpitaux, écoles et maisons de retraite situées dans un rayon de risque de contamination par des déchets dangereux.

Les hôpitaux, écoles et maisons de retraite sont stockés dans la table sensitive_areas créée à l'aide de l'instruction CREATE TABLE ci-dessous. La colonne zone, définie avec le type polygone, stocke les contours respectifs des zones sensibles.

Les sites à risque sont stockés dans la table hazardous_sites créée à l'aide de l'instruction CREATE TABLE ci-dessous. La colonne location, définie avec le type point, stocke un emplacement qui est le centre géographique de chaque site à risque.

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 fonction ST_Buffer génère une zone tampon qui entoure les sites de dépôt de déchets dangereux. La fonction ST_Intersection génère des polygones à partir de l'intersection entre les zones tampons des sites de dépôt de déchets dangereux et les zones sensibles.

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

7/10/2012