本公開(kāi)涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種人與人相遇的確定方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,人們交友的方式也越來(lái)越多樣。例如,用戶的移動(dòng)設(shè)備上安裝的應(yīng)用可以向用戶推薦好友,由用戶自己選擇是否與所推薦的好友進(jìn)行互動(dòng)。應(yīng)用推薦好友的方式,例如可以是根據(jù)用戶當(dāng)前定位的位置查找周圍的用戶。但是這種方式一般是發(fā)現(xiàn)用戶在一個(gè)固定點(diǎn)時(shí)的周圍好友,推薦方式比較單一。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本公開(kāi)提供一種人與人相遇的確定方法和裝置,以發(fā)現(xiàn)人們?cè)诼吠局杏龅竭^(guò)的好友,進(jìn)而豐富好友的發(fā)現(xiàn)方式。
具體地,本公開(kāi)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
第一方面,提供一種人與人相遇的確定方法,所述方法包括:
獲取第一用戶的行進(jìn)路線上包括的至少一個(gè)位置點(diǎn),所述位置點(diǎn)的位置信息包括第一用戶行進(jìn)至此的時(shí)間以及位置坐標(biāo);
分別對(duì)每一個(gè)位置點(diǎn),確定與所述位置點(diǎn)的時(shí)間差值和位置坐標(biāo)差值在預(yù)定范圍內(nèi)的其他位置點(diǎn);
將所述其他位置點(diǎn)對(duì)應(yīng)的第二用戶,作為所述第一用戶在行進(jìn)路線上遇到的人,并將所述第一用戶作為所述第二用戶遇到的人。
第二方面,提供一種人與人相遇的確定裝置,所述裝置包括:
位置獲取模塊,用于獲取第一用戶的行進(jìn)路線上包括的至少一個(gè)位置點(diǎn),所述位置點(diǎn)的位置信息包括第一用戶行進(jìn)至此的時(shí)間以及位置坐標(biāo);
比較處理模塊,用于分別對(duì)每一個(gè)位置點(diǎn),確定與所述位置點(diǎn)的時(shí)間差值和位置坐標(biāo)差值在預(yù)定范圍內(nèi)的其他位置點(diǎn);
相遇確定模塊,用于將所述其他位置點(diǎn)對(duì)應(yīng)的第二用戶,作為所述第一用戶在行進(jìn)路線上遇到的人,并將所述第一用戶作為所述第二用戶遇到的人。
本公開(kāi)的人與人相遇的確定方法和裝置,通過(guò)對(duì)不同用戶的行進(jìn)路線上的位置點(diǎn)進(jìn)行比較,可以發(fā)現(xiàn)時(shí)間和空間相距較近的位置點(diǎn),從而能夠發(fā)現(xiàn)人們?cè)诼吠局杏龅竭^(guò)的好友,進(jìn)而豐富好友的發(fā)現(xiàn)方式。
附圖說(shuō)明
圖1是本公開(kāi)實(shí)施例提供的一種人與人路途相遇的場(chǎng)景示意圖;
圖2是本公開(kāi)實(shí)施例提供的一種人與人相遇的確定方法的流程圖;
圖3是本公開(kāi)實(shí)施例提供的一種人與人相遇的確定裝置的結(jié)構(gòu)示意圖;
圖4是本公開(kāi)實(shí)施例提供的一種人與人相遇的確定裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
大多數(shù)人每天都有一定的活動(dòng)路線,例如,由家中去公司的路線,或者由公司去客戶場(chǎng)所的路線,或者帶孩子去家附近的公園的路線等,這些路線都可以稱為行進(jìn)路線。用戶在行進(jìn)路線上的移動(dòng),也可以有多種方式,例如,步行,或者乘坐公交車,或者騎電動(dòng)車,或者開(kāi)私家車等。當(dāng)用戶在行進(jìn)路線上移動(dòng)時(shí),可能會(huì)遇到很多人,比如,當(dāng)在人行道上步行前往公園時(shí),可能遇到迎面走來(lái)的剛從公園走出的一家人;或者當(dāng)騎電動(dòng)車向公司方向行駛時(shí),可能會(huì)遇到同向行駛超過(guò)去的也去往同一方向的人,這些場(chǎng)景都可以稱作是人與人之間的相遇。如果能確定出兩個(gè)人是否相遇過(guò),就可以加以應(yīng)用,例如,可以將行進(jìn)路線中遇到過(guò)的人作為推薦的好友,從而使得陌生人交友的方式更加豐富;當(dāng)然,也可以將確定兩個(gè)人是否相遇的結(jié)果應(yīng)用于其他的場(chǎng)景。
本公開(kāi)提供的人與人相遇的確定方法,即用于計(jì)算兩個(gè)人是否相遇過(guò)。參見(jiàn)圖1所示的一個(gè)示例性的場(chǎng)景,用戶a由a1地點(diǎn)去往a2地點(diǎn),行進(jìn)路線是l1,用戶b由b1地點(diǎn)去往b2地點(diǎn),行進(jìn)路線是l2,并且這兩個(gè)行進(jìn)路線有一個(gè)相遇點(diǎn)。如圖1所示,用戶a和用戶b兩人都有智能手機(jī),且手機(jī)上都安裝了一個(gè)應(yīng)用app,該應(yīng)用相當(dāng)于本公開(kāi)例子中的客戶端,例如,用戶a的手機(jī)上安裝客戶端k1,用戶b的手機(jī)上安裝客戶端k2。在用戶行進(jìn)的路途中,客戶端可以對(duì)用戶進(jìn)行定位,獲取用戶的位置信息,并將信息上報(bào)至服務(wù)端11。
客戶端對(duì)用戶的定位,主要是獲取用戶行進(jìn)中的經(jīng)緯度坐標(biāo),還可以獲取用戶行進(jìn)中的時(shí)間。例如,客戶端可以每隔幾分鐘上報(bào)一次,圖1中示例了,用戶a在行進(jìn)路線l1的過(guò)程中,可以上報(bào)了七個(gè)位置點(diǎn)12,用戶b在行進(jìn)路線l2的過(guò)程中,可以上報(bào)了五個(gè)位置點(diǎn)13。每一個(gè)位置點(diǎn)的位置信息可以包括用戶行進(jìn)至此的時(shí)間(比如,年月日時(shí)分秒),以及該位置點(diǎn)處的經(jīng)緯度坐標(biāo)。這些信息都將被服務(wù)端11接收并存儲(chǔ)。
其中,客戶端對(duì)用戶進(jìn)行定位時(shí),如果客戶端在用戶的智能手機(jī)上處于運(yùn)行打開(kāi)狀態(tài),則可以利用智能手機(jī)的定位方式獲取經(jīng)緯度坐標(biāo)。如果客戶端在用戶的智能手機(jī)上退回到后臺(tái),那么可以根據(jù)智能手機(jī)的不同操作系統(tǒng),采取不同的定位方式。例如,如果手機(jī)操作系統(tǒng)是android,android可以啟動(dòng)service,通過(guò)基站定位,來(lái)獲取用戶的經(jīng)緯度坐標(biāo),這樣可以省電。如果手機(jī)操作系統(tǒng)是ios,ios可以開(kāi)啟后臺(tái)位置定位,利用基站和gps結(jié)合進(jìn)行定位,并且可以調(diào)低gps定位的精度,還可以在用戶移動(dòng)距離超過(guò)50m的時(shí)候才上報(bào)服務(wù)端。上述的客戶端定位方式可以省電,應(yīng)用上述方式客戶端可以向服務(wù)端上報(bào)用戶移動(dòng)過(guò)程中的位置信息,且可以是每隔一段時(shí)間進(jìn)行上報(bào)。
服務(wù)端11可以根據(jù)接收到的這些位置信息,確定用戶的行進(jìn)路線,例如,當(dāng)服務(wù)端接收到上述的用戶a的七個(gè)位置點(diǎn)12的位置信息后,可以確定出用戶a走的是行進(jìn)路線l1;或者根據(jù)用戶b上報(bào)的位置點(diǎn)確定行進(jìn)路線l2。
例如,服務(wù)端可以根據(jù)所述多個(gè)位置信息,結(jié)合地圖路線,或者結(jié)合用戶的行進(jìn)速度,確定用戶的行進(jìn)路線。舉例來(lái)說(shuō),假設(shè)服務(wù)端接收到了用戶a的客戶端上報(bào)的七個(gè)位置點(diǎn)12,系統(tǒng)可以結(jié)合地圖路線,將上述七個(gè)位置點(diǎn)放到地圖的路徑中,尋找能匹配上的道路。一條道路中,能符合的點(diǎn)越多,即位于道路上的位置點(diǎn)越多,就表示這條道路越符合預(yù)期,這條道路越匹配所述的位置點(diǎn)。例如,圖1中的路線l1恰好是地圖中的某條街道,上述七個(gè)位置點(diǎn)12也正好位于這條街道上,那可以將該街道中對(duì)應(yīng)地點(diǎn)a1至a2之間的路線確定為行進(jìn)路線。但只有一條道路符合預(yù)期時(shí),就把不在道路上的點(diǎn)標(biāo)記為誤差信息,后續(xù)計(jì)算不納入統(tǒng)計(jì),并且服務(wù)端可以對(duì)這部分誤差信息進(jìn)行糾錯(cuò),糾正為位于道路上的位置點(diǎn),相應(yīng)的將客戶端上傳的原來(lái)誤差的位置信息修改為行進(jìn)路線上的位置信息。
當(dāng)有兩條或者多條道路符合的點(diǎn)數(shù)量一樣時(shí),可以加入速度做參考。例如,在進(jìn)行道路選擇的時(shí)候,可能同時(shí)有多條匹配位置信息的道路,這時(shí)可以根據(jù)用戶行進(jìn)的速度來(lái)做最佳道路選擇,將匹配用戶行進(jìn)速度的道路作為用戶的行進(jìn)路線。比如,根據(jù)地圖上的路線來(lái)看,如果將用戶a上報(bào)的七個(gè)位置點(diǎn)12連接起來(lái),可能會(huì)有多條路徑能夠連接,包括機(jī)動(dòng)車道、非機(jī)動(dòng)車道,這種情況下可以根據(jù)用戶的速度輔助判定。客戶端在上報(bào)位置信息的時(shí)候,還能獲取到當(dāng)前設(shè)備移動(dòng)的速度,并將速度一并上報(bào)至服務(wù)端,或者服務(wù)端也可以根據(jù)兩個(gè)位置點(diǎn)的經(jīng)緯度坐標(biāo)以及時(shí)間,計(jì)算出用戶的移動(dòng)速度。根據(jù)用戶移動(dòng)的速度,就可以確定用戶是在步行,還是在汽車上,還是在自行車上,從而可以選擇最符合實(shí)際情況的路線,比如是步行道,還是非機(jī)動(dòng)車道,或者是機(jī)動(dòng)車道。
在上述提到的服務(wù)端還可以根據(jù)確定的行進(jìn)路線進(jìn)行位置信息的糾錯(cuò)時(shí),比如,服務(wù)端接收到的位置信息對(duì)應(yīng)的位置點(diǎn)是w1,但是根據(jù)多個(gè)位置信息以及上述的速度和地圖路線等因素確定行進(jìn)路線后,發(fā)現(xiàn)原來(lái)的位置點(diǎn)w1并不在該行進(jìn)路線上,則可能是客戶端上報(bào)時(shí)發(fā)生了偏差,服務(wù)端可以根據(jù)新確定的行進(jìn)路線對(duì)位置點(diǎn)w1進(jìn)行糾錯(cuò),確定位于行進(jìn)路線上的新位置點(diǎn)w2,記錄該新位置點(diǎn)w2的位置信息,相對(duì)于w1,主要是經(jīng)緯度坐標(biāo)進(jìn)行糾偏。
當(dāng)服務(wù)端確定了各個(gè)用戶的行進(jìn)路線以及該路線上的位置點(diǎn)后,可以在后續(xù)的處理中根據(jù)這些信息來(lái)判斷是否存在相遇過(guò)的人。圖2示例了一個(gè)例子中的人與人相遇的確定方法的流程,該方法可以由服務(wù)端執(zhí)行,可以包括:
在步驟201中,獲取第一用戶的行進(jìn)路線上包括的至少一個(gè)位置點(diǎn),所述位置點(diǎn)的位置信息包括第一用戶行進(jìn)至此的時(shí)間以及位置坐標(biāo)。
例如,本步驟中,服務(wù)端可以由數(shù)據(jù)庫(kù)中取出用戶a的一條行進(jìn)路線,可以是圖1中示例的行進(jìn)路線l1,并獲取該路線上的至少一個(gè)位置點(diǎn)12,這些位置點(diǎn)可以是服務(wù)端對(duì)用戶a的客戶端上報(bào)的位置信息進(jìn)行糾錯(cuò)后對(duì)應(yīng)的地點(diǎn),服務(wù)端在數(shù)據(jù)庫(kù)中存儲(chǔ)的都是糾錯(cuò)后的數(shù)據(jù),在客戶端上傳定位的位置點(diǎn)后,服務(wù)端可以定時(shí)進(jìn)行糾錯(cuò),糾錯(cuò)后再存入到數(shù)據(jù)庫(kù)中。
在步驟202中,分別對(duì)每一個(gè)位置點(diǎn),確定與所述位置點(diǎn)的時(shí)間差值和位置坐標(biāo)差值在預(yù)定范圍內(nèi)的其他位置點(diǎn)。
本步驟主要是將步驟201獲取的各個(gè)位置點(diǎn)與其他人的位置點(diǎn)進(jìn)行比較,如果兩個(gè)人在較短的時(shí)間內(nèi)都經(jīng)過(guò)相離較近的兩個(gè)地點(diǎn),則這兩個(gè)人相遇,比如圖1中所示例,在兩個(gè)人實(shí)際相遇的位置可能并沒(méi)有上報(bào)位置信息,而附近的兩個(gè)位置點(diǎn)的時(shí)間相差3秒,距離相差5米,那可以確定這兩個(gè)人相遇。
是否相遇的判斷,要進(jìn)行時(shí)間和經(jīng)緯度坐標(biāo)兩個(gè)方面的比較。例如,為了提高比較的效率,服務(wù)端可以將位置點(diǎn)對(duì)應(yīng)的時(shí)間,轉(zhuǎn)換為統(tǒng)一度量時(shí)間,比如將年月日,時(shí)分秒,一起換算成秒。還可以將位置點(diǎn)對(duì)應(yīng)的位置坐標(biāo),通過(guò)geohash算法編碼為一維字符串。使用geohash算法具有很多優(yōu)點(diǎn),比如,可以利用一個(gè)字段存儲(chǔ)經(jīng)緯度,搜索時(shí),只需一條索引,效率較高;編碼的前綴可以表示更大的區(qū)域,查找一個(gè)位置點(diǎn)附近的其他位置點(diǎn),非常方便;還可以通過(guò)編碼精度進(jìn)行模糊坐標(biāo)、隱私保護(hù)等。geohash算法可以采用常規(guī)處理方式,不再詳述。經(jīng)過(guò)上述換算后,再進(jìn)行時(shí)間和位置的比較就會(huì)更加方便和快速。
此外,整個(gè)地圖的范圍是很大的,比如,北京市包括海淀區(qū)、朝陽(yáng)區(qū)等多個(gè)區(qū)域,即使分別位于海淀區(qū)和朝陽(yáng)區(qū)的兩個(gè)用戶在同一時(shí)間都在行進(jìn)中,也沒(méi)有必要去對(duì)這兩個(gè)用戶進(jìn)行坐標(biāo)的比較,相隔這么遠(yuǎn)的用戶是不會(huì)相遇的。因此,為了縮小比較的區(qū)域范圍,也提高比較處理的效率,可以將地圖進(jìn)行切片,所述的切片可以是將地圖上的區(qū)域分成多個(gè)塊,每一個(gè)塊可以稱為一個(gè)切片區(qū)域。在比較處理時(shí),對(duì)于一個(gè)位置點(diǎn),可以在所述位置點(diǎn)所在的地圖切片區(qū)域內(nèi)獲取其他位置點(diǎn),不用查找其他切片區(qū)域內(nèi)的點(diǎn),將獲取到的其他位置點(diǎn)和當(dāng)前位置點(diǎn)進(jìn)行一維字符串和統(tǒng)一度量時(shí)間的比較,得到時(shí)間差值和位置坐標(biāo)差值在預(yù)定范圍內(nèi)的其他位置點(diǎn)(該其他位置點(diǎn)是其他用戶的位置點(diǎn)),這些其他位置點(diǎn)即為用戶相遇過(guò)的人。
在步驟203中,將所述其他位置點(diǎn)對(duì)應(yīng)的第二用戶,作為所述第一用戶在行進(jìn)路線上遇到的人,并將所述第一用戶作為所述第二用戶遇到的人。
例如,假設(shè)經(jīng)過(guò)步驟202中的比較處理,發(fā)現(xiàn)用戶a和用戶b的其中兩個(gè)位置點(diǎn)在時(shí)間和位置坐標(biāo)兩方面都相距較近,則表明用戶a和用戶b相遇。如果將其中一個(gè)稱為第一用戶,另一個(gè)人可以稱為第二用戶,這兩個(gè)用戶可以互為遇見(jiàn)過(guò)的人。例如,用戶a是第一用戶,用戶b是第二用戶,可以將用戶b記錄在用戶a的遇見(jiàn)人鏈表中,遇見(jiàn)鏈表中存儲(chǔ)有用戶a遇到過(guò)的各個(gè)人,還可以更新用戶b的遇見(jiàn)人鏈表,將用戶a作為用戶b的遇見(jiàn)人。
在計(jì)算出相遇的人之后,本方法還可以將其應(yīng)用于好友推薦,例如,可以將第二用戶作為推薦的好友,推送至第一用戶的客戶端,并將所述第一用戶作為推薦的好友,推送至所述第二用戶的客戶端。在好友推薦后,是否要主動(dòng)與所推薦的好友進(jìn)行互動(dòng),可以由用戶決定。
在其他的例子中,推薦好友時(shí)除了考慮上述的人與人相遇的因素,還可以結(jié)合考慮其他因素。比如,如果設(shè)定步行的人與坐公交車的車內(nèi)人即使相遇,也不推薦為好友,則可以結(jié)合人的行進(jìn)速度判斷是步行還是坐車后,行進(jìn)路線具體確定為步行道或者機(jī)動(dòng)車道,這兩個(gè)車道的人即使?jié)M足時(shí)間和坐標(biāo)的比較條件,也不推薦為好友。其他的場(chǎng)景不再詳舉,可以根據(jù)實(shí)際需求確定。
為了實(shí)現(xiàn)上述方法,本公開(kāi)還提供了一種人與人相遇的確定裝置,如圖3所示,該裝置可以包括:位置獲取模塊31、比較處理模塊32和相遇確定模塊33。其中,
位置獲取模塊31,用于獲取第一用戶的行進(jìn)路線上包括的至少一個(gè)位置點(diǎn),所述位置點(diǎn)的位置信息包括第一用戶行進(jìn)至此的時(shí)間以及位置坐標(biāo);
比較處理模塊32,用于分別對(duì)每一個(gè)位置點(diǎn),確定與所述位置點(diǎn)的時(shí)間差值和位置坐標(biāo)差值在預(yù)定范圍內(nèi)的其他位置點(diǎn);
相遇確定模塊33,用于將所述其他位置點(diǎn)對(duì)應(yīng)的第二用戶,作為所述第一用戶在行進(jìn)路線上遇到的人,并將所述第一用戶作為所述第二用戶遇到的人。
如圖4所示,位置獲取模塊31可以包括:
位置接收子模塊311,用于接收所述第一用戶的客戶端上報(bào)的多個(gè)位置信息;
路線確定子模塊312,用于根據(jù)所述多個(gè)位置信息,確定所述第一用戶的所述行進(jìn)路線;
位置確定子模塊313,用于獲取所述行進(jìn)路線上的至少一個(gè)位置點(diǎn)。
在一個(gè)例子中,路線確定子模塊312,具體用于結(jié)合地圖路線,獲取匹配所述多個(gè)位置信息的道路,作為所述第一用戶的行進(jìn)路線。
在一個(gè)例子中,位置獲取模塊31還包括:位置糾錯(cuò)子模塊314,用于根據(jù)所述行進(jìn)路線,對(duì)所述多個(gè)位置信息進(jìn)行糾錯(cuò),將未匹配所述行進(jìn)路線的位置信息修改為所述行進(jìn)路線上的位置信息。
在一個(gè)例子中,路線確定子模塊312,還用于當(dāng)匹配所述多個(gè)位置信息的道路為至少兩條時(shí),結(jié)合所述第一用戶的行進(jìn)速度,將所述至少兩條道路中匹配所述行進(jìn)速度的道路,確定所述第一用戶的所述行進(jìn)路線。
上述實(shí)施例闡明的裝置或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。一種典型的實(shí)現(xiàn)設(shè)備為計(jì)算機(jī),計(jì)算機(jī)的具體形式可以是個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、蜂窩電話、相機(jī)電話、智能電話、個(gè)人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件收發(fā)設(shè)備、游戲控制臺(tái)、平板計(jì)算機(jī)、可穿戴設(shè)備或者這些設(shè)備中的任意幾種設(shè)備的組合。
為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本公開(kāi)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
以上所述僅為本公開(kāi)的較佳實(shí)施例而已,并不用以限制本公開(kāi),凡在本公開(kāi)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開(kāi)保護(hù)的范圍之內(nèi)。