Ganos Trajectory提供了一系列的轨迹编辑函数。在此之外,也可以通过自定义的规则处理轨迹的点,更加灵活。
场景示例
某用户的每个设备上有三个传感器,分别为1,2,3,传感器汇报位置时会附加一个可信度属性。则可以自定义轨迹编辑函数,实现如下功能:
- 从一条轨迹中过滤出所有可信度大于某值的点,返回其组成的轨迹。
CREATE FUNCTION UDF_validityGreaterThan(traj trajectory, threshold float8) RETURNS trajectory AS ' SELECT ST_MakeTrajectory(array_agg(ROW(traj_table.*))) FROM ( SELECT * from ST_AsTable(traj) as f(t timestamp, x double precision, y double precision, sampler int, validity double precision) ) traj_table WHERE validity > threshold ' LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
- 从一条轨迹中过滤出特定传感器汇报的所有点,返回其组成的轨迹。
CREATE FUNCTION UDF_SamplerIs(traj trajectory, int sampler_num) RETURNS trajectory AS ' SELECT ST_MakeTrajectory(array_agg(ROW(traj_table.*))) FROM ( SELECT * from ST_AsTable(traj) as f(t timestamp, x double precision, y double precision, sampler int, validity double precision) ) traj_table WHERE sampler = sampler_num ' LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
说明 PARALLEL SAFE标签部分版本可能不支持,如有提示,请删除。