ST_Crosses — 与えられたジオメトリが共通の内部の点を持ち、かつそうでない内部の点を持つ場合に、TRUEを返します。
boolean ST_Crosses(
geometry g1, geometry g2)
;
二つのジオメトリを比較して、共有部が「空間的にクロスしている」場合にはtrue
を返します。二つのジオメトリの内部の全部でない一部が共有されている、という意味です。二つのジオメトリの内部の共有部は空であってはならず、二つの入力ジオメトリの最大次元より小さい次元でなければなりません。さらに、二つのジオメトリの共有部は入力ジオメトリの一方とでも同じであってなりません。これらの条件に合わない場合には false
を返します。
数学的に述べると、次のようになります。
DE-9IMインタセクション行列が次の通り合致するとジオメトリはクロスしています。
Point/Line, Point/Area, Line/Areaの場合にはT*T******
Line/Point, Area/Point, Area/Lineの場合にはT*****T**
Line/Lineの場合には0********
Point/PointとArea/Areaの場合には、この述語はFALSE
を返します。
OpenGIS Simple Feature Specificationでは、この述語はPoint/Line, Point/Area, Line/Line, Line/Areaの場合についてのみ定義されています。JTS/GEOSでは、Line/Point, Area/Point, Area/Lineについて拡張しています。これによって関係が対称になっています。
![]() | |
This function automatically includes a bounding box comparison that makes use of any spatial indexes that are available on the geometries. |
![]() | |
Enhanced: 3.0.0 |
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
を返します。
![]()
| ![]()
|
![]()
| ![]()
|
roads (道路)とhighways (高速道路)の2つのテーブルを持っている場面を考えます。
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) );
|
次のようなクエリを使って、highwayとクロスするroadsのリストを決定します。
SELECT roads.id FROM roads, highways WHERE ST_Crosses(roads.geom, highways.geom);