时空函数中的聚合函数可以将多个点或多条线段聚合为一条线段,即将多个Point或LineString类型的时空对象构造为一个LineString对象。本文介绍Lindorm流引擎支持的时空聚合函数。
ST_MakeLine_Agg
将给定的Point或LineString列,构造为一个LineString对象。
语法
geometry ST_MakeLine_Agg(geometry geom);
参数
参数 | 描述 |
geom | 指定的Geometry列。 |
仅支持Point和LineString类型的列。
当给定多个LineString类型的Geometry对象时,构造过程将删除重复的节点。
当给定Point类型的Geometry对象时,不会删除重复的节点。
该函数按照输入顺序构造线段,不进行排序。
示例
示例一
假设表结构如下,从上往下依次为数据的输入顺序。
id
name
geom
1
A
POINT (0 0)
2
B
POINT (0 1)
3
C
POINT (0 2)
执行以下命令,将geom列构建为LindString对象。
SELECT ST_AsText(ST_MakeLine_Agg(geom));
返回结果:
LINESTRING (0 0, 0 1, 0 2)
示例二
假设表结构如下,从上往下依次为数据的输入顺序。
id
name
geom
1
A
POINT (0 0)
3
C
POINT (0 2)
2
B
POINT (0 1)
执行以下命令,将geom列构建为LineString对象。
SELECT ST_AsText(ST_MakeLine_Agg(geom));
返回结果:
LINESTRING (0 0, 0 2, 0 1)
从示例一和示例二的返回结果可以看出,ST_MakeLine_Agg函数仅按照数据输入顺序构造线段,不进行排序。
ST_MakeLine_Ts_Agg
将给定的Point或LineString列,构造为LineString对象,并按照输入的时间戳(Timestamp)列进行排序。
语法
geometry ST_MakeLine_Ts_Agg(geometry geom, timestamp ts)
参数
参数 | 描述 |
geom | 指定的Geometry列。 |
ts | 指定的Timestamp列。 |
仅支持Point和LineString类型的列。
当给定多个LineString类型的Geometry对象时,构造过程将删除重复的节点。
当给定的Geometry对象为Point类型时,构造过程中不会删除重复的节点。
示例
示例一:
假设表结构如下,从上往下依次为数据的输入顺序。
id
name
ts
geom
1
A
2022-01-01 10:00:00
POINT (0 0)
2
B
2022-01-01 10:00:03
POINT (0 1)
3
C
2022-01-01 10:00:02
POINT (0 2)
执行以下命令,将geom列构建为LineString对象,并按照ts列进行排序。
SELECT ST_AsText(ST_MakeLine_Ts_Agg(geom,ts));
返回结果:
LINESTRING (0 0, 0 2, 0 1)
示例二
假设表结构如下,从上往下依次为数据的输入顺序。
id
name
ts
geom
1
A
2022-01-01 10:00:00
POINT (0 0)
3
C
2022-01-01 10:00:03
POINT (0 2)
2
B
2022-01-01 10:00:02
POINT (0 1)
执行以下命令,将geom列构建为LineString对象,并按照ts列进行排序。
SELECT ST_AsText(ST_MakeLine_Ts_Agg(geom,ts));
返回结果:
LINESTRING (0 0, 0 1, 0 2)