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

ApsaraDB RDS:ST_MakeBox

最終更新日:Mar 29, 2026

ジオメトリまたはトラジェクトリのバウンディングボックスを返します。必要に応じて、時間範囲で制約できます。

構文

boxndf ST_MakeBox(geometry geom);
boxndf ST_MakeBox(trajectory traj);
boxndf ST_MakeBox(geometry geom, timestamp ts, timestamp te);
boxndf ST_MakeBox(trajectory traj, timestamp ts, timestamp te);
boxndf ST_MakeBox(timestamp ts, timestamp te);

パラメーター

パラメーター説明
geomバウンディングボックスを取得するジオメトリです。
trajバウンディングボックスを取得するトラジェクトリです。
ts時間範囲の開始時刻です。
te時間範囲の終了時刻です。

説明

バウンディングボックスとは、空間・時間情報を含むオブジェクトを完全に包含する最小の多次元矩形です。

関数の動作は、使用するオーバーロードの種類によって異なります。

  • ジオメトリのみST_MakeBox(geometry geom):ジオメトリの次元(2D または 3D)に基づいた空間的なバウンディングボックスを返します。

  • ジオメトリ+時間範囲ST_MakeBox(geometry geom, timestamp ts, timestamp te):指定された時間範囲におけるジオメトリのバウンディングボックスを返します。

  • トラジェクトリのみST_MakeBox(trajectory traj):トラジェクトリ全体のバウンディングボックスを返します。

  • トラジェクトリ+時間範囲ST_MakeBox(trajectory traj, timestamp ts, timestamp te):指定された時間範囲におけるサブトラジェクトリのバウンディングボックスを返します。

  • 時間範囲のみST_MakeBox(timestamp ts, timestamp te):指定された時間範囲に対応するバウンディングボックスを返します。

注: バウンディングボックスには FLOAT データの型が使用されます。返されるボックスは、入力値と厳密には一致せず、若干大きくなる場合があります。つまり、下限値は実際の下限よりわずかに小さく、上限値は実際の上限よりわずかに大きくなることがあります。

ジオメトリのバウンディングボックス

以下の例では、時間範囲を指定する場合と指定しない場合の、ポリゴンのバウンディングボックスをそれぞれ計算しています。

WITH geom AS (
    SELECT (
        'POLYGON((12.7243236691148 4.35238368367118,12.9102992732078 1.49748113937676,' ||
        '12.5926592946053 1.67643963359296,12.0197574747333 3.19258554889152,' ||
        '12.7243236691148 4.35238368367118))'
    )::geometry a
)
SELECT
    -- 空間的なバウンディングボックスのみ(BOX2D)
    ST_MakeBox(a),
    -- 時間範囲を含む空間・時間的バウンディングボックス(BOX2DT)
    ST_MakeBox(a, '2000-01-01 00:00:10'::timestamp, '2000-01-01 02:13:20'::timestamp)
FROM geom;

期待される出力:

                           st_makebox                           |                                                      st_makebox
----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------
 BOX2D(12.0197572708 1.49748110771,12.9102993011 4.35238409042) | BOX2DT(12.0197572708 1.49748110771 2000-01-01 00:00:09.999999,12.9102993011 4.35238409042 2000-01-01 02:13:20.000381)

トラジェクトリのバウンディングボックス

以下の例では、時間範囲を指定する場合と指定しない場合の、トラジェクトリのバウンディングボックスをそれぞれ計算しています。

WITH traj AS (
    SELECT ST_makeTrajectory(
        'STPOINT',
        'LINESTRING(0 0, 50 50, 100 100)'::geometry,
        tsrange('2000-01-01 00:00:00'::timestamp, '2000-01-01 00:01:40'::timestamp),
        '{"leafcount":3,"attributes":{"velocity":{"type":"integer","length":2,"nullable":true,"value":[120,130,140]},"accuracy":{"type":"float","length":4,"nullable":false,"value":[120,130,140]},"bearing":{"type":"float","length":8,"nullable":false,"value":[120,130,140]},"acceleration":{"type":"string","length":20,"nullable":true,"value":["120","130","140"]},"active":{"type":"timestamp","nullable":false,"value":["Fri Jan 01 11:35:00 2010","Fri Jan 01 12:35:00 2010","Fri Jan 01 13:30:00 2010"]}},"events":[{"2":"Fri Jan 02 15:00:00 2010"},{"3":"Fri Jan 02 15:30:00 2010"}]}'
    ) a
)
SELECT
    -- トラジェクトリ全体のバウンディングボックス(BOX2DT)
    ST_MakeBox(a),
    -- 時間範囲内のサブトラジェクトリのバウンディングボックス(BOX2DT)
    ST_MakeBox(a, '1999-12-31 23:00:00'::timestamp, '2000-01-01 00:00:30'::timestamp)
FROM traj;

期待される出力:

                         st_makebox                          |                            st_makebox
-------------------------------------------------------------+------------------------------------------------------------------
 BOX2DT(0 0 2000-01-01 00:00:00,100 100 2000-01-01 00:01:40) | BOX2DT(0 0 2000-01-01 00:00:00,30 30 2000-01-01 00:00:30.000001)