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