カテゴリ:

地理空間関数

ST_COVERS

ある地理空間オブジェクトのポイントが別の地理空間オブジェクトの外側にない場合は TRUE を返します。つまり、

  • GEOGRAPHY オブジェクト g2 は、 GEOGRAPHY オブジェクト g1 の外にあります。

  • GEOMETRY オブジェクト g2 は、 GEOMETRY オブジェクト g1 の外にあります。

ST_COVERS は、 ST_CONTAINS と似ていますが、微妙に異なります。「カバー」と「含む」の違いの詳細については、 次元拡張9交差点モデル(DE-9IM) をご参照ください。

ST_COVERS と ST_CONTAINS は似ているように見えるかもしれませんが、2つの関数には微妙な違いがあります。「カバー」と「含む」の違いの詳細については、 次元拡張9交差点モデル(DE-9IM) をご参照ください。

注釈

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

ちなみに

検索最適化サービスを使用すると、この関数を呼び出すクエリのパフォーマンスを向上させることができます。詳細については、 検索最適化サービス をご参照ください。

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

ST_CONTAINSST_COVEREDBY

構文

ST_COVERS( <geography_expression_1> , <geography_expression_2> )

ST_COVERS( <geometry_expression_1> , <geometry_expression_2> )
Copy

引数

geography_expression_1

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

geography_expression_2

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

geometry_expression_1

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

geometry_expression_2

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

戻り値

BOOLEAN

使用上の注意

  • GEOMETRY オブジェクトの場合、2つの入力 GEOMETRY オブジェクトの SRIDs が異なると、関数はエラーを報告します。

GEOGRAPHY 例

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

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))');
Copy
SELECT ST_COVERS(g1, g2) 
    FROM geospatial_table_01;
+-------------------+
| ST_COVERS(G1, G2) |
|-------------------|
| True              |
+-------------------+
Copy

GEOMETRY 例

以下のクエリは、 ST_COVERS の使用例をいくつか示しています。ポリゴンがその境界で LineString をどのようにカバーするか(ただし、 含む ことはない)に注意してください。

SELECT ST_COVERS(poly, poly_inside),
       ST_COVERS(poly, poly),
       ST_COVERS(poly, line_on_boundary),
       ST_COVERS(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);
Copy
+------------------------------+----------------------+----------------------------------+-----------------------------+
| ST_COVERS(POLY, POLY_INSIDE) | ST_COVERS(POLY,POLY) | ST_COVERS(POLY,LINE_ON_BOUNDARY) | ST_COVERS(POLY,LINE_INSIDE) |
|------------------------------+----------------------+----------------------------------+-----------------------------|
| True                         | True                 | True                             | True                        |
+------------------------------+----------------------+----------------------------------+-----------------------------+
Copy