ST_Relate — intersectionMatrixPatternの値について、2つのジオメトリの内部、境界、外部のインタセクションを見て、指定したジオメトリがもうひとつのジオメトリと空間的に関係している場合に、TRUEを返します。intersectionMatrixPatternが無い場合には、2ジオメトリについての最大のintersectionMatrixPatternを返します。
boolean ST_Relate(geometry geomA, geometry geomB, text intersectionMatrixPattern);
text ST_Relate(geometry geomA, geometry geomB);
text ST_Relate(geometry geomA, geometry geomB, int BoundaryNodeRule);
1版: geomA, geomB, intersectionMatrixを取り、DE-9IM matrix patternの値によって指定される、2つのジオメトリの内部、境界、外部のインタセクションを見て、指定したジオメトリがもうひとつのジオメトリと空間的に関係している場合に、1(TRUE)を返します。
これは特にインタセクト、クロス等の複合チェックを一度に行うために使います。
GEOMETRYCOLLECTIONを引数にして呼ばないでください。
![]() | |
これは論理値を返して整数を返さないのが「許される」版です。これはOGC仕様で定められています。 |
![]() | |
この関数は、自動的にはインデクスを呼びだしません。非接続など、関連が否定的になるものがあるためです。インタセクションを必要とするパターンの関連を使うのでしたら、&&演算子でインデクスを呼び出して下さい。 |
2版: geomAとgeomBを取り、「Dimensionally Extended 9 Intersection Model (DE-9IM)」を返します。
3版: 2版と同じですが、特定の境界ノード規則(1:OGC/MOD2, 2:Endpoint, 3:MultivalentEndpoint, 4:MonovalentEndpoint)を許容します。
![]() | |
|
not in OGC spec, but implied. see s2.1.13.2
GEOSモジュールによって実現しています。
このメソッドはOpenGIS Simple Features
Implementation Specification for SQL 1.1.の実装です s2.1.1.2 // s2.1.13.3
このメソッドはSQL/MM仕様の実装です。 SQL-MM 3: 5.1.25
機能強化: 2.0.0 - 境界ノード規則が追加されました(GEOS 3,0以上が必要です)。
-- あるポリゴンとインタセクトして接触しない
-- (内部でインタセクトする)区域を探索します。
SELECT l.* , b.name As poly_name
FROM polys As b
INNER JOIN compounds As l
ON (p.the_geom && b.the_geom
AND ST_Relate(l.the_geom, b.the_geom,'T********'));
SELECT ST_Relate(ST_GeometryFromText('POINT(1 2)'), ST_Buffer(ST_GeometryFromText('POINT(1 2)'),2));
st_relate
-----------
0FFFFF212
SELECT ST_Relate(ST_GeometryFromText('LINESTRING(1 2, 3 4)'), ST_GeometryFromText('LINESTRING(5 6, 7 8)'));
st_relate
-----------
FF1FF0102
SELECT ST_Relate(ST_GeometryFromText('POINT(1 2)'), ST_Buffer(ST_GeometryFromText('POINT(1 2)'),2), '0FFFFF212');
st_relate
-----------
t
SELECT ST_Relate(ST_GeometryFromText('POINT(1 2)'), ST_Buffer(ST_GeometryFromText('POINT(1 2)'),2), '*FF*FF212');
st_relate
-----------
t