【问题标题】:How to detect deviation in path between coordinates set如何检测坐标集之间的路径偏差
【发布时间】:2018-12-17 14:39:25
【问题描述】:

我有从相似来源到相似目的地的各种车辆的坐标数据(纬度,经度)。

在某些情况下,这些车辆在从源头到目的地时不遵循常规路径。我试图找到那些与标准路径发生变化的坐标集。

我有纬度、经度和时间。我必须分析路径的变化并检测路径变化的位置。我有大量数据,所以我正在尝试找到一种最佳方法。

我对 hausdorff 距离和 Jackardd 相似度有所了解。但我正试图获得更有效的方式,因为我的数据集接近 1TB。 此外,如果有任何简单的方法可以使用 PostGis 做到这一点。请提出建议。

【问题讨论】:

    标签: geolocation coordinates postgis qgis


    【解决方案1】:

    对于指定的数据量,恐怕 QGIS 不是一个合适的选择。如果您决定使用 PostGIS,则必须牢记源数据的 GPS 精度。我的意思是,即使您两次走完全相同的路线,也不一定会得到两个相同的脚印。

    但是,在将您的数据上传到 PostGIS 时,我首先要考虑的是简化 (st_simplify()) 以消除不必要的顶点,从而提高进一步的计算速度。

    接下来,我将使用st_buffer() 将路线包装到缓冲区中,以在可接受的范围内容忍 GPS 数据偏差。

    之后,结合st_intersection()st_area(),我将根据两个缓冲区的公共区域来衡量两条路线的可能性。

    因此,对于三个示例路线

    非常基本的查询

    select st_area(st_intersection(st_buffer(r1.geom,0.001),st_buffer(r2.geom, 0.001)))/st_area(st_buffer(r1.geom, 0.001)) as "blue2red", 
        st_area(st_intersection(st_buffer(r1.geom,0.001),st_buffer(r3.geom, 0.001)))/st_area(st_buffer(r1.geom, 0.001)) as "yellow2red",
        st_area(st_intersection(st_buffer(r2.geom,0.001),st_buffer(r3.geom, 0.001)))/st_area(st_buffer(r2.geom, 0.001)) as "blue2yellow"
    from route r1
    join route r2
    on r2.name='blue'
    join route r3
    on r3.name='yellow'
    where r1.name='red'
    

    返回

    blue2red    yellow2red  blue2yellow
    0.495408079 0.641252527 0.688753036
    

    我想,这看起来像是要开始的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 2012-10-05
      • 2019-11-22
      • 2014-09-06
      • 2017-02-06
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多