PostgreSQL , PostGIS , 人車拟合
獨立事件相關性分析是一件很有意思的事情,例如
探探軟體的擦肩而過功能點,在不同時空與你擦肩而過的人。
輿情分析。
商品最佳銷售組合。
安全系統中的人車拟合,對時空資料進行處理,用于司機、乘客、車輛的拟合。
1、建立表結構
人
車
2、生成測試資料。
以杭州市為例,經緯度範圍如下:
活躍量假設:
2.1、寫入人的活動位置資料,按天分區,保留一年。
采用時序資料中最常用的brin索引。
建立人+時間的索引。
2.2、寫入車輛的活動位置資料,按天分區,保留一年。
建立車+時間的索引。
3、求某個時間區間的人車拟合
3.1、車輛,行駛過程中抓到的N個點,傳回時間,位置。
傳回對應時間區間的N個點附近的人交集
例子:
3.2、人,運動過程中抓到的N個點,傳回時間,位置。
傳回對應時間區間的N個點附近的車輛的交集
1、存儲、索引優化思路。
時間截斷 + 空間排序 存儲
例如
存儲修整後,建立以上結構的btree或BRIN索引。
當搜尋某個時間點,出現在某個點附近的記錄時,可以并行,并且搜尋的資料塊是比較少的,因為密集存儲。
2、其他需求:缺失位置的補齊。某些情況下,可能導緻車輛、人的位置資訊未采集的情況,例如經過擁堵路段、采集裝置死角等。
在位置擷取出現空缺的情況下,使用pgrouting,以及路網資訊,生成若幹條路徑,補齊為出現的點。同時估算時間,得到點和經過的時間。
3、其他需求:異常位置糾正。
4、拟合性能,以天為分區。1000萬人口,1000萬車輛。人的軌迹數,一天10億。車的軌迹數,一天1億。
可以做到毫秒級别的拟合響應。
<a href="https://github.com/digoal/blog/blob/master/201703/20170331_02.md">《潘金蓮改變了曆史之 - PostgreSQL輿情事件分析應用》</a>
<a href="https://github.com/digoal/blog/blob/master/201704/20170410_02.md">《為什麼啤酒和紙尿褲最搭 - 用HybridDB/PostgreSQL查詢商品營銷最佳組合》</a>