ST_Crosses

Definition

ST_Crosses wählt zwei ST_Geometry-Objekte aus und gibt den Wert "1" (Oracle) oder "t" (PostgreSQL) zurück, wenn deren Schnittmenge eine Geometrie ergibt, deren Dimension der höchsten Dimension der Quellobjekte minus eins entspricht. Das Schnittpunktobjekt muss Punkte enthalten, die sich innerhalb der beiden Quellgeometrien befinden und mit keinem der beiden Quellobjekte identisch sind. Andernfalls ist die Rückgabe "0" (Oracle) oder "f" (PostgreSQL).

Syntax

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

Rückgabetyp

Boolesch

Beispiel

Die Kreisverwaltung erwägt eine neue Vorschrift, die besagt, dass alle Sondermülldeponien im Kreis sich nicht innerhalb eines bestimmten Radius von Wasserläufen befinden dürfen. Der GIS-Fachmann des Kreises hat eine genaue Darstellung fließender Gewässer in der Tabelle "waterways" als Linestrings gespeichert, hat aber für jede der Sondermülldeponien nur einen einzelnen Punkt zur Verfügung.

CREATE TABLE waterways (id integer, 
name varchar(128), 
water sde.st_geometry); 

CREATE TABLE hazardous_sites (site_id integer, 
name varchar(40),
location sde.st_geometry);

INSERT INTO waterways VALUES (
2,
'Zanja', 
sde.st_geometry ('linestring (40 50, 50 40)', 0)
);

INSERT INTO waterways VALUES (
3, 
'Keshequa',
sde.st_geometry ('linestring (20 20, 60 60)', 0)
);

INSERT INTO hazardous_sites VALUES (
4,
'Bad Water',
sde.st_point ('point (60 60)', 0)
);

INSERT INTO hazardous_sites VALUES (
5,
'Glowing Pools',
sde.st_point ('point (30 30)', 0)
);

Um zu bestimmen, ob er den Kreisumweltbeauftragten über vorhandene Deponien informieren muss, die gegen die vorgeschlagene Vorschrift verstoßen, muss der GIS-Fachmann die Sondermüllstandorte mit einem Puffer versehen, um zu prüfen, ob fließende Gewässer die Pufferpolygone schneiden. Die Eigenschaft ST_Crosses vergleicht die gepufferten Sondermüllstandorte mit Wasserläufen und gibt nur die Datensätze zurück, bei denen der Wasserlauf den vorgeschlagenen vorgeschriebenen Radius des Landkreises schneidet.

Oracle

SELECT UNIQUE (ww.name) "River or stream", hs.name "Hazardous sites"
FROM WATERWAYS ww, HAZARDOUS_SITES hs 
WHERE sde.st_crosses (sde.st_buffer (hs.location, .01), ww.water) = 1;

River or stream				Hazardous sites

Keshequa						Bad Water

PostgreSQL

SELECT DISTINCT (ww.name) AS "River or stream", hs.name AS "Hazardous sites"
FROM waterways ww, hazardous_sites hs 
WHERE sde.st_crosses (sde.st_buffer (hs.location, .01), ww.water) = 't';

River or stream			   Hazardous sites

Keshequa					   Bad Water

7/10/2012