ST_Crosses — Testar om två geometrier har vissa, men inte alla, inre punkter gemensamt
boolean ST_Crosses(
geometry g1, geometry g2)
;
Jämför två geometriobjekt och returnerar true
om deras skärningspunkt "korsar varandra spatialtt", dvs. geometrierna har vissa men inte alla inre punkter gemensamma. Skärningspunkten mellan geometriernas inre punkter måste vara icke-tom och ha en dimension som är mindre än den maximala dimensionen för de två geometrierna i indata, och skärningspunkten mellan de två geometrierna får inte vara lika med någon av geometrierna. I annat fall returneras false
. Crosses-relationen är symmetrisk och irreflexiv.
I matematiska termer: ST_Crosses(A, B) ⇔ (dim( Int(A) ⋂ Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A ⋂ B ≠ A) ∧ (A ⋂ B ≠ B)
Geometrier korsas om deras DE-9IM Intersection Matrix matchar:
T*T******
för situationerna Point/Line, Point/Area och Line/Area
T*****T**
för Line/Point-, Area/Point- och Area/Line-situationer
0********
för Line/Line-situationer
resultatet är falskt
för Point/Point- och Area/Area-situationer
![]() |
|
OpenGIS Simple Features Specification definierar detta predikat endast för situationerna Point/Line, Point/Area, Line/Line och Line/Area. JTS / GEOS utökar definitionen till att även gälla Line/Point, Area/Point och Area/Line situationer. Detta gör relationen symmetrisk. |
![]() |
|
Denna funktion inkluderar automatiskt en jämförelse av begränsningsrutor som använder alla spatiala index som finns tillgängliga för geometrierna. |
![]() |
|
Förbättrad: 3.0.0 aktiverade stöd för |
Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1. s2.1.13.3
Denna metod implementerar SQL/MM-specifikationen. SQL-MM 3: 5.1.29
Följande situationer returnerar alla true
.
![]()
|
![]()
|
![]()
|
![]()
|
Tänk dig en situation där en användare har två tabeller: en tabell med vägar och en tabell med motorvägar.
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) );
|
För att få fram en lista över vägar som korsar en motorväg, använd en fråga som liknar:
SELECT roads.id FROM roads, highways WHERE ST_Crosses(roads.geom, highways.geom);