ST_Crosses function
The ST_Crosses function takes two geometries as input parameters and returns 1 if the first geometry crosses the second. Otherwise, 0 (zero) is returned.
If the second geometry is not represented in the same spatial reference system as the first geometry, it will be converted to the other spatial reference system.
If the first geometry is a polygon or a multipolygon, or if the second geometry is a point or multipoint, or if any of the geometries is null value or is empty, then null is returned. If the intersection of the two geometries results in a geometry that has a dimension that is one less than the maximum dimension of the two specified geometries, and if the resulting geometry is not equal any of the two specified geometries, then 1 is returned. Otherwise, the result is 0 (zero).
Syntax
Parameter
- geometry1
- A value of type ST_Geometry or one of its subtypes that represents the geometry that is to be tested for crossing geometry2.
- geometry2
- A value of type ST_Geometry or one of its subtypes that represents the geometry that is to be tested to determine if it is crossed by geometry1.
Return Type
INTEGER
Example
CREATE TABLE sample_geoms (id INTEGER, geometry ST_Geometry)
INSERT INTO sample_geoms VALUES
(1, ST_Geometry('polygon((30 30, 30 50, 50 50, 50 30, 30 30))' ,0))
INSERT INTO sample_geoms VALUES
(2, ST_Geometry('linestring(40 50, 50 40)' ,0))
INSERT INTO sample_geoms VALUES
(3, ST_Geometry('linestring(20 20, 60 60)' ,0))
SELECT a.id, b.id, ST_Crosses(a.geometry, b.geometry) Crosses
FROM sample_geoms a, sample_geoms b order by crosses
ID ID CROSSES
----------- ----------- -----------
2 1 0
2 2 0
3 3 0
2 3 1
3 1 1
3 2 1
1 1 -
1 2 -
1 3 -