专栏名称: GISer last
GISer last 公众号 主要以分享互联网数据资源为主。也分享过GIS、FME等技术教程方法。我个人对于大数据资源、可视化制作、地图制图等方面有很大兴趣,也会分享个人的一些应用和教程。
51好读  ›  专栏  ›  GISer last

Python处理手机信令数据制作OD图

GISer last  · 公众号  ·  · 2025-01-23 21:46

正文

温馨提示:没有设置星标的小伙伴可能会收不到文章的推送信息,欢迎各位新老朋友给【hello trans】加个星标,以便及时获得最新推文,感谢支持。

本篇内容主要介绍下如何将手机信令数据进行处理,最后绘制成OD图。

一个典型的手机信令数据记录可能包含如下字段:

  • Event Type:事件类型(如呼叫开始、位置更新等)。
  • Timestamp:事件发生的时间戳。
  • IMSI:用户的国际移动用户识别码。
  • MSISDN:用户的手机号码。
  • LAC/TAC:位置区域码/追踪区域码。
  • Cell ID:基站的小区ID。
  • CGI:全球小区标识符。
  • Latitude:基站的纬度坐标。
  • Longitude:基站的经度坐标。
  • Duration:对于通话事件,记录通话持续时间。
  • Call/SMS Direction:对于通话或短信事件,记录是发出还是接收。
  • Data Volume:对于数据会话事件,记录使用的数据量

由于原始的手机信令数据通常包含敏感的个人信息,因此在进行研究或商业应用之前,通常需要对数据进行脱敏处理,比如去除或加密个人身份信息,以保护用户的隐私。

关于手机信令数据的结构就不多做赘述,简单而言就是 身份编号、时间、地点 记录了某个人某个时间在某个地点。

为了便于演示手机信令数据的操作,这里分享一位大佬的个人网站,里面有开源的手机信令数据,同时也包含了出租车、公交车GPS数据。

网址:

https://people.cs.rutgers.edu/~dz220/data.html

这个数据集的手机信令数据结构如下:

第一列是经过处理的唯一标识、第二列是时间、第三列是经纬度信息。数据为txt文件,1.5GB,共16亿行。

这个量级的数据,我的小霸王电脑着实吃不消。为了演示方便,将该文件进行拆分。

定义了一个函数,第一个参数就是要处理的文件名,第二个参数是输出文件的前缀,第三个参数是拆分的份数。拆分后每个文件的大小变为了157MB左右。

然后,以第一个拆分数据为例进行处理。想要得到OD,首先需要提取出行链,先对第一列的编号ID进行排序,然后在第一列排序的基础上再对第二列的时间进行排序。

排序完成后,同一编号,按照时间顺序的经纬度信息就非常明显地体现出出行者的出行轨迹。由于该数据集的时间只记录了一天,因此直接提取同一编号下的开始时间、开始的经纬度、结束的时间、结束的经纬度。

最后结果如下:

第一列是ID,第二列是开始时间,第三、四列是开始的经纬度,第五列是结束的时间,第六、七列是结束的经纬度。
为了展示效果,这里推荐一个可视化的网:
https://ni1o1.github.io/ODview/build/
B站up主小旭学长 开发,可以对OD数据进行快速可视化,效果美观。

需要注意的是,经纬度信息需要设置正确,然后count这里设置为1。以下是可视化的效果:







请到「今天看啥」查看全文