大数据GIS系列(2)——空间大数据处理与分析案例

高速发展的信息化技术使得与空间位置相关的数据积累越来越多,空间数据的存储、分析与可视化传统技术已逐渐无法满足需求,亟需使用承载力更强、可靠性更高、计算速度更快的方法。分布式技术为空间大数据的处理与分析提供了有效的解决方案,下面就以一个十亿数据量级别的出租车位置数据为例,为大家介绍如何使用分布式技术进行空间大数据的可视化与分析。

1 背景介绍

纽约市出租车和轿车管委员会(TLC)目前公开发布了详细的出租车历史数据集,包括了从2009年1月到2016年6月期间几十亿条的城市内部个体出租车载客记录。每条记录都包括载客的上下车地点、上下车时间,以及载客距离、载客时长、车辆类型等信息。

这为我们研究出租车的运营情况以及乘客的出行模式提供了可能,如各行政区不同类型的出租车分布情况,工作日各时段从某居民区打车到达机场的耗时情况,乘客下车地点对出租车接到下一单的等待时间的影响等。

2 数据预处理

这些含有出租车上下客信息的数据集以CSV文件的方式提供,Spark有专门的函数来将这种记录间以换行符分隔的文件转换为RDD,RDD的每个元素即一行文本信息。接下来我们需要做的是提取每行中按逗号分隔的属性信息,其中的时间数据即上下车时间和空间数据即上下车地点对于接下来要进行的时空分析是十分重要的。

首先我们需要知道每种属性对应的列号,来将相应的字符串转成我们需要的类型如整型、浮点型或时间类型,再将浮点坐标构造成SuperMap iObjects for Spark中的点类型的Feature或包含时间特征的FeatureHasTime对象。一般来说,通过阅读数据格式说明及数据的前几行记录,我们即可明确这些信息。然而需要注意的是,对于大规模数据集,经常有一些记录不满足数据格式的要求,它们或者字段个数与其它记录不同,或者数据类型不符,而查找这些错误又要耗费额外的资源,在此我们建议使用try-catch机制来忽略掉这些错误记录。

另外我们还需要考虑数据可能存在的数据质量问题,例如,针对纽约出租车数据我们观察到,有些记录的上车时间竟然晚于下车时间,有些记录的坐标信息超出了经纬度的有效范围或全部为零,还有一些虽然坐标合法但距离纽约市非常远。对于这些情况,我们就需要根据对数据的合理期望来过滤不合理的数据。SuperMap iObjects for Spark产品模块中提供了针对FeatureRDD的属性条件过滤及空间范围过滤接口,可以支持这类数据预处理的需求。例如以纽约全市覆盖的经纬度区域为边界来做Bounds过滤,或使用纽约市的行政区面对象来对上下车坐标点做相交查询,在面内的才认为是有效数据。

3 空间可视化

在纽约,出租车分为两类:黄色和绿色。黄色出租车可以在纽约五大区内任何地点搭载乘客。绿色出租车则被规定只允许在上曼哈顿、布朗克斯区、皇后区和斯塔滕岛接客。我们可以将出租车载客的上车地点叠加显示在纽约街道地图上,来直接展示两种出租车上客位置的不同以及它们各自的上客热点区域。

然而由于数据量过大,如下所示的散点图效果并不好,点的互相叠加产生了一定的视觉干扰,并且不论地图显示还是生成缓存的耗时都很长。
出租车载客点叠加显示
图1 出租车载客点叠加显示

因此我们考虑对原始数据进行聚合统计,这里使用纽约出租车区划面数据来对黄色出租车的载客上客点记录进行聚合,之后按每个区域的点数统计值来渲染地图,颜色越深表示该区域发生的载客行为越多。如下图,曼哈顿地区的载客行为明显要多于其它区域,而皇后区东南和北部的两处载客活跃地块,则分别是肯尼迪国际机场和拉瓜迪亚机场。
用区划面对上客位置点数进行聚合分析
图2 用区划面对上客位置点数进行聚合分析

我们还可以对黄绿两种出租车的载客记录分别进行热度图渲染,来分析全市载客行为的整体分布趋势,这里使用SuperMap iObjects for Spark的核密度计算功能。将密度较小区间的颜色设为透明后,如下图,可以很直观的看到黄绿两色出租车各自的载客热点区域。
载客位置热度图
图3 载客位置热度图

将上图放大至上东区与东哈莱姆区交界的位置,也即黄绿色出租车载客分界线上,如下图,这是绿色出租车的一个载客热点区域。
黄绿出租车交界处热度分布图
图4 黄绿出租车交界处热度分布图

4 空间分析

现在我们研究乘客下车位置对出租车等待下一单生意的等单时间的影响。

为了计算每辆车或每个司机的等单时间,我们需要将所有载客记录按车辆或司机的唯一ID来对记录进行分组,然后将这些分组后的载客记录按时间排序。排序让我们可以计算一次载客记录的下客时间和下一次载客记录的上客时间的时间间隔即等单时间。由于涉及到隐私问题,2014年后的出租车数据不再提供车牌号或司机驾照信息,因此这里使用2013年的数据来进行分析。

首先我们使用原始数据构造FeatureRDD,其中的Feature元素是以上客地点为几何对象、以上客时间为时间特征的FeatureHasTime类型,同时记录车牌号、下客时间和下客点坐标作为Feature的普通属性。之后我们按车牌号字段值对该FeatureRDD进行分组,并过滤掉记录数小于2的分组。

接下来我们对每个分组中的记录进行上客时间的排序,然后对排序结果中的两两记录计算下客时间和下一单上客时间的时间间隔,并与下客地点联合构造为一个新的Feature,在这个过程中,过滤掉间隔时间为负的错误记录和间隔时间大于三小时即司机可能在休息的记录。

这样,我们就得到了一个有关下客地点和等单时间的新的FeatureRDD,使用出租车区划面数据来对该FeatureRDD进行点在面内聚合处理,其中聚合统计字段即等单时间,统计方式为平均值。将最后得到的聚合面数据集进行单值渲染,颜色越深表示等单时间越短,可得如下的地图效果。
出租车等单时间与下客区域的关系
图5 出租车等单时间与下客区域的关系

地图整体表现出下客地点越繁华,出租车等单时间越短的趋势,曼哈顿地区的等单时间明显短于其它地区。比较特别的是两处机场区域,虽然由之前的分析得知机场的载客行为很密集,但载客到达机场的司机并不能很快获得下一单生意。

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值