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标签部分版本可能不支持,如有提示,请删除。