25.1. 什么是轨迹匹配

一:什么是轨迹

所谓的轨迹 是由一系列经纬度点组成的线,这些线连接在一起形成一个轨迹

二:轨迹怎么匹配

我们可以选取一些经纬度点,这些点如果与轨迹点在某一半径范围能重叠,如果重叠的点超过设定的阈值,则认为数据库中的轨迹与这些点匹配相识

三:轨迹匹配与时空碰撞的区别

1:轨迹匹配只考虑位置,不额外考虑时间,速度,方向等地理位置之外的因素

2:时空匹配仅仅是点之间的匹配,估计匹配会考虑两点之间连接的线是否与之匹配.

25.2. 建表示例

CREATE FOREIGN TABLE test_line(
 line float8[] options(store 'idsl'),
 queryscore float8,
 entityId text  OPTIONS(key 'unique'),
 upmode text
 ) SERVER lxdb options(store 'ids');

25.3. 建表示例的字段意义解释

25.4. 轨迹匹配-入库例子

INSERT INTO test_line(line , entityId, upmode) VALUES
(ARRAY[118.83,32.04,118.83,32.05,118.84,32.05,118.83,32.05,118.82,32.06,118.82,32.06,118.82,32.06,118.83,32.07,118.84,32.07],'轨迹0','incr'),
(ARRAY[118.83,32.04,118.83,32.05,118.84,32.05,118.83,32.05,118.82,32.06,118.82,32.06,118.82,32.06,118.83,32.07,118.84,32.07],'轨迹1','incr'),
(ARRAY[118.83,32.04,118.83,32.05,118.84,32.05,118.83,32.05,118.82,32.06,118.82,32.06,118.82,32.06,118.83,32.07,118.84,32.07],'轨迹2','incr'),
(ARRAY[118.83,32.04,118.83,32.05,118.84,32.05,118.83,32.05,118.82,32.06,118.82,32.06,118.82,32.06,118.83,32.07,118.84,32.07],'轨迹3','incr'),
(ARRAY[118.83,32.04,118.83,32.05,118.84,32.05,118.83,32.05,118.82,32.06,118.82,32.06,118.82,32.06,118.83,32.07,118.84,32.07],'轨迹4','incr');

25.5. 入库例子解释

25.6. 查询

select * from test_line where line @> trace(array[
array[118.83,32.04]::float8[],
array[118.89, 32.06]::float8[],
array[118.83,32.05]::float8[],
array[118.82, 32.00]::float8[],
array[118.81, 32.08]::float8[],
array[118.83, 32.07]::float8[],
array[118.86, 32.04]::float8[],
array[118.84, 32.01]::float8[],
array[118.81, 32.04]::float8[],
array[118.88, 32.06]::float8[]]::float8[][],
array[450,1]::float8[]);

25.7. 查询语法的说明

25.8. 追加轨迹路线

INSERT INTO test_line(line, entityId, upmode) VALUES
(ARRAY[118.87, 32.01, 118.89, 32.06],'轨迹1','incr')

25.9. 按照匹配度排序

select line, entityid,queryscore from test_line where line @> trace(array[
array[118.87, 32.01]::float8[],
array[118.89, 32.06]::float8[],
array[118.82, 32.05]::float8[],
array[118.82, 32.01]::float8[],
array[118.81, 32.08]::float8[],
array[118.83, 32.07]::float8[],
array[118.86, 32.04]::float8[],
array[ 118.81, 32.04]::float8[]]
::float8[][],array[800,2]::float8[]) order by queryscore limit 100;

Copyright © luxindb.com 2020 all right reserved修改时间: 2022-12-05 17:26:33

results matching ""

    No results matching ""