实时抓取网页数据(高德和百度地图实时路况数据的研究进展及应用方法)

优采云 发布时间: 2022-01-03 03:08

  实时抓取网页数据(高德和百度地图实时路况数据的研究进展及应用方法)

  1. 简介

  最近老师有一个需求,就是想抓取实时矢量交通流数据进行分析,类似于百度地图和高德地图的“实时路况”。通常的网络爬虫工作一般都是抓取网页上现成的数据,但是流量数据只有栅格切片,没有矢量数据,而且数据购买成本每年几十W,也就是基本不可能获得。实验室的兄弟们都忙着做事,这个艰巨的任务自然就交给了我。

  图片1.高德和百度地图实时路况数据

  因为网上能查到的数据只有切片数据,这个问题转化为如何对切片数据进行向量化。如果直接使用ArcGIS Engine将栅格数据转换为矢量数据,基本上是不可能的。一是计算量过大,二是转换后的矢量数据不准确。更重要的是,每次转换的矢量道路都不一样。没有办法分析它。但是我们注意到流量切片有两个特点:

  a) 也属于地图切片的一种,所以可以使用地图切片算法来计算每个切片的经纬度;

  b) 它是一个透明的 PNG 图像,用四种颜色表示交通拥堵。我只需要识别每一段路的颜色,判断交通拥堵,然后就可以完成“矢量化”工作。 .

  接下来的工作可以分为以下几个步骤:

  a) 准备某个城市的详细矢量道路数据;

  b) 下载城市交通流切片,拼成大图;

  c) 在网格上标记需要检测颜色的像素点,并计算这些像素点的经纬度;

  d) 将每条道路的矢量数据与像素一一匹配,检测交通流情况并写入数据库。

  2.地图切片系统和实时交通流量

  地图切片也称为地图瓦片。这方面的文章和机制已经很成熟了。详细算法内容请参考这个文章。本文以高德切片为例。高德的实时交通流使用动态切片,但与一般的切片系统略有不同。切片的缩放级别越小,缩放级别越大,反之。

  当然我们也可以自己计算不同,建议使用类库

  3. 主要思想

  高德的交通流数据(图1.(a))一般都很简单。用“绿”、“黄”、“红”三种颜色表示交通拥堵。相似路段的分隔还是比较明显的。但是直接将切片转换为向量是非常不现实的。但是我有北京提供的非常详细的矢量数据(图2.(b))。如果将交通流切片与矢量数据进行匹配,则可以生成实时交通流矢量数据。最后,交通流数据可以切片发布,也可以向量发布。所以现在的主要任务是找到匹配流量切片和向量数据的中间件。

  图2.交通流切片和矢量数据

  虽然高德切片数据是以编码的方式组织的,但每张图片和每一个像素都有严格固定的坐标。只要选择一部分有值的像素,像素安装公式就转化为点阵。然后将每个点与矢量道路匹配,即为每个点添加一个RouteId字段。图3(a)是我生成的点阵的一部分,图3(b)是点阵的属性表,它收录三个字段:x、y和routeid。具体步骤如下:

  a) 定期下载交通流切片数据并存储在本地文件夹中;

  b) 根据点阵数据读取指定切片的指定像素,判断像素的颜色,得到拥塞情况;

  c) 根据拥塞和RouteId生成交通流表,包括RouteId和Traffic两个字段;

  d) 根据RouteId匹配交通流表和矢量数据,得到矢量交通流数据;

  e) 使用切片工具从矢量数据中生成天津师范大学所需的切片数据。

  图3.(a)交通流切片数据与矢量道路数据与点阵叠加,(b)点阵属性表

  这是我如何使用程序捕获2014年12月5日晚上8点左右的交通流量数据,然后对北京四环的交通流量进行矢量化处理。从结果可以看出,交通流量的总体趋势相似,但在一些细节上存在一些差异。矢量化的结果取决于点阵的细度。

  图4.(a) 交通流切片数据 (b) 生成的矢量交通流数据

  4.总结

  当时我是抱着完成任务的心态做这个的,所以整个过程很粗糙,代码也很乱,所以就羞于分享代码了。大家慢慢看官方喷,以后有空我会安排的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线