对于指定的数据量,恐怕 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
我想,这看起来像是要开始的事情。