ST_Intersection

Definition

ST_Intersection akzeptiert zwei ST_Geometry-Objekte und gibt die Schnittmenge als ST_Geometry-Objekt zurück.

Syntax

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

Rückgabetyp

ST_Geometry

Beispiel

Der Kreisbrandmeister muss die Flächen der Krankenhäuser, Schulen und Pflegeheime ermitteln, die sich mit dem Radius einer möglichen Kontamination durch Sondermüll überschneiden.

Die Daten zu Schulen, Krankenhäusern und Pflegeheimen werden in der Tabelle "sensitive_areas" gespeichert, die mit der folgenden CREATE TABLE-Anweisung erstellt wird. Die als Polygon definierte Spalte "zone" enthält den Umriss der einzelnen empfindlichen Bereiche.

Die Sondermülldeponien werden in der Tabelle "hazardous_sites" gespeichert, die mit der folgenden CREATE TABLE-Anweisung erstellt wird. Die als Punkte definierte Spalte "position" enthält eine Position, die den geographischen Mittelpunkt der einzelnen Sondermülldeponien darstellt.

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)
);

Die Funktion ST_Buffer generiert einen Puffer um die Sondermülldeponien. Die Funktion ST_Intersection erzeugt Polygone von der Überschneidung der gepufferten Sondermülldeponien mit den empfindlichen Bereichen.

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