Tous les produits
Search
Centre de documentation

ApsaraDB RDS:ST_CrossingPoints

Dernière mise à jour :Oct 10, 2026

Renvoie chaque point d'échantillonnage où une trajectoire traverse la limite d'une zone géométrique, lors de l'entrée ou de la sortie.

Syntaxe

TABLE(idx integer, inside bool, pnt trajectory, t timestamp, x double precision, y double precision) ST_CrossingPoints(trajectory traj, geometry geom)

Paramètres

Paramètre Description
traj L'objet de trajectoire.
geom La zone géométrique de référence.

Valeurs renvoyées

Chaque point d'intersection est renvoyé sous forme de ligne distincte.

Colonne Type Description
idx integer Le numéro de séquence du point d'échantillonnage, à partir de 0.
inside bool Indique si le point se trouve à l'intérieur de la zone géométrique.
pnt trajectory Le point d'intersection sous forme de trajectoire mono-point, incluant les informations d'attribut.
t timestamp L'horodatage du point d'intersection.
x double precision La coordonnée x du point d'intersection.
y double precision La coordonnée y du point d'intersection.

Fonctionnement

Un point d'échantillonnage est un point d'intersection lorsque la trajectoire traverse la limite de la zone géométrique :

  • Le point d'échantillonnage précédent se trouve outside de la zone et le point suivant se trouve inside — la trajectoire entre dans la zone.

  • Le point d'échantillonnage précédent se trouve inside de la zone et le point suivant se trouve outside — la trajectoire sort de la zone.

Exemple

Recherchez tous les points d'intersection d'une trajectoire qui entre puis sort d'une zone polygonale.

SELECT * FROM ST_CrossingPoints(
  '{"trajectory":{"version":1,"type":"STPOINT","leafcount":7,"start_time":"2000-01-01 00:00:00","end_time":"2000-01-07 00:00:00","spatial":"LINESTRING(0 0,2 1,0 0,3 3,0 0,1 4,0 0)","timeline":["2000-01-01 00:00:00","2000-01-02 00:00:00","2000-01-03 00:00:00","2000-01-04 00:00:00","2000-01-05 00:00:00","2000-01-06 00:00:00","2000-01-07 00:00:00"]}}',
  'POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))'
);

Résultat :

 idx | inside |                                                                                            pnt                                                                                            |          t          | x | y
-----+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---+---
   3 | t      | {"trajectory":{"version":1,"type":"STPOINT","leafcount":1,"start_time":"2000-01-04 00:00:00","end_time":"2000-01-04 00:00:00","spatial":"POINT(3 3)","timeline":["2000-01-04 00:00:00"]}} | 2000-01-04 00:00:00 | 3 | 3
   4 | f      | {"trajectory":{"version":1,"type":"STPOINT","leafcount":1,"start_time":"2000-01-05 00:00:00","end_time":"2000-01-05 00:00:00","spatial":"POINT(0 0)","timeline":["2000-01-05 00:00:00"]}} | 2000-01-05 00:00:00 | 0 | 0
(2 rows)

La trajectoire comporte 7 points d'échantillonnage (indices 0–6). Le point 3 (inside=t) se situe aux coordonnées (3, 3) le 2000-01-04. Le point 4 (inside=f) se situe aux coordonnées (0, 0) le 2000-01-05.