カテゴリ:

地理空間関数

ST_ENVELOPE

指定された GEOGRAPHY または GEOMETRY オブジェクトを囲む最小の境界ボックス(長方形の「エンベロープ」)を返します。

構文

ST_ENVELOPE( <geography_or_geometry_expression> )
Copy

引数

geography_or_geometry_expression

引数の型は GEOGRAPHY または GEOMETRY にする必要があります。

戻り値

この関数は、入力オブジェクトの周囲の最小境界ボックスを表す型 GEOGRAPHY または GEOMETRY の値を返します。

使用上の注意

  • GEOGRAPHY オブジェクトで、

    • geography_expression が、子午線弧(経線に沿った弧)を表す LineString の場合、 ST_ENVELOPE はその LineString を返します。

    • geography_expression が、赤道以外の緯線(緯線に沿った弧)上の弧を表す LineString の場合、 ST_ENVELOPE は弧の境界ボックスを表すポリゴンを返します。

    • geography_expression が単一のポイントの場合、 ST_ENVELOPE はそのポイントを返します。

  • GEOMETRY オブジェクトで、

    • 退化する場合(例: 入力がポイント、または垂直線または水平線である場合)、関数はより低い次元のジオメトリ(つまり、ポイントまたは LineString)を返す可能性があります。

    • GEOMETRY オブジェクトの場合、返された GEOMETRY オブジェクトは入力と同じ SRID を持ちます。

GEOGRAPHY 例

次の例では、ポリゴンの最小境界ボックスを返します。

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POLYGON((-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852, -122.306067 37.55412))'
    )
) as minimum_bounding_box_around_polygon;
+-----------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POLYGON                                                                                   |
|-----------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.325879 37.55412,-122.306067 37.55412,-122.306067 37.586852,-122.325879 37.586852,-122.325879 37.55412)) |
+-----------------------------------------------------------------------------------------------------------------------+
Copy

次の例では、子午線弧を表す LineString を渡します。関数は、Polygonではなく同じ LineString を返します。

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801, -122.32328 37.562001)'
    )
) as minimum_bounding_box_around_meridian_arc;
+-------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_MERIDIAN_ARC              |
|-------------------------------------------------------|
| LINESTRING(-122.32328 37.561801,-122.32328 37.562001) |
+-------------------------------------------------------+
Copy

次の例では、赤道ではない緯線上の弧を表す LineString を渡します。この関数は、境界ボックスを表すポリゴンを返します。

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801,-122.32351 37.561801)'
    )
) as minimum_bounding_box_around_arc_along_parallel;
+---------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_ARC_ALONG_PARALLEL                                                                      |
|---------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.32351 37.561801,-122.32328 37.561801,-122.32328 37.561801,-122.32351 37.561801,-122.32351 37.561801)) |
+---------------------------------------------------------------------------------------------------------------------+
Copy

次の例では、単一のポイントを渡します。関数は同じポイントを返します。

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POINT(-122.32328 37.561801)'
    )
) as minimum_bounding_box_around_point;
+-----------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POINT |
|-----------------------------------|
| POINT(-122.32328 37.561801)       |
+-----------------------------------+
Copy

GEOMETRY 例