すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:空間関係関数

最終更新日:Mar 29, 2026

空間関数を使用して、2 つのジオメトリオブジェクト間の空間関係をテストします。各関数は、指定された関係が成立する場合は 1 を返し、それ以外の場合は 0 を返します。

以下の空間関係関数が利用可能です。

関数テストされる関係
ST_Containsg2 のすべてのポイントが g1 の内部にあり、かつ、それらの内部は少なくとも 1 つのポイントを共有します
ST_Crossesg1 と g2 は一部の内部ポイントを共有しますが、すべてではありません
ST_Disjointg1 と g2 はポイントを共有しません
ST_Equalsg1 と g2 はまったく同じポイントセットを占めます
ST_Intersectsg1 と g2 は少なくとも 1 つのポイントを共有します
ST_Overlapsg1 と g2 は同じディメンションを持ち、重複しますが、どちらも他方を完全に含みません
ST_Relateg1 と g2 の間の空間関係が、Dimensionally Extended 9 Intersection Model (DE-9IM) マトリックス文字列によって定義されたパターンに一致します
ST_Touchesg1 と g2 は少なくとも 1 つの境界ポイントを共有しますが、内部ポイントはありません
ST_Withing1 のすべてのポイントが g2 の内部にあり、かつ、それらの内部は少なくとも 1 つのポイントを共有します (`ST_Contains` の逆)

ST_Contains

ST_Contains(g1, g2)

g1 が g2 を完全に含む場合、つまり、g2 のすべてのポイントが g1 の内部にあり、g1 と g2 の内部が少なくとも 1 つのポイントを共有する場合、1 を返します。それ以外の場合は 0 を返します。

g1 の境界は、その内部の一部ではありません。g1 の境界上に正確に位置するポイントは、g1 に含まれません。

戻り値の型: INT

ST_Within との関係: ST_Contains(A, B)ST_Within(B, A) の逆です。両方とも同じ結果を返します。

例:

SELECT ST_Contains(
    ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'),
    ST_GeometryFromText('POINT (2 2)')
);

結果:

