Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_CrossingPoints

Última atualização: Jul 05, 2026

Retorna cada ponto de amostragem em que uma trajetória cruza o limite de uma área geométrica, ao entrar ou sair dela.

Sintaxe

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

Parâmetros

Parâmetro

Descrição

traj

O objeto de trajetória.

geom

A área geométrica de referência para o teste.

Valores de retorno

Cada ponto de cruzamento é retornado em uma linha separada.

Coluna

Tipo

Descrição

idx

integer

Número sequencial do ponto de amostragem, começando em 0.

inside

bool

Indica se o ponto está dentro da área geométrica.

pnt

trajectory

O ponto de cruzamento como uma trajetória de ponto único, incluindo informações de atributo.

t

timestamp

O timestamp do ponto de cruzamento.

x

double precision

A coordenada x do ponto de cruzamento.

y

double precision

A coordenada y do ponto de cruzamento.

Funcionamento

Um ponto de amostragem é considerado ponto de cruzamento quando a trajetória transita pelo limite da área geométrica:

  • O ponto de amostragem anterior está outside da área e o próximo está inside — a trajetória entra na área.

  • O ponto de amostragem anterior está inside da área e o próximo está outside — a trajetória sai da área.

Exemplo

Selecione todos os pontos de cruzamento de uma trajetória que entra e depois sai de uma área poligonal.

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))'
);

Resultado:

 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)

A trajetória tem 7 pontos de amostragem (índices 0–6). O ponto 3 (inside=t) está nas coordenadas (3, 3) em 2000-01-04. O ponto 4 (inside=f) está nas coordenadas (0, 0) em 2000-01-05.