交通大数据车速区间位置查询系统设计与实现
2019-10-21艾虎
摘 要:为了利用交通大数据为道路建设提供重要依据,本研究基于Web的Browser/Server结构模式,采用ASP.NET技术,借助百度地图JavaScript API,应用C#、JavaScript和T-SQL等编程语言设计并实现了交通车速区间位置查询系统。首先通过对交通大数据进行整理得到GPS数据,然后通过该系统的车速区间位置查询页面对十进制经纬度坐标精确到小数点后的位数和查询条件(经纬度范围、车速区间和车辆数量下限)进行设置,可查询到车辆集中停放、堵车、车流量大和车辆超速的具体位置。通过实验与分析,基于交通大数据的车速区间位置查询系统可以为道路建设规划与改造降低事故发生率提供重要的依据。
关键词:交通大数据;位置查询系统;百度地图API;Web;ASP.NET;C#
中图分类号:TP391.1 文献标识码:A 文章编号:2096-4706(2019)05-0001-06
Abstract:In order to provide an important basis for road construction by using traffic data,this paper designs and implements a traffic speed interval location query system based on Browser/Server structure mode of Web,using ASP.NET technology and Baidu Map JavaScript API,using C#,JavaScript and T-SQL programming languages. Firstly,the GPS data is obtained by sorting out the traffic data. Then,the decimal coordinates of longitude and latitude are precisely set to the digits after decimal point and the query conditions(longitude and latitude range,speed interval and lower limit of vehicle number)are set through the speed interval location query page of the system,which can query the specific locations of concentrated parking,traffic jam,large traffic volume and vehicle overspeed. Through experiments and analysis, the speed interval location query system based on traffic data can provide an important basis for road construction planning and reconstruction to reduce the accident rate.
Keywords:traffic big data;location query system;Baidu map API;Web;ASP.NET;C#
0 引 言
目前国内面临严峻的交通问题[1-4],城市中交通状况不佳的现象普遍存在,时间的延误、车速过低和能源的浪费给消费者带来了极大的经济损失,大量废弃物的排放和大量噪声的制造,对城市的环境造成了很大的影响。如果能够对交通大数据进行分析,并查找到不同车速区间车辆的运行情况和位置,可为道路建设规划与改造和降低事故发生率提供重要的依据。
在当今的互联网时代,可以借助交通大数据为交通模型提供核心数据[5],交通大数据来源于对各种车辆的GPS信息的采集,比如公交车、货车、出租车、网约车和私家车,采集到的车辆GPS信息的数据格式种类繁多,其中蕴含着重要的交通信息,这些信息可以通过数据分析和挖掘得到。近年国外发展了智能交通系统与数字道路交互式可視化与评价网络(DRIVE Net)等[6,7],目前国内的交通信息服务系统种类繁多,具有代表性的有百度地图导航和高德地图导航等,但仍然需要大力发展基于大数据分析的新型交通信息服务系统。
本文构建了基于Web的交通车速区间位置查询系统,通过设置经纬度的精确度和查询条件,从交通GPS大数据中查找到在设定的车速区间范围内的车辆运行的具体位置(经纬度),然后在经纬度的精确度范围内进行统计,并在地图中标定,可为道路建设规划与改造提供重要的依据。
1 车速区间位置查询系统的需求分析与架构
1.1 车速区间位置查询系统构需求分析
交通车速区间位置查询系统多层次数据流如图1所示。
1.1.1 普通用户
普通用户的功能主要包括注册、登录和利用GPS数据进行车速区间位置的查询等。
1.1.2 系统管理员
系统管理员的功能主要包括GPS数据库的管理和普通用户的审核与删除等。
1.2 系统架构
该系统的架构采用Web的Browser/Server(即浏览器/服务器)结构,包括表示层、业务层和数据层。其中表示层主要是实现用户与业务层之间的所有交互和逻辑功能;业务层的功能是接收表示层的请求,并向表示层返回结果;数据层的功能主要是系统数据的保存,该数据包括GSP数据和相关的用户数据等,并为业务层提供所需要的数据。
2 系统设计
2.1 系统结构
交通车速区间位置查询系统主要模块构成如图2所示。
2.2 数据库结构
采用Microsoft SQL Server2008构建数据库BigDataGps_DB,为了储存大数据中对本系统有用的信息,本文建站数据表dbo.GPS,其属性如图3(a)所示。用户信息数据表的属性如图3(b)所示。主要数据表之间的关系E-R图如图4所示。
3 系统实现
3.1 实现工具与技术
车速区间位置查询系统采用了ASP.NET技术,并借助了百度地图JavaScript API,通过C#、JavaScript和T-SQL等编程语言实现,其中应用了AJAX技术和ADO.NET技术。
系统开发平台:Microsoft Visual Studio2010;数据库管理系统:Microsoft SQL Server2008;运行平台:Windows XP/Windows10/Windows Server 2003;运行环境:Micro-soft.NET Framework SDK4.0。
3.2 车速定位数据
3.2.1 交通大数据的整理
首先选择所需要的交通大数据文件HfGps.CSV,导入数据库BigDataGps_DB中,并转换数据格式得到数据表dbo.HFGps(包含362706条记录),从而获得原始交通大数据信息。为了获得大数据中对本系统有用的信息,从数据表dbo.HFGps中选取字段(经度、纬度和车速)的数据插入数据表dbo.GPS中,从而可以根据需要对数据表dbo.GPS进行任意操作,不会破坏原始交通大数据信息。
3.2.2 十进制经纬度坐标的精确度
经纬度可以表示地球上任何一个固定的点,通过GPS可以获得具体位置的十进制坐标表示的经纬度,十进制经纬度坐标小数点后位数的精确度用式(1)进行计算,其中L为位置的精度范围(弧长);R为地球半径,设为6400KM。
从式(1)中可以得知,十进制经纬度坐标小数点后第3位的精度范围设为L=100M。当N≈0.0001时,可以得知十进制经纬度小数点后第4位的精度范围为L=10M。本研究对十进制经纬度坐标进行四舍五入,分别保留3或4位小数(即定位精度设定为100M或10M),然后进行比较实验。
3.2.3 定位数据的获得
在数据库BigDataGps_DB中创建存储过程,把经纬度范围(左上角经纬度与右下角经纬度)、车速区间(车速下限、车速上限)和车辆数量下限作为参数传递给该存储过程,采用ADO.NET技术执行该存储过程,并以DataTable的形式获取GPS数据。储存过程的应用能在变更数据库架构时显著降低中断应用程序的可能性,可减小SQL注入性攻击的可能性[8]。
在存储过程SearchGps中创建表变量DECLARE@Gps TABLE(LONGITUDE NUMERIC(9,6),LATITUDE NUMERIC(9,6)),然后从数据表dbo.GPS中选取符合搜索条件(经纬度范围、车速区间)的数据插入表变量@Gps中,这时可以对表变量@Gps进行任意操作。首先对表变量@Gps中的经度和纬度字段的数据采用四舍五入的方式在小数点后保留3或4位有效数字,并进行更新,然后对表变量@Gps中的经度和纬度字段进行group by查询结果分组,配合聚合函数count(*)进行分组记录数的计算,然后利用having子句进行筛选分组记录数大于等于车辆数量下限的分组,得到的结果中包括经纬度(小数点后保留3或4位有效数字)和在该经纬度的车速区间范围内的且大于等于车辆数量下限的车辆数量。
3.3 车速区间位置查询页面的实现
车速区间位置查询页面的实现采用了母板和用户控件,并使用了百度地图JavaScript API和AJAX技术。在整个网站中使用母板页,可增强页面的整体效果且修改方便[9],Ajax技术的应用让局部刷新页面成为可能,能产生高度交互和动态的Web页面[10]。
3.3.1 电子地图初步定位
首先利用百度地图JavaScript API创建Map实例,从而在车速区间位置查询页面中显示百度地图。由于本文获得的GPS交通大数据只能覆盖一个小区域,所以首先需要在百度地图中查找定位这个区域,车速区间位置查询页面采用了两种基于百度地图JavaScript API的查找定位方法,第一种是输入具体地址,然后采用方法BMap.LocalSearch()进行查找定位,第二种是输入具体的经纬度,并把该经纬度设置为地图的中心点坐标。
3.3.2 查詢经纬度范围的获取
电子地图初步定位,并找到需要查询的区域。获取地图可视区域的纬度范围,并实时显示地图可视区域纬度范围(左上端点和右下端点)的经纬度。把地图可视区域左上端点和右下端点经纬度保存在4个服务器控件隐藏域HiddenField中,该控件可用于页面前台JavaScript与后台C#之间的数据传递。
3.3.3 车速区间位置查询与显示
设置1个服务器控件TextBox,用于用户输入十进制经纬度坐标小数点后要保留的位数,设置3个服务器控件TextBox,用于用户输入查询条件(车速下限、车速上限和车辆数量下限),设置服务器控件Button用于触发回传,把十进制经纬度坐标小数点后要保留的位数和查询条件(经纬度范围、车速区间和车辆数量下限)回传至服务器,并执行存储过程SearchGps获取GPS数据,获取的GPS数据为数据表DataTablegpstable,在后台把数据表gpstable中的字段(经度LONGITUDE、纬度LATITUDE和车辆数量num)的数据以逗号为分隔符分别拼接成3个字符串(经度字符串LngString、纬度字符串LatString和车辆数量字符串NumString),然后分别赋给3个服务器控件HiddenField保存,目的是方便前台JavaScript调用。前台JavaScript通过调用2个服务器控件HiddenField得到字符串LngString和LatString,然后采用split()方法以逗号为分隔符把这2个字符串分别分割成2个字符串数组(经度字符串数组strLngArr[]、纬度字符串数组strLatArr[]),至此就得到了用于在地图上进行显示的十进制经纬度坐标。
利用百度地图JavaScript API,根据经度字符串数组和纬度字符串数组中保存的数据,通过循环在地图中创建红色图标标注,结果如图5所示。在地图右边设置服务器控件GridView用来接收并显数据表gpstable中的数据,并按车辆数量从大到小进行了排序,结果如图5中地图右边的表格所示。
3.4 用户模块
用户模块包括用户登录和用户注册页面,这两个页面都采用了用户控件和母板技术,在母板的框架下设置服务器控件Login构建用户登录页面,为防止恶意的登录攻击,在页面中还设置了登录验证码,如图6(a)所示。用户注册页面的构建也是通过在母板的框架下设置服务器控件LoginView来实现,如图6(b)所示。
3.5 系统管理模块
系统管理模块包括用户信息管理页面和系统管理,用户信息管理页面如图7所示,该页面采用了用户控件、母板、分页显示和AJAX技术。
在该页面中设置服务器控件GridView接收并显示用户注册信息,在服务器控件GridView中可删除选定的用户注册信息,但不可修改。由于注册的用户可能会很多,所以采用了分页显示技术。
4 应用实验与分析
打开车速区间位置查询页面,在地图中找到要查询的区域,并把地图缩放到合适的大小,从而获取查询条件中的经纬度范围(左上角经纬度与右下角经纬度)的数据。然后在该页面输入车速区间(车速下限、车速上限)和车辆数量下限进行查询实验。
为了分析和比较各种查询条件的查询结果,查询条件的设置如表1所示。
由于查询条件中车速下限和车速上限都设为0,所以查询结果中会包含堵车的位置,但查询条件中车辆数量下限设为1000辆,则会过滤掉轻微堵车的位置,但过滤不掉严重堵车的位置。由于经纬度精确到小数点后的位数设为4位比设为3位更能精准地进行位置标定,查询条件1的查询结果如图8(a)所示,可以为大多数车辆停车的位置和严重堵车的位置提供参考。因为拥堵与缓行是相伴发生的,只要查询缓行的位置就能得到拥堵的位置,为了不包含停车的位置,把查询条件的速度区间设为[1,10]。经纬度精确到小数点后的位数设为3位比设为4位和车辆数量下限设1000比设为100更能获得长期缓行的位置,并过滤掉随机缓行的位置。查询条件7的查询结果如图8(b)所示。为查询高速行驶的车辆,速度区间设为[101,200],车辆数量下限均设为1次。通过比较得出车辆数量少的情况下,经纬度精确到小数点后4位更能精准地标定所处位置,查询条件12查询结果如图8(c)所示。
5 讨论与分析
首先要从杂乱无章的交通大数据中选取所需要的数据,然后插入事先设置好的表格中,本文通过人工操作数据库管理系统(Microsoft SQL Server2008)来完成,并没有开发实现这样功能的用户端,这将成为以后的工作任务。
本系统通过设置十进制经纬度坐标精确到小数点后的位数和查询条件(经纬度范围、车速区间和车辆数量下限),通过设置不同的查询条件组合可得到不同的查询结果。十进制经纬度坐标采用四舍五入的方式保留3位小数,可统计以标注位置为中心的长宽为100M的正方形区域的车辆情况,十进制经纬度坐标保留4位小数,可统计以标注位置为中心的长宽为10M的正方形区域的车辆情况。从应用实验中可以看到,当符合查询条件的车辆数量比较少时,精确到小数点后的4位比精确到小数点后3位更能在地图上精准地标定位置,当符合查询条件的车辆数量比较多时,则精确到小数点后的3位更合适。
6 结 论
本研究采用Asp.net技术,构建基于Web的交通车速区间位置查询系统,交通大数据通过整理后储存在后台服务器数据库中,为统一修改更新GPS数据提供方便。车速区间位置查询页面提供十进制经纬度坐标精确到小数点后的位数和查询条件(经纬度范围、车速区间和车辆数量下限)的设置,不同的设置组合可获得不同的查询结果,并能在百度地图上直观地显示出来,该系统能为道路建设、规划和改造提供重要的依据。
参考文献:
[1] 丁俊发.改革开放40年中国物流业发展与展望 [J].中国流通经济,2018,32(4):3-17.
[2] 刘民权.全球化中的中国中小企业:交通基础设施的作用 [J].金融研究,2018(4):121-137.
[3] 赵福全,刘斐齐,刘宗巍,等.中国汽车产业低碳化评价指标体系研究 [J].中国工程科学,2018,20(1):104-112.
[4] 乔英俊,纪雪洪.发展共享汽车推动汽车强国建设 [J].中國工程科学,2018,20(1):120-126.
[5] 张天然.大数据背景下的交通模型发展思考 [J].城市交通,2016,14(2):22-28.
[6] Leung H,Faouzi N E E, Kurian A. Intelligent transportation system (ITS)[J]. Information Fusion,2011,12(1):2-3.
[7] Cui Z ,Zhang S ,Henrickson K C ,et al. New progress of drivenet:an e-science transportation platform for data sharing,visualization, modeling,and analysis [C]// Smart Cities Conference. IEEE,2016.
[8] [美]特罗尔森.C# NET3.5高级程序设计(第4版) [M].北京:人民邮电出版社,2009:580-682.
[9] [美]麦克唐纳,兹普兹塔.ASP.NET3.5高级程序设计(第2版) [M].北京:人民邮电出版社,2008:528-571.
[10] [美]尼尔森.Server2008宝典 [M].北京:清华大学出版社,2011:459-515.
作者简介:艾虎(1974-),男,汉族,江西弋阳人,副教授,博士,研究方向:信息技术、大数据。