ST_Crosses — Teste si deux géométries ont en commun certains points intérieurs, mais pas tous
boolean ST_Crosses(
geometry g1, geometry g2)
;
Compares two geometry objects and returns true
if their intersection "spatially crosses"; that is, the geometries have some, but not all interior points in common. The intersection of the interiors of the geometries must be non-empty and must have dimension less than the maximum dimension of the two input geometries, and the intersection of the two geometries must not equal either geometry. Otherwise, it returns false
. The crosses relation is symmetric and irreflexive.
In mathematical terms: ST_Crosses(A, B) ⇔ (dim( Int(A) ⋂ Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A ⋂ B ≠ A) ∧ (A ⋂ B ≠ B)
Les géométries se croisent si leur matrice d'intersection DE-9IM correspond :
T*T******
pour les situations point/ligne, point/zone et ligne/zone
T*****T**
pour les situations Ligne/Point, Zone/Point et Zone/Ligne
0********
pour les situations ligne/ligne
the result is false
for Point/Point and Area/Area situations
La spécification OpenGIS Simple Features définit ce prédicat uniquement pour les situations Point/Ligne, Point/Zone, Ligne/Ligne et Ligne/Zone. Le STC / GEOS étend la définition pour qu'elle s'applique également aux situations Ligne/Point, Zone/Point et Zone/Ligne. Cela rend la relation symétrique. |
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries. |
Amélioration : 3.0.0 a permis la prise en charge de |
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
s2.1.13.3
Cette méthode implémente la spécification SQL/MM.
SQL-MM 3: 5.1.29
Les situations suivantes renvoient toutes true
.
Prenons le cas d'un utilisateur qui dispose de deux tables : une table de routes et une table d'autoroutes.
CREATE TABLE roads ( id serial NOT NULL, geom geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
CREATE TABLE highways ( id serial NOT NULL, the_gem geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
Pour obtenir une liste des routes qui traversent une autoroute, utilisez une requête similaire à :
SELECT roads.id FROM roads, highways WHERE ST_Crosses(roads.geom, highways.geom);