Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_{T|2D|2DT|3D|3DT}Contains

Última atualização: Sep 01, 2026

Retorna true se o primeiro argumento contiver o segundo no eixo especificado.

Sintaxe

bool ST_TContains(tsrange r, trajectory traj);
bool ST_TContains(trajectory traj, tsrange r);
bool ST_2DContains(geometry geom, trajectory traj);
bool ST_2DContains(trajectory traj, geometry geom);
bool ST_2DContains(geometry geom, trajectory traj, timestamp ts, timestamp te);
bool ST_2DContains(trajectory traj, geometry geom, timestamp ts, timestamp te);
bool ST_{2D|2DT|3D|3DT}Contains(boxndf box, trajectory traj);
bool ST_{2D|2DT|3D|3DT}Contains(boxndf box, trajectory traj, timestamp ts, timestamp te);

Variantes

Cada variante da função verifica a contenção em um conjunto diferente de eixos:

Variante

Eixos verificados

Primeiro argumento

Segundo argumento

ST_TContains

Tempo (T)

tsrange ou trajectory

trajectory ou tsrange

ST_2DContains

Espaço 2D (X, Y)

geometry ou trajectory

trajectory ou geometry

ST_2DTContains

Espaço 2D + tempo (X, Y, T)

boxndf

trajectory

ST_3DContains

Espaço 3D (X, Y, Z)

boxndf

trajectory

ST_3DTContains

Espaço 3D + tempo (X, Y, Z, T)

boxndf

trajectory

Parâmetros

Parâmetro

Descrição

geom

Geometria para comparação.

traj

Trajetória para comparação ou trajetória source da qual se extrai uma subtrajetória.

box

Bounding box para comparação.

r

Intervalo de tempo da consulta.

ts

Início do intervalo de tempo para extração da subtrajetória. Opcional.

te

Fim do intervalo de tempo para extração da subtrajetória. Opcional.

Descrição

A função ST_{T|2D|2DT|3D|3DT}Contains verifica se o primeiro argumento contém o segundo no eixo especificado.

Variante de intervalo de tempo (ST_TContains): Verifica se o intervalo de tempo ou a trajetória contém o outro argumento no eixo temporal.

Variante de geometria (ST_2DContains): Compara as projeções bidimensionais de trajetórias completas ou subtrajetórias em um intervalo de tempo especificado. Retorna true se a geometria contiver ou for contida pelo outro argumento.

Variantes de bounding box (ST_2DTContains, ST_3DContains, ST_3DTContains): Verificam se uma trajetória (ou sua subtrajetória em um intervalo de tempo especificado) está inteiramente dentro da bounding box em todas as dimensões especificadas. Se a bounding box, a trajetória ou a subtrajetória não possuir determinada dimensão, o sistema considera que essa dimensão aceita qualquer valor e satisfaz automaticamente a condição de contenção.

Tipos de geometria como POLYHEDRALSURFACE e similares não têm suporte.

Exemplos

Os exemplos a seguir usam uma CTE comum para criar uma trajetória e uma bounding box 3D e testar cada variante em três intervalos de tempo.

Configuração:

WITH traj AS (
    SELECT
        ST_makeTrajectory(
            'STPOINT',
            'LINESTRING(0 0, 50 50, 100 100)'::geometry,
            ('[' || ST_PGEpochToTS(0) || ',' || ST_PGEpochToTS(100) || ')')::tsrange,
            '{"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"}]}'
        ) AS b,
        ST_MakeBox3dt(0,0,0,ST_PgEpochToTS(0), 50,50,50,ST_PgEpochToTS(49)) AS a
)

A bounding box a abrange as coordenadas [0–50, 0–50, 0–50] e o tempo [0–49]. A trajetória b vai de (0,0) a (100,100) durante o intervalo [0–100].

Intervalo de tempo [0, 49] — a subtrajetória permanece dentro da bounding box:

SELECT
    ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
    ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
    ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
    ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49))
FROM traj;

st_2dcontains

st_3dcontains

st_2dtcontains

st_3dtcontains

t

t

t

t

Todas as variantes retornam true: a subtrajetória do tempo 0 ao 49 está dentro da bounding box em todos os eixos.

Intervalo de tempo [0, 50] — a subtrajetória atinge o limite da bounding box no eixo temporal:

SELECT
    ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
    ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
    ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
    ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50))
FROM traj;

st_2dcontains

st_3dcontains

st_2dtcontains

st_3dtcontains

t

t

f

f

As funções ST_2DContains e ST_3DContains retornam true porque não verificam o eixo temporal; a projeção espacial da subtrajetória ainda cabe na bounding box. Já ST_2DTContains e ST_3DTContains retornam false pois o tempo 50 ultrapassa o limite temporal da bounding box, que é 49.

Intervalo de tempo [0, 70] — a subtrajetória excede a bounding box nos eixos espaciais e temporais:

SELECT
    ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
    ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
    ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
    ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70))
FROM traj;

st_2dcontains

st_3dcontains

st_2dtcontains

st_3dtcontains

f

f

f

f

Todas as variantes retornam false: no tempo 70, a trajetória já se moveu para as coordenadas (70, 70), o que excede o limite espacial da bounding box de 50.