カテゴリ:

地理空間関数

ST_CONTAINS

Returns TRUE if a GEOGRAPHY or GEOMETRY object is completely inside another object of the same type.

より厳密には、g2のポイントがg1の外部になく、Bの内部の少なくとも1つのポイントがAの内部にある場合にのみ、オブジェクトg1にはオブジェクトg2が含まれます。この定義には、すぐに明確ではない微妙な点があります。「含む」の意味の詳細については、 次元拡張9交差点モデル(DE-9IM) をご参照ください。

Although ST_COVERS and ST_CONTAINS might seem similar, the two functions have subtle differences. For details on the differences between "covers" and "contains", see the Dimensionally Extended 9-Intersection Model (DE-9IM).

注釈

この関数は、入力値として GeometryCollection または FeatureCollection を使用することをサポートしていません。

こちらもご参照ください。

ST_WITHINST_COVERSST_COVEREDBY

構文

ST_CONTAINS( <geography_expression_1> , <geography_expression_2> )

ST_CONTAINS( <geometry_expression_1> , <geometry_expression_2> )

引数

geography_expression_1

GeometryCollection または FeatureCollection ではない GEOGRAPHY オブジェクト。

geography_expression_2

GeometryCollection または FeatureCollection ではない GEOGRAPHY オブジェクト。

geometry_expression_1

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

geometry_expression_2

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

戻り値

BOOLEAN

Usage Notes

  • For GEOMETRY objects, the function reports an error if the two input GEOMETRY objects have different SRIDs.

GEOGRAPHY Examples

これは、 ST_CONTAINS 関数の簡単な使用法を示しています。

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
SELECT ST_CONTAINS(g1, g2) 
    FROM geospatial_table_01;
+---------------------+
| ST_CONTAINS(G1, G2) |
|---------------------|
| True                |
+---------------------+

GEOMETRY Examples

The query below shows several examples of using ST_CONTAINS. Note how ST_CONTAINS determines that:

  • The Polygon contains itself.

  • The Polygon does not contain the LineString that is on its border.

    SELECT ST_CONTAINS(poly, poly_inside),
          ST_CONTAINS(poly, poly),
          ST_CONTAINS(poly, line_on_boundary),
          ST_CONTAINS(poly, line_inside)
      FROM (SELECT
        TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))') AS poly,
        TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))') AS poly_inside,
        TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1)') AS line_on_boundary,
        TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1)') AS line_inside);
    
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    | ST_CONTAINS(POLY, POLY_INSIDE) | ST_CONTAINS(POLY,POLY) | ST_CONTAINS(POLY,LINE_ON_BOUNDARY) | ST_CONTAINS(POLY,LINE_INSIDE) |
    |--------------------------------+------------------------+------------------------------------+-------------------------------|
    | True                           | True                   | False                              | True                          |
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    
最上部に戻る