+-----------------------------------------------------------------------------------------------------+
|ST_Contains(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POINT (2 2)')) |
+-----------------------------------------------------------------------------------------------------+
|                           1                                                                         |
+-----------------------------------------------------------------------------------------------------+

ST_Crosses

ST_Crosses(g1, g2)

g1 と g2 が空間的に交差する場合、つまり、一部の内部ポイントを共有しますが、すべてではない場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Crosses(
    ST_GeometryFromText('POINT (20 20)'),
    ST_GeometryFromText('POINT (25 25)')
);

結果:

+----------------------------------------------------------------------------------------------+
|ST_Crosses(ST_GeometryFromText('POINT (20 20)'), ST_GeometryFromText('POINT (25 25)'))        |
+----------------------------------------------------------------------------------------------+
|                 0                                                                            |
+----------------------------------------------------------------------------------------------+

ST_Disjoint

ST_Disjoint(g1, g2)

g1 と g2 が空間的に分離している場合、つまり、まったくポイントを共有しない場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Disjoint(
    ST_GeometryFromText('POINT (50 100)'),
    ST_GeometryFromText('POINT (150 150)')
);

結果:

+--------------------------------------------------------------------------------------------------+
|ST_Disjoint(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
+--------------------------------------------------------------------------------------------------+
|                        1                                                                         |
+--------------------------------------------------------------------------------------------------+

ST_Equals

ST_Equals(g1, g2)

g1 と g2 が空間的に等しい場合、つまり、まったく同じポイントセットを占める場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Equals(
    ST_GeometryFromText('POINT (50 100)'),
    ST_GeometryFromText('POINT (150 150)')
);

結果:

+------------------------------------------------------------------------------------------------+
|ST_Equals(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
+------------------------------------------------------------------------------------------------+
|                  0                                                                             |
+------------------------------------------------------------------------------------------------+

ST_Intersects

ST_Intersects(g1, g2)

g1 と g2 が空間的に交差する場合、つまり、少なくとも 1 つのポイントを共有する場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Intersects(
    ST_GeometryFromText('POINT (50 100)'),
    ST_GeometryFromText('POINT (150 150)')
);

結果:

+----------------------------------------------------------------------------------------------------+
|ST_Intersects(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
+----------------------------------------------------------------------------------------------------+
|                 0                                                                                  |
+----------------------------------------------------------------------------------------------------+

ST_Overlaps

ST_Overlaps(g1, g2)

g1 と g2 が空間的に重複する場合、つまり、同じディメンションを持ち、一部のポイントを共有しますが、どちらも他方を完全に含んでいない場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Overlaps(
    ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'),
    ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))')
);

結果:

+---------------------------------------------------------------------------------------------------------------------------------+
|ST_Overlaps(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 4, 4 1))'), ST_GeometryFromText('POLYGON ((3 3, 3 5, 5 5, 5 3))'))        |
+---------------------------------------------------------------------------------------------------------------------------------+
|                 1                                                                                                               |
+---------------------------------------------------------------------------------------------------------------------------------+

ST_Relate

ST_Relate(g1, g2, s1)

g1 と g2 の間の空間関係が、DE-9IM マトリックス文字列 s1 によって指定されたパターンに一致する場合、1 を返します。それ以外の場合は 0 を返します。

Dimensionally Extended 9 Intersection Model (DE-9IM) は、2 つのジオメトリ間の関係を、記号 F012T、および * を使用して 9 文字の文字列として記述します。ST_ContainsST_Touches のような名前付き関数が、テストする必要がある正確な関係をカバーしていない場合は、ST_Relate を使用します。

パラメーター:

パラメーター説明
g1geometry最初のジオメトリ
g2geometry2 番目のジオメトリ
s1VARCHARDE-9IM マトリックスパターン文字列 (例: 'T*****FF*')

戻り値の型: INT

例:

SELECT ST_Relate(
    ST_GeometryFromText('LINESTRING (0 0, 3 3)'),
    ST_GeometryFromText('LINESTRING (1 1, 4 1)'),
    '****T****'
);

結果:

+--------------------------------------------------------------------------------------------------------------------------+
|ST_Relate(ST_GeometryFromText('LINESTRING (0 0, 3 3)'), ST_GeometryFromText('LINESTRING (1 1, 4 1)'), '****T****')        |
+--------------------------------------------------------------------------------------------------------------------------+
|                 0                                                                                                        |
+--------------------------------------------------------------------------------------------------------------------------+

ST_Touches

ST_Touches(g1, g2)

g1 と g2 が空間的に接触する場合、つまり、少なくとも 1 つの境界ポイントを共有しますが、内部ポイントはない場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: INT

例:

SELECT ST_Touches(
    ST_GeometryFromText('POINT (50 100)'),
    ST_GeometryFromText('POINT (150 150)')
);

結果:

+-------------------------------------------------------------------------------------------------+
|ST_Touches(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))        |
+-------------------------------------------------------------------------------------------------+
|                     0                                                                           |
+-------------------------------------------------------------------------------------------------+

ST_Within

ST_Within(g1, g2)

g1 が g2 の内部に完全に位置する場合、つまり、g1 のすべてのポイントが g2 の内部にあり、g1 と g2 の内部が少なくとも 1 つのポイントを共有する場合、1 を返します。それ以外の場合は 0 を返します。

戻り値の型: BOOLEAN

ST_Contains との関係: ST_Within(A, B)ST_Contains(B, A) の逆です。両方とも同じ結果を返します。

例:

SELECT ST_Within(
    ST_GeometryFromText('POINT (50 100)'),
    ST_GeometryFromText('POINT (150 150)')
);

結果:

+-------------------------------------------------------------------------------------------------+
|ST_Within(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))         |
+-------------------------------------------------------------------------------------------------+
|                 0                                                                               |
+-------------------------------------------------------------------------------------------------+