All Products
Search
Document Center

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

Last Updated:Mar 28, 2026

Returns true if the first argument is entirely contained within the second argument on the specified axis. This function works in the same way as the ST_ndContains function.

Syntax

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

Parameters

ParameterDescription
geomThe geometry to compare.
trajThe trajectory to compare, or the source trajectory from which sub-trajectories are extracted.
boxThe bounding box to compare.
rThe time range to compare.
tsThe start of the time range for sub-trajectory extraction. Optional.
teThe end of the time range for sub-trajectory extraction. Optional.

Description

The function family covers three axes:

  • ST_TWithin — checks containment on the time axis (temporal only).

  • ST_2DWithin — checks containment in 2D space (X/Y), optionally restricted to a time window [ts, te].

  • ST_{2DT|3D|3DT}Within — checks containment in 2D space + time, 3D space, or 3D space + time, using a boxndf bounding box, optionally restricted to a time window.

When ts and te are provided, the function evaluates only the sub-trajectory within that time window rather than the full trajectory.

Note

This function is not supported for geometry types such as POLYHEDRALSURFACE.

Example

The following example checks whether a geometry (b) is within a trajectory (a) in 2D space.

WITH traj AS(
    SELECT (' {"trajectory":{"version":1,"type":"STPOINT","leafcount":6,"start_time":"2000-01-01 03:15:42","end_time":"2000-01-01 05:16:43",' ||
            '"spatial":"LINESTRING(2 2 0,33.042158099636 36.832684322819 0,47.244002354518 47.230026333034 0,64.978971942887 60.618813472986 0,77.621717839502 78.012496630661 0,80 78 0)",' ||
            '"timeline":["2000-01-01 03:15:42","2000-01-01 03:39:54","2000-01-01 04:04:06","2000-01-01 04:28:18","2000-01-01 04:52:31","2000-01-01 05:16:43"]}}')::trajectory a,
           'LINESTRING(2 2 0,33.042158099636 36.832684322819 0,47.244002354518 47.230026333034 0,64.978971942887 60.618813472986 0,77.621717839502 78.012496630661 0,80 78 0)'::geometry b
)
SELECT ST_2dWithin(b,a) from traj;
 st_2dwithin
-------------
 t

The result t (true) confirms that b is within a in 2D space.