综合练习:通过基站信息计算家庭地址和工作地址
需求:根据手机信号来计算其所在的位置
手机一开机,就会和附近的基站建立连接,建立连接和断开连接都会被记录到服务器上的日志,
所以即使没手机有开启网络或者GPS,也可以定位手机所在的位置。基站都有一定的辐射范围,
并且根据信号强度有不同的信号级别,比如2G、3G和4G信号。
我们虽然不知道手机用户所在的具体位置,但是我们知道基站的位置,手机用户一旦进入基站的
辐射范围,手机就会和基站之间建立连接。我们就可以计算用户大致的位置。我们就可以根据这
些位置信息做一些推荐广告。比如附近的商家,你可能喜欢的商品或者服务。
假如现在我们得到了一些位置数据,比如有手机号、建立连接的标记(比如1)、断开连接的标记(比如0)、
建立连接的时间戳、断开连接的时间戳等字段。用断开连接的时间减去建立连接的时间就是用户在该基站下
停留的时间。但是这种计算方式不是很好,因为在实际中用户可能会停留好几天的情况,或者说有建立连接但是
没有断开连接的情况。所以这里面其实还会有一个会话的概念。
其实基站不是一直保持连接的,它可能每隔一段时间他会自动断开一次。比如每隔一天就断开一次。
每个基站都有一个基站ID,这是一个UUID。所以可能还会一个和基站相关的基站表,比如基站的id和经纬度等信息。
我们应该将两个表进行join才能得到用户在基站下停留的时间等信息。
这里我们先不考虑会话id的概念。我们这里只是求某个用户白天和晚上等某个时间段停留时间的从高到低进行排序。
比如早晨8点到晚上6点之间停留时间最长的我们可以认为是用户的工作地点。相反,在晚上6点到第二天早上8点这段时间
中停留时间最长的我们就认为是用户的住所。
知道了用户的工作地点和住处,我们就可以做一些推荐了。
但是还有一个问题是,一个用户可能在一天中会经过几十甚至上百个基站。我们怎么才能知道它在哪个基站下面停留的时间最长呢?
而且还有一个问题,一个用户在同一个基站下路过还不止一次。比如某用户,在他公司和家之间有一个基站,他
需求:根据手机信号来计算其所在的位置
手机一开机,就会和附近的基站建立连接,建立连接和断开连接都会被记录到服务器上的日志,
所以即使没手机有开启网络或者GPS,也可以定位手机所在的位置。基站都有一定的辐射范围,
并且根据信号强度有不同的信号级别,比如2G、3G和4G信号。
我们虽然不知道手机用户所在的具体位置,但是我们知道基站的位置,手机用户一旦进入基站的
辐射范围,手机就会和基站之间建立连接。我们就可以计算用户大致的位置。我们就可以根据这
些位置信息做一些推荐广告。比如附近的商家,你可能喜欢的商品或者服务。
假如现在我们得到了一些位置数据,比如有手机号、建立连接的标记(比如1)、断开连接的标记(比如0)、
建立连接的时间戳、断开连接的时间戳等字段。用断开连接的时间减去建立连接的时间就是用户在该基站下
停留的时间。但是这种计算方式不是很好,因为在实际中用户可能会停留好几天的情况,或者说有建立连接但是
没有断开连接的情况。所以这里面其实还会有一个会话的概念。
其实基站不是一直保持连接的,它可能每隔一段时间他会自动断开一次。比如每隔一天就断开一次。
每个基站都有一个基站ID,这是一个UUID。所以可能还会一个和基站相关的基站表,比如基站的id和经纬度等信息。
我们应该将两个表进行join才能得到用户在基站下停留的时间等信息。
这里我们先不考虑会话id的概念。我们这里只是求某个用户白天和晚上等某个时间段停留时间的从高到低进行排序。
比如早晨8点到晚上6点之间停留时间最长的我们可以认为是用户的工作地点。相反,在晚上6点到第二天早上8点这段时间
中停留时间最长的我们就认为是用户的住所。
知道了用户的工作地点和住处,我们就可以做一些推荐了。
但是还有一个问题是,一个用户可能在一天中会经过几十甚至上百个基站。我们怎么才能知道它在哪个基站下面停留的时间最长呢?
而且还有一个问题,一个用户在同一个基站下路过还不止一次。比如某用户,在他公司和家之间有一个基站,他