カテゴリ:

地理空間関数

ST_ENVELOPE

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

構文

ST_ENVELOPE( <geography_expression> )

引数

地理式

引数は GEOGRAPHY 型でなければなりません。

戻り値

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

使用上の注意

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

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

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

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

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)) |
+-----------------------------------------------------------------------------------------------------------------------+

次の例では、子午線弧を表す 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) |
+-------------------------------------------------------+

次の例では、赤道ではない緯線上の弧を表す 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)) |
+---------------------------------------------------------------------------------------------------------------------+

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

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)       |
+-----------------------------------+