ST_Intersection verwendet zwei Geometrieobjekte und gibt die Schnittmenge als Geometrieobjekt zurück.
Syntax
db2gse.ST_Intersection(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Rückgabetyp
db2gse.ST_Geometry
Beispiele
Der Chef der Feuerwehr muß die Bereiche der Krankenhäuser, Schulen, und Pflegeheime abrufen, die sich mit dem Radius einer möglichen Kontamination durch gefährliche Abfälle schneiden.
Die sensiblen Bereiche sind in der Tabelle SENSITIVE_AREAS gespeichert, die mit der folgenden Anweisung CREATE TABLE erstellt wird. Die Spalte ZONE ist als Polygon definiert, in dem der Umriß der jeweiligen sensiblen Bereiche gespeichert ist.
CREATE TABLE SENSITIVE_AREAS (id integer, name varchar(128), size float, type varchar(10), zone db2gse.ST_Polygon);
Die Gefahrenstandorte sind in der Tabelle HAZARDOUS_SITES gespeichert, die mit der folgenden Anweisung CREATE TABLE erstellt wird. Die als Punkt definierte Spalte LOCATION speichert einen Standort, der das geographische Zentrum jedes Gefahrenstandorts darstellt.
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location db2gse.ST_Point);
Die Funktion buffer generiert einen Fünf-Meilen-Puffer um die Standorte der Lagerstätten für gefährlichen Abfall. Die Funktion ST_Intersection generierte Polygone aus der Schnittmenge der gepufferten Polygone um die Abfallstandorte und der sensiblen Bereiche. Die Funktion ST_Area gibt die Polygonfläche der Schnittmenge zurück; diese wird mit der Funktion SUM als Summe über alle Gefahrenstandorte gebildet. Die Klausel GROUP BY weist die Abfrage an, die Schnittmengenflächen nach site_ID der Gefahrenstandorte zu akkumulieren.
SELECT hs.name,SUM(db2gse.ST_Area(db2gse.ST_Intersection (sa.zone, db2gse.ST_buffer hs.location,(5 * 5280)))) FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs GROUP BY hs.site_id;
In Abbildung 35 stehen die Kreise für die gepufferten Polygone um die Gefahrenstandorte. Die Schnittmenge dieser Pufferpolygone mit den Polygonen der sensiblen Bereiche erzeugen drei weitere Polygone. Das Krankenhaus links oben wird zwei Mal geschnitten; die Schule rechts unten nur ein Mal.
Abbildung 35. Mit ST_Intersection feststellen, wie groß der gefährdete Bereich in den Gebäuden ist