Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_InsertAttr

Última atualização: Jul 05, 2026

Insere um novo atributo em uma trajetória na posição especificada.

Sintaxe

trajectory ST_InsertAttr(trajectory traj, anyarray arr, text name, integer loc default -1);

Valor de retorno

Retorna a trajetória modificada como um valor trajectory, com o novo atributo inserido na posição especificada.

Parâmetros

Parâmetro

Tipo

Padrão

Descrição

traj

trajectory

A trajetória original.

arr

anyarray

Um array de valores para o novo atributo.

name

text

O nome do novo atributo.

loc

integer

-1

Posição de inserção do novo atributo. Valores válidos: [-n, n], onde n é o número de atributos existentes. Se omitido, o sistema anexa o atributo após o último atributo existente (equivalente a loc = -1).

Observações de uso

  • **Índice positivo (de 0 a n)**: Contagem a partir da esquerda. O valor 0 insere antes do primeiro atributo; n insere após o n-ésimo atributo à esquerda.

  • **Índice negativo (de -1 a -n)**: Contagem a partir da direita. O valor -1 anexa após o último atributo; -n insere após o atributo mais à esquerda.

Exemplos

Anexar um atributo ao final (comportamento padrão)

Omitir loc equivale a loc = -1 e anexa o novo atributo após todos os existentes.

With traj as (select ST_MakeTrajectory('STPOINT'::leaftype,
                                       st_geomfromtext('LINESTRING (114 35, 115 36, 116 37)', 4326),
                                       '[2010-01-01 14:30, 2010-01-01 15:30)'::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 14:30:00 2010", "Fri Jan 01 15:00:00 2010", "Fri Jan 01 15:30:00 2010"]}}}') as tj)
SELECT ST_InsertAttr(tj, ARRAY[1, 4, 6], 'add') from traj;

Inserir um atributo após o terceiro atributo à esquerda

With traj as (select ST_MakeTrajectory('STPOINT'::leaftype,
                                       st_geomfromtext('LINESTRING (114 35, 115 36, 116 37)', 4326),
                                       '[2010-01-01 14:30, 2010-01-01 15:30)'::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 14:30:00 2010", "Fri Jan 01 15:00:00 2010", "Fri Jan 01 15:30:00 2010"]}}}') as tj)
SELECT ST_InsertAttr(tj, ARRAY[1, 4, 6], 'add', 3) from traj;

Resultado:

{"trajectory":{"version":1,"type":"STPOINT","leafcount":3,"start_time":"2010-01-01 14:30:00","end_time":"2010-01-01 15:30:00","spatial":"SRID=4326;LINESTRING(114 35,115 36,116 37)","timeline":["2010-01-01 14:30:00","2010-01-01 15:00:00","2010-01-01 15:30:00"],"attributes":{"leafcount":3,"velocity":{"type":"integer","length":2,"nullable":true,"value":[120,130,140]},"accuracy":{"type":"float","length":4,"nullable":false,"value":[120.0,130.0,140.0]},"bearing":{"type":"float","length":8,"nullable":false,"value":[120.0,130.0,140.0]},"add":{"type":"integer","length":4,"nullable":true,"value":[1,4,6]},"acceleration":{"type":"string","length":20,"nullable":true,"value":["120","130","140"]},"active":{"type":"timestamp","length":8,"nullable":false,"value":["2010-01-01 14:30:00","2010-01-01 15:00:00","2010-01-01 15:30:00"]}}}}

Inserir um atributo antes do primeiro atributo

Use loc = 0 para posicionar o novo atributo antes de todos os existentes.

With traj as (select ST_MakeTrajectory('STPOINT'::leaftype,
                                       st_geomfromtext('LINESTRING (114 35, 115 36, 116 37)', 4326),
                                       '[2010-01-01 14:30, 2010-01-01 15:30)'::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 14:30:00 2010", "Fri Jan 01 15:00:00 2010", "Fri Jan 01 15:30:00 2010"]}}}') as tj)
SELECT ST_InsertAttr(tj, ARRAY[1, 4, 6], 'add', 0) from traj;

Próximos passos

  • ST_AppendAttr: Anexa um atributo ao final de uma trajetória.

  • ST_SetAttr: Atualiza os valores de um atributo existente na trajetória.

  • ST_DeleteAttr: Remove um atributo de uma trajetória.