Name

ST_Crosses — 如果两个几何图形有一些(但不是全部)共有的内部点,则返回True。

Synopsis

boolean ST_Crosses(geometry g1, geometry g2);

描述

ST_Crosses 获取两个几何对象并返回 true 如果它们的交叉点在空间上是交叉的,也就是说,几何图形有一些但不是所有的内部点是共同的。几何图形内部的交点不能是空集,并且其维度必须小于两个输入几何图形的最大尺寸。此外,两个几何图形的交点不能等于任何一个源几何图形。否则,它将返回 false

用数学术语来说,这是:

如果几何的DE-9IM交阵满足以下条件,则它们相交:

  • T*T* (适用于点/线、点/面和线/面情况)

  • T*T** (适用于线/点、面/点和面/线情况)

  • 0* (适用于线路/线路情况)

对于点/点和面/面的情况,此谓词返回 false

OpenGIS简单要素规范仅为点/线、点/面、线/线和线/面情况定义了此谓词。JTS/GEOS将该定义扩展到适用于线/点、面/点和面/线的情况。这使关系成为对称的。

[Note]

This function automatically includes a bounding box comparison that makes use of any spatial indexes that are available on the geometries.

[Important]

增强:已启用3.0.0支持 GEOMETRYCOLLECTION

This method implements the OGC Simple Features Implementation Specification for SQL 1.1. s2.1.13.3

This method implements the SQL/MM specification. SQL-MM 3:5.1.29

示例

以下所有情况都会返回 TRUE

MULTIPOINT / LINESTRING

MULTIPOINT / POLYGON

LINESTRING / POLYGON

LINESTRING / LINESTRING

考虑用户有两个表的情况:一个道路表和一个高速公路表。

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)
);

要确定穿过高速公路的道路列表,请使用类似于以下内容的查询:

SELECT roads.id
FROM roads, highways
WHERE ST_Crosses(roads.geom, highways.geom);

另请参阅

ST_Contains, ST_Overlaps