ST_Crosses
Definición
ST_Crosses toma dos objetos de ST_Geometry y devuelve 1 (Oracle) o t (PostgreSQL) si su intersección resulta en un objeto de geometría cuya dimensión es un número menor que la dimensión máxima de los objetos de origen. El objeto de intersección debe contener puntos interiores en ambas geometrías de origen y no están a la altura de cualquiera de los objetos de origen. De lo contrario, devuelve 0 (Oracle) o f (PostgreSQL).
Sintaxis
sde.st_crosses (g1 sde.st_geometry, g2 sde.st_geometry)
Tipo de devolución
Booleano
Ejemplo
El gobierno del condado está considerando un nuevo reglamento que establece que todas las instalaciones de almacenamiento de residuos peligrosos en el condado pueden no estar en un radio específico de alguna vía navegable. El administrador de SIG de condado tiene una representación precisa de los ríos y arroyos almacenados como cadenas de texto de líneas en la tabla de vías navegables, pero solo tiene una ubicación de punto único para cada una de las instalaciones de almacenamiento de residuos peligrosos.
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) );
Para determinar si debe alertar al supervisor de condado a cualquier instalación existente que violaría el reglamento propuesto, el administrador de SIG tendrá que establecer las ubicaciones hazardous_sites para ver si algún ríos o arroyos cruza los polígonos de zona de influencia. El predicado de cruzada compara los puntos hazardous_sites en zona de influencia con las vías navegables, devolviendo solo los registros en los que las vías navegables cruzan sobre el radio regulado propuesto del país.
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