[發明專利]基于移動終端GPS定位數據計算個人通勤時間的方法有效
| 申請號: | 201810191353.2 | 申請日: | 2018-03-08 |
| 公開(公告)號: | CN108596202B | 公開(公告)日: | 2020-04-03 |
| 發明(設計)人: | 周悅芝;藍翔;張迪 | 申請(專利權)人: | 清華大學 |
| 主分類號: | G06K9/62 | 分類號: | G06K9/62;G06Q50/26;G01S19/14 |
| 代理公司: | 北京清亦華知識產權代理事務所(普通合伙) 11201 | 代理人: | 廖元秋 |
| 地址: | 100084*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 移動 終端 gps 定位 數據 計算 個人 通勤 時間 方法 | ||
1.一種基于移動終端GPS定位數據計算個人通勤時間的方法,其特征在于,該方法包括以下步驟:
(1)計算通勤軌跡;
采集一時間段內的任一用戶的定位數據,并使用固定時間窗口的GPS定位數據對用戶某一時刻的定位坐標進行校準,通過聚類算法分別得到用戶家庭位置ch和公司位置cw,并對采集到的用戶坐標按時間進行排序,篩選出用戶在家和公司間通勤中產生的記錄點,得到用戶每日的通勤軌跡;
(2)初始化通勤軌跡聚類集合;
定義任意通勤軌跡聚類如下:<trajectorym,trajectories>,其中trajectories是屬于這個通勤軌跡聚類的所有通勤軌跡集合:trajectories={T},T表示該通勤軌跡聚類包含的用戶的所有通勤軌跡,trajectorym是該通勤軌跡聚類中所有通勤軌跡合并之后的產生的聚合通勤軌跡:trajectorym=<P,D>,其中P是通勤軌跡定位數組,表示用戶所在的位置,D是相鄰兩點間的耗時數組,表示用戶在相鄰兩點移動所花費的時間;
對用戶的每一天的通勤軌跡Ti,按時間順序排列軌跡上的記錄點,每個記錄點包括:用戶標識uid、經度坐標lng、緯度坐標lat和時間戳time;取出軌跡Ti中記錄點包含的經緯度坐標放入對應的通勤軌跡定位數組Pi,并計算出該軌跡中相鄰兩點間的耗時數組Di,用Pi和Di作為Ti的初始的聚合通勤軌跡,得到初始化通勤軌跡聚類Ci:Ci=<<Pi,Di>,{Ti}>,所有的初始化通勤軌跡聚類Ci組成初始化通勤軌跡聚類集合clusters;
通勤軌跡Ti相鄰兩點耗時數組Di計算方法如下:
Di[j]=Ti[j+1].time–Ti[j].time
其中Di[j]表示相鄰兩點耗時數組Di中第j個元素的值,Ti[j]和Ti[j+1]分別表示通勤軌跡Ti上第j和第j+1個記錄點;
(3)對clusters中所包含的通勤軌跡聚類的個數進行判定:如果clusters中所包含的通勤軌跡聚類的個數小于等于1,則聚類過程結束,轉入步驟(8);否則,進入步驟(4);
(4)計算clusters中任意兩個通勤軌跡聚類之間的距離,選取其中距離最小的兩個通勤軌跡聚類記為Ca和Cb,記其距離為Dab并判定:如果Dab大于最大距離閾值dmax,則聚類結束,轉入步驟(8),否則進入步驟(5);
其中,兩個通勤軌跡聚類間的距離為兩個通勤軌跡聚類所對應的聚合通勤軌跡的合并距離;令L(X)表示通勤軌跡X的長度,M表示通勤軌跡A,B合并之后的軌跡,定義兩個通勤軌跡A和B之間的合并距離DM為:DM(A,B)=L(M)/max(L(A),L(B));
(5)在空間上合并距離最小的兩個通勤軌跡聚類對應的聚合通勤軌跡;
對于從步驟(4)得到的距離最小的兩個通勤軌跡聚類Ca和Cb,取出其分別對應的聚合通勤軌跡Ta和Tb,將聚合通勤軌跡Ta和Tb定位數據的經度和緯度提取出來得到定位數組Pa和Pb;首先將用戶家庭位置ch,定位數組Pa中的定位數據,以及公司位置cw插入聚合后的通勤軌跡的定位數組Pm中,然后將Pb的點逐步插入到Pm中去,每次插入都選擇使軌跡長度的增量變化最小的位置,并且每次插入的位置,只會發生在上一次插入的點之后;具體步驟如下:
(5.1)用Pa,用戶家庭位置ch以及用戶公司位置cw初始化合并之后的通勤軌跡定位數組Pm;初始化Pm為空集合,將ch插入Pm中,將軌跡Pa中的的所有記錄點按時間先后順序插入到Pm中,然后將用戶公司位置cw插入Pm中;
(5.2)用pos表示上次將Pb中的記錄點插入Pm后在Pm中的位置,初始化pos為0;
(5.3)對Pb中的每一個記錄點rb,計算其在Pm中pos之后的位置i插入所引起的Pm的總長度增量delta=distance(Pm[i],rb)+distance(rb,Pm[i+1])–distance(Pm[i],Pm[i+1]),找到使delta最小的位置imin,將rb在imin的位置插入Pm,并用imin更新pos;其中distance函數用于計算兩個點之間的地理距離;
(5.4)重復步驟(5.3)直到Pb中的所有點均插入到Pm中;
(5.5)從Pm中移除用戶家庭位置ch以及公司位置cw,返回Pm作為合并之后的通勤軌跡的定位數組,進入步驟(6);
(6)在時間上合并距離最小的兩個通勤軌跡聚類對應的聚合通勤軌跡;
利用步驟(4)得到的距離最小的兩個通勤軌跡聚類Ca和Cb,取出其對應的聚合通勤軌跡Ta和Tb,并分別計算Ta和Tb對應的相鄰兩點耗時數組Da和Db;首先基于Pa和Pb中的記錄點在Pm中的位置,依照通勤軌跡點間距離,將其對應的耗時數組Da和Db按距離進行加權,從而得到按距離加權分配的時間數組Da'以及Db';Da'和Db'分別表示依照用戶在Ta和Tb中的速率,在Pm中相鄰兩點移動的時間;在求得耗時數組Da'和Db'之后,將Da'和Db'合并,得到合并之后通勤軌跡對應的相鄰兩點間的耗時數組Dm;具體步驟如下:
(6.1)初始化Da'為大小是定位數組Pm大小-1,值為0的數組;
(6.2)對Da中的每個時間t,找到其對應的起點rstart和終點rend,并在Pm中找到rstart和rend對應的位置indexstart和indexend;計算Pm中indexstart和indexend之間的所有相鄰定位點之間的距離總和,記為d,將在Da中rstart和rend間的時間依距離加權分到Da'中,形式化為:
Da'[i]=distance(Pm[i],Pm[i+1])/d×t,其中i≥indexstart且i<indexend;
返回Da'作為通勤軌跡Ta按照在合并之后軌跡的定位數組Pm中點與點間的距離加權分配得到的耗時數組;
(6.3)初始化Db'為大小是定位數組Pm大小-1,值為0的數組;
(6.4)對Db中的每個時間t,找到其對應的起點rstart和終點rend,并在Pm中找到rstart和rend對應的位置indexstart和indexend;計算Pm中indexstart和indexend之間的所有相鄰定位點之間的距離總和,記為d,將在Db中rstart和rend間的時間依距離加權分到Db'中,形式化為:
Db'[i]=distance(Pm[i],Pm[i+1])/d×t,其中i≥indexstart且i<indexend;
返回Db'作為通勤軌跡Tb按照在合并之后軌跡的定位數組Pm中點與點間的距離加權分配得到的耗時數組;
(6.5)遍歷Da'和Db',如果Da'和Db'的對應位置均非0,則取兩者對應耗時的均值,否則取Da'和Db'中非零的值作為Pm中對應兩點間的耗時,形式化為:
返回Dm作為合并之后通勤軌跡對應的相鄰兩點間的耗時數組;
(7)合并距離最小的兩個通勤軌跡聚類;
用<Pm,Dm>作為初始化通勤軌跡聚類Cm,并將Ca和Cb里的通勤軌跡加入到Cm中,將Cm插入到clusters中,并從clusters刪除Ca以及Cb,然后重新返回步驟(3);
(8)計算每條通勤軌跡對應的通勤時間;
對用戶每一天的通勤軌跡,找到其所在的通勤軌跡聚類,并將該通勤軌跡聚類包含的聚合通勤軌跡作為用戶當日通勤軌跡所對應的參考軌跡,具體步驟如下:
(8.1)計算每日通勤的平均速度;
從步驟(1)得到的所有通勤軌跡中任意選取某一日的通勤軌跡,令pstart表示用戶當日通勤軌跡上的第一點,該點標志著用戶離開了家,已經開始通勤;令pend表示用戶當日通勤軌跡上的最后一點,該點表示用戶即將到達公司;令tstart和tend分別表示pstart和pend對應的時刻;在該通勤軌跡的參考軌跡中找到用戶pstart和pend兩點,用pstart和pend將參考軌跡分成三段,在pstart之前的記為trajectorystart,在pstart和pend之間的記為trajectorymid,在pend之后的記為trajectoryend;計算trajectorymid的總長度lmid,則用戶當日的通勤的平均速度為vavg=lmid/(tend-tstart);
(8.2)計算每日通勤開始時間和結束時間;
對于步驟(8.1)選取的通勤軌跡,令dhome,lhome分別表示用戶從家出發到通勤軌跡第一個點的耗時和長度,dcomp,lcomp分別表示用戶從通勤軌跡最后一點到公司的耗時和長度,則dhome=lhome/vavg,dcomp=lcomp/vavg;由參考軌跡的耗時數組得到trajectorystart和trajectoryend對應的時間dstart和dend,計算用戶當日通勤開始時刻tleave,通勤結束時刻tarrive:
tleave=tstart–dstart–dhome
tarrive=tend+dend+dcomp
(8.3)計算用戶每日通勤時間dcommute;
由步驟(8.2)得到的通勤開始時間tleave,以及通勤結束時間tarrive,計算用戶當日通勤時間為:
dcommute=tarrive–tleave。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學,未經清華大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810191353.2/1.html,轉載請聲明來源鉆瓜專利網。





