1.一种用存储过程实现车辆越界判断与统计的方法,其特征在于:包括如下步骤:
a.建立一个包括有用于提供Web服务、处理业务流程的业务层、包含用于存储信息的静态数据库和进行通讯的实时数据库的数据层、用于发送和接收车载终端的数据包的网络层的服务中心;服务中心的业务层和网络层对数据层中数据库的操作皆通过存储过程完成;
b.由车辆的车载终端定时向服务中心上传包括有距离、司机编号、时间、经度、纬度信息的行驶数据;
c.服务中心的网络层对车载终端上传的数据经解析后存储在数据层的实时数据库中的行驶数据表;
d.车辆管理者通过客户端软件或是使用浏览器登录服务中心所提供的网页,在服务中心提供的网页界面中录入限定区域参数;服务中心的业务层将其存入数据层的实时数据库中的限定区域表;所述限定区域表包括记录号、公司ID、区域编号、区域边数和三至十个点的经、纬度数据;
e.服务中心的业务层接受车辆管理者的车辆越界判断与统计请求,根据车辆管理者输入的车辆ID、统计时间段和限定区域编号,将参数传给数据库中相应的存储过程;
f.服务中心的数据层的实时数据库的区域越界判断模块逐条读取行驶数据,根据每条车辆行驶记录中的经度和纬度构成的点与该车辆的限定区域比较,如果点在区域内则未越界,否则为越界;
g.服务中心的数据层的实时数据库的区域越界统计模块根据区域越界判断的结果来统计车辆越界情况;
h.服务中心的业务层将统计的所述车辆的越界情况显示在车辆管理者的终端设备上,包括显示该车辆在设置的时间段内的每次越界的起止时间、越界时长、越界距离、相应的司机姓名。
2.根据权利要求1所述的一种用存储过程实现车辆越界判断与统计的方法,其特征在于:所述的车辆越界统计过程包括如下步骤:
g1.根据车辆ID和起止时间找出对应的行驶数据,根据区域编号找出对应的限定区域;
g2.初始化时间t1,越界状态设置f=false,越界次数设置M=0,越界时长设置L=0,越界距离设置D=0;
g3.读行驶数据,根据经纬度和限定区域判断越界状态S,如点在区域外,记为S=true,否则,记为S=false;
g4.判断S=true,f=false是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g6;
g5.置f=ture,t1=T,M=M+1,而后转入步骤g10;其中T表示车载终端上传的gps时间,为行驶记录中的TheTime字段;
g6.再判断S=true,f=true是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g8;
g7.置D=D+distance,而后转入步骤g10;其中distance表示车载终端上传的行驶里程,为行驶记录中的Distance字段;
g8.再判断S=false,f=true是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g10;
g9.置f=false,L=L+(T-t1),将起始时间t1、终止时间TheTime、越界次数M、越界时长L和越界距离D存为一条统计记录;
g10.判断是否为最后一条行驶记录,判断为是,则进入下一步骤,判断为否,则返回步骤g3;
g11.将统计记录输出至业务层。
3.根据权利要求1所述的一种用存储过程实现车辆越界判断与统计的方法,其特征在于:所述的行驶数据表由字段名、字段类型、说明构成,内容包括记录号、帧序号、距离、司机编号、时间、经度、纬度、速度、方向、是否为空车、车门状态、电平电压状态、有效性、省电模式、私密性、二维或三维、怠速状态、急刹状态、ACC状态、平均速度。
4.根据权利要求1所述的一种用存储过程实现车辆越界判断与统计的方法,其特征在于:所述的限定区域参数限定包括由三条边至十条边所围成的区域。
5.根据权利要求1所述的一种用存储过程实现车辆越界判断与统计的方法,其特征在于:所述的判断点与区域的关系采用射线法,以点为端点作水平射线,如果该射线与区域的交点数为奇数,则点在区域内,如为偶数,则点在区域外。
6.根据权利要求1所述的一种用存储过程实现车辆越界判断与统计的方法,其特征在于:所述的车辆越界统计过程中,一次连续的越界状态称为一次越界,越界状态持续的时间为此次越界时长,处于越界状态下的距离之和为越界距离。
技术领域\n本发明涉及一种汽车统计方法,特别是涉及一种用存储过程实现车辆越界判断与统计的方法。\n背景技术\n区域越界是指车辆的行驶轨迹超出了限定的区域,是评估车辆行驶和驾驶员驾驶绩效的考核指标之一。统计车辆的越界次数和越界时长以及越界期间的行驶距离,对车辆的管理和对驾驶员的评估都提供了一个定量的指标,有利于车辆和驾驶员的高效管理。在现有的车辆管理方式中,车辆管理者可以利用车台定时上传的行驶数据,根据给定的限定区域,对车辆的越界状态进行判断和统计。操作数据库中的数据可以通过应用程序来实现,如用VC++、VB、Dephi等先获取数据库中的数据,再进行加工处理,也可以通过数据库中编写的存储过程先将数据处理好,然后发送至应用程序。如果需要对大量的数据进行统计分析,那么用前一种方法将进行大量的数据传输,这将耗费一定的时间。如果用后一种方法,传输的只是处理后的结果,传输量将大大减小,可以节省传输时间。然而,对SQLServer 2000及以前的版本,只能用SQL语言来编写存储过程,当数据的运算比较复杂特别是需要逐条处理每条数据时,运算速度显得较慢,编写语句也很复杂。\n发明内容\n本发明的目的在于克服现有技术之不足,提供一种用存储过程实现车辆越界判断与统计的方法,利用SQL Server 2005的强大功能,实现在数据库内计算大批车辆轨迹点的越界状况,进而统计越界次数和越界时长及越界期间的行驶距离,然后将统计结果返回至应用程序,达到提高速度,减少数据传输量的目的,从而缩短了系统的处理时间。\n本发明解决其技术问题所采用的技术方案是:一种用存储过程实现车辆越界判断与统计的方法,包括如下步骤:\na.建立一个包括有用于提供Web服务、处理业务流程的业务层、包含用于存储信息的静态数据库和进行通讯的实时数据库的数据层、用于发送和接收车载终端的数据包的网络层的服务中心;服务中心的业务层和网络层对数据层中数据库的操作皆通过存储过程完成;\nb.由车辆的车载终端定时向服务中心上传包括有距离、司机编号、时间、经度、纬度等信息的行驶数据;\nc.服务中心的网络层对车载终端上传的数据经解析后存储在数据层的实时数据库的行驶数据表中;\nd.车辆管理者通过客户端软件或是使用浏览器登录服务中心所提供的网页,在服务中心提供的网页界面中录入限定区域参数;服务中心的业务层将其存入数据层的实时数据库中的限定区域表中(包括记录号、公司ID、区域编号、区域边数和三至十个点的经、纬度数据);\ne.服务中心的业务层接受车辆管理者的车辆越界判断与统计请求,根据车辆管理者输入的车辆ID、统计时间段和限定区域编号,将参数传给数据库中相应的存储过程;\nf.服务中心的数据层的实时数据库的区域越界判断模块逐条读取行驶数据,根据每条车辆行驶记录中的经度和纬度构成的点与该车辆的限定区域比较,如果点在区域内则未越界,否则为越界;\ng.服务中心的数据层的实时数据库的区域越界统计模块根据区域越界判断的结果来统计车辆越界情况;\nh.服务中心的业务层将统计的所述车辆的越界情况显示在车辆管理者的终端设备上,包括显示该车辆在设置的时间段内的每次越界的起止时间、越界时长、越界距离、相应的司机姓名。\n所述的车辆越界统计过程包括如下步骤:\ng1.根据车辆ID和起止时间找出对应的行驶数据,根据区域编号找出对应的限定区域;\ng2.初始化时间t1,越界状态f=false,越界次数M=0,越界时长设置L=0,越界距离D=0;\ng3.读行驶数据,根据经纬度和限定区域判断越界状态S,如点在区域外,记为S=true,否则,记为S=false;\ng4.判断S=true,f=false是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g6;\ng5.置f=ture,t1=T(TheTime字段),M=M+1,而后转入步骤g10;\ng6.再判断S=true,f=true是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g8;\ng7.置D=D+distance(记录中的距离字段值),而后转入步骤g10;\ng8.再判断S=false,f=true是否成立;判断为是,则进入下一步骤,判断为否,则进入步骤g10;\ng9.置f=false,L=L+(T-t1),将起始时间t1、终止时间TheTime、越界次数M、越界时长L和越界距离D存为一条统计记录;\ng10.判断是否为最后一条行驶记录,判断为是,则进入下一步骤,判断为否,则返回步骤g3;\ng11.将统计记录输出至业务层。\n所述的行驶数据表由字段名、字段类型、说明构成,内容包括记录号、帧序号、距离、司机编号、时间、经度、纬度、速度、方向、是否为空车、车门状态、电平电压状态、有效性、省电模式、私密性、二维或三维、怠速状态、急刹状态、ACC状态、平均速度。\n所述的限定区域参数限定包括由三条边至十条边所围成的区域。\n所述的判断点与区域的关系采用射线法,以点为端点作水平射线,如果该射线与区域的交点数为奇数,则点在区域内,如为偶数,则点在区域外。\n所述的车辆越界统计过程中,一次连续的越界状态称为一次越界,越界状态持续的时间为此次越界时长,处于越界状态下的距离之和为越界距离。\n本发明的用存储过程实现车辆越界判断与统计的方法,数据库既接受网络层的上传数据,又提供业务层的数据统计,经过区域越界判断和统计后,可以得到某单个车辆,某车队全部车辆或某公司全部车辆的区域越界情况,如果客户需要查看详细的越界路线,可以进一步查询越界轨迹。由于数据库内的车辆多,行驶数据大,需要数据库有较强的数据处理能力,能够快速准确的判断和统计出车辆的越界情况。\n本发明的有益效果是,由于采用了建立一个包括有业务层、数据层、网络层的服务中心,且服务中心的业务层和网络层对数据层中数据库的操作皆通过存储过程完成,车辆的车载终端定时向服务中心上传包括有距离、司机编号、时间、经度、纬度等信息的行驶数据,服务中心的网络层对车载终端上传的数据经解析后存储在数据层的数据库的行驶数据表中,并将车辆管理者在服务中心提供的网页界面中所录入的限定区域参数存储在数据库的限定区域表中,服务中心在接受车辆管理者的车辆越界判断与统计请求时,根据车辆管理者输入的车辆ID、统计时间段和限定区域编号,从数据层的实时数据库中调取行驶数据表和限定区域表,由区域越界判断模块对车辆是否越界进行判定,区域越界统计模块则根据区域越界判断的结果来统计车辆越界情况,并显示该车辆在设置的时间段内的每次越界的起止时间、越界时长、越界距离、相应的司机姓名。这种利用SQL Server 2005的强大功能,实现在数据库内计算大批车辆轨迹点的越界状况,进而统计越界次数和越界时长及越界期间的行驶距离,然后将统计结果返回至业务层,达到提高速度,减少数据传输量的目的,从而缩短了系统的处理时间。\n附图说明\n以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种用存储过程实现车辆越界判断与统计的方法不局限于实施例。\n图1是实现本发明方法的服务中心的构成示意图;\n图2是实现本发明方法的车辆越界统计过程的流程图。\n具体实施方式\n参见图1、图2所示,图1为实现本发明方法的服务中心的构成示意图。\n服务中心结构至少包括:\n一业务层11,用于提供Web服务、处理业务流程;\n一数据层12,包含用于存储信息的静态数据库和进行通讯的实时数据库;\n一网络层13,用于发送和接收车载终端的数据包;\n数据层12上联业务层11、下接网络层13,业务层11主要向数据库写指令、参数和档案信息(静态数据库),查询指令应答、车辆行驶数据等;网络层13主要向数据库读各种指令,写车台上传的相关数据。业务层11和网络层13对数据库的操作皆通过存储过程完成,以提高速度。\n服务中心的业务层11、数据层12、网络层13,每一个层次都是一个逻辑功能层次,在物理上一个层的功能可以在一台或多台计算机上实现,也可以一台计算机实现多个层次的功能(但是,如果系统要求支持大量用户,这种情况一般不考虑)。中心系统对外部网络有两个出口,一个是Web服务器端接受来自种终端的用户业务操作,一个是通讯网关对外部网络提供静态地址,由车载设备登陆INTENET后连接;中心系统的各个物理设备则是在局域网中搭建实现。\n网络层13为整个中心系统的最底层,主要负责与车台进行无线通信,包括对移动台发送控制命令,以及接收移动台上传的实时数据包,网络层可架设一台通讯服务器实现。车台可以通过三种方式与中心通讯:GPRS、GSM、电话连接。\n数据层12将数据库服务器分为两类:静态数据库服务器和实时数据库服务器。实时数据是指执行监控、调度、位置查询、报警等操作后车台上报的数据,其它诸如企业信息和车台属性等为静态数据。实时数据库服务器负责车台数据的采集,缓存和转存等,网络层13只需连接数据层12的实时数据库,从下发指令表中收集所有的指令发送,并将应答数据填充到各个业务表中。静态数据库服务器记录车辆信息、车台信息、员工信息、企业信息、配置信息等静态信息,一般由业务层11访问控制,业务层11组件根据用户操作调用相应的存储过程来操作数据表。\n业务层11主要职责即接收客户端请求,将要发送的指令数据直接写入实时数据库业务表;从数据库中取出已整理分类的数据,根据客户端需求进行数据分发,将数据送往发送请求的客户端。\n本发明主要利用SQL Server 2005的强大功能,用Visual Studio2005的C#语言写存储过程,所以需要有SQL Server 2005和Visual Studio2005软件及能让上述软件正常运行所需要的硬件环境。\n安装SQL Server 2005和Visual Studio2005软件后,就可以打开VisualStudio2005新建项目,选用C#语言,选择数据库项目,在弹出的添加数据库引用窗口中新建数据库引用,就可以对应到相应的数据库,当用C#写的存储过程编译后,系统会自动把该存储过程添加到所引用的数据库中,之后运行该存储过程就跟运行SQL语言编写的存储过程一样了。\n用C#写存储过程类似于一般的函数,可有可无输入输出,不过输入的参数只能是SQL语言中所包含的数据类型或自定义的数据类型,不能为数据集、数组等。\n在SQL Server中利用SQL语言建立行驶数据表,建立语句如下:\ncreate table D1_Move_Data\n(ID int identity(1,1)primary key,\nFrameSequence tinyint,\nDistance smallint,\nTheTime datetime,\nLongitude float,\nLatitude float,\nSpeed tinyint,\nDirection smallint,\nIsEmpty bit,\nGateState bit,\nVoltageState bit,\nValidity bit,\nSaving bit,\nPrivacy bit,\nDimension bit,\nTardiness bit,\nSuddenBrake bit,\nACC bit,\nAverageSpeedPerMin tinyint)\n在SQL Servr中利用SQL语言建立越界限定区域表,建立语句如下:\ncreate table OutsideArea\n(ID int identity(1,1)primary key,\nCorporationID int,\nAreaNo tinyint,\nPointCount tinyint,\nX1 float,\nY1 float,\nX2 float,\nY2 float,\nX3 float,\nY3 float,\nX4 float,\nY4 float,\nX5 float,\nY5 float,\nX6 float,\nY6 float,\nX7 float,\nY7 float,\nX8 float,\nY8 float,\nX9 float,\nY9 float,\nX10 float,\nY10 float)\n本发明的用存储过程实现车辆越界判断与统计的方法,在数据库中包含有区域越界判断模块和区域越界统计模块。\n区域越界判断模块用于判断车辆是否越界,区域越界判断是根据每条车辆行驶记录中的经度和纬度构成的点与该车辆的限定区域比较,如果点在区域内则未越界,否则为越界。判断点与区域的关系采用射线法,即以点为端点作水平射线,如果该射线与区域的交点数为奇数,则点在区域内,如为偶数,则点在区域外。\n区域越界统计模块用于统计车辆越界情况,区域越界统计是根据区域越界判断的结果来计算越界次数、越界时长和越界期间的行驶距离。一次连续的越界状态称为一次越界,越界状态持续的时间为此次越界时长,处于越界状态下的距离之和为越界距离。越界统计模块需要输入车辆ID、统计的起始时间和终止时间和相应的限定区域编号,输出为该车在这段时间内的每次越界的起止时间、越界时长、越界距离、相应的司机姓名。\n本发明的用存储过程实现车辆越界判断与统计的方法,数据层12的数据库既接受网络层13的上传数据,又提供业务层11的数据统计,经过区域越界判断和统计后,可以得到某单个车辆,某车队全部车辆或某公司全部车辆的区域越界情况,如果客户需要查看详细的越界路线,可以进一步查询越界轨迹。\n由于数据库内的车辆多,行驶数据大,需要数据库有较强的数据处理能力,能够快速准确的判断和统计出车辆的越界情况。\n下面结合图1、图2来说明本发明的一种用存储过程实现车辆越界判断与统计的方法,包括如下步骤:\na.建立一个包括有用于提供Web服务、处理业务流程的业务层11、包含用于存储信息的静态数据库和进行通讯的实时数据库的数据层12、用于发送和接收车载终端的数据包的网络层13的服务中心;服务中心的业务层11和网络层13对数据层12中数据库的操作皆通过存储过程完成;\nb.由车辆的车载终端定时向服务中心上传包括有距离、司机编号、时间、经度、纬度等信息的行驶数据;\nc.服务中心的网络层13对车载终端上传的数据经解析后存储在数据层12的实时数据库的行驶数据表中;\n行驶数据表的结构如表1所示:\n 表1行驶数据表结构\n 字段名 字段类型 说明 ID int 记录号,自增 FrameSequence tinyint 帧序号 Distance smallint 距离 DriverNo smallint 司机编号 TheTime datetime 时间 Longitude float 经度 Latitude float 纬度\n 字段名 字段类型 说明 Speed tinyint 速度 Direction smallint 方向 IsEmpty bit 是否为空车 GateState bit 车门状态 VoltageState bit 电平电压状态 Validity bit 有效性 Saving bit 省电模式 Privacy bit 私密性 Dimension bit 二维或三维 Tardiness bit 怠速状态 SuddenBrake bit 急刹状态 ACC bit ACC状态 AverageSpeedPerMin tinyint 平均速度\n行驶数据表由字段名、字段类型、说明构成,内容包括记录号、帧序号、距离、司机编号、时间、经度、纬度、速度、方向、是否为空车、车门状态、电平电压状态、有效性、省电模式、私密性、二维或三维、怠速状态、急刹状态、ACC状态、平均速度;\nd.车辆管理者通过客户端软件或是使用浏览器登录服务中心所提供的网页,在服务中心提供的网页界面中录入限定区域参数;服务中心的业务层11将其存入数据层12的实时数据库中的限定区域表;\n限定区域表的结构如表2所示:\n 表2限定区域表结构\n 字段名 字段类型 说明 ID int 记录号,自增\n 字段名 字段类型 说明 CorporationID int 公司ID AreaNo tinyint 区域编号 PointCount tinyint 区域边数 X1 float 第一点经度 Y1 float 第一点纬度 X2 float 第二点经度 Y2 float 第二点纬度 X3 float 第三点经度 Y3 float 第三点纬度 X4 float 第四点经度 X5 float 第五点纬度 Y5 float 第五点经度 X6 float 第六点纬度 Y6 float 第六点经度 X7 float 第七点经度 Y7 float 第七点纬度 X8 float 第八点经度 Y8 float 第八点纬度 X9 float 第九点经度 Y9 float 第九点纬度 X10 float 第十点经度 Y10 float 第十点纬度\n限定区域表由字段名、字段类型、说明构成,内容包括记录号、公司ID、区域编号、区域边数和三至十个点的经、纬度数据;车辆的限定区域表以公司为单位存入,每个区域最多支持10边形;\ne.服务中心的业务层11接受车辆管理者的车辆越界判断与统计请求,根据车辆管理者输入的车辆ID、统计时间段和限定区域编号,将参数传给数据库中相应的存储过程;\nf.服务中心的数据层12的实时数据库的区域越界判断模块逐条读取行驶数据,根据每条车辆行驶记录中的经度和纬度构成的点与该车辆的限定区域比较,如果点在区域内则未越界,否则为越界;\ng.服务中心的数据层12的实时数据库的区域越界统计模块根据区域越界判断的结果来统计车辆越界情况;\nh.服务中心的业务层11将统计的所述车辆的越界情况显示在车辆管理者的终端设备上,包括显示该车辆在设置的时间段内的每次越界的起止时间、越界时长、越界距离、相应的司机姓名。\n其中,车辆越界统计过程包括如下步骤:\ng1.根据车辆ID和起止时间找出对应的行驶数据,根据区域编号找出对应的限定区域,如流程图的框201所示;\ng2.初始化时间t1,越界状态设置f=false,越界次数设置M=0,越界时长设置L=0,越界距离设置D=0,如流程图的框202所示;\ng3.读行驶数据,根据经纬度和限定区域判断越界状态S,如流程图的框203所示,如点在区域外,记为S=true,否则,记为S=false;\ng4.判断S=true,f=false是否成立,如流程图的框204所示;判断为是,则进入下一步骤,判断为否,则进入步骤g6;\ng5.置f=ture,t1=T(TheTime字段),M=M+1,而后转入步骤g10,如流程图的框205所示;\ng6.再判断S=true,f=true是否成立,如流程图的框206所示;判断为是,则进入下一步骤,判断为否,则进入步骤g8;\ng7.置D=D+distance(记录中的距离字段值),而后转入步骤g10,如流程图的框207所示;\ng8.再判断S=false,f=true是否成立,如流程图的框208所示;判断为是,则进入下一步骤,判断为否,则进入步骤g10;\ng9.置f=false,L=L+(T-t1),将起始时间t1、终止时间TheTime、越界次数M、越界时长L和越界距离D存为一条统计记录,如流程图的框209所示;\ng10.判断是否为最后一条行驶记录,如流程图的框210所示,判断为是,则进入下一步骤,判断为否,则返回步骤g3;\ng11.将统计记录输出至业务层11,如流程图的框211所示。\n下面简单说明本发明方法的优越性。假如要查询的车辆在输入的起止时间内有5000条行驶数据,通过判断统计共3次越界,那么输出的记录集中只有3条记录,其输出量远远小于5000条记录的输出量。由于此存储过程采用程序语言C#编写,所以其判断和统计速度跟在外部用程序来判断统计的速度大致相同。这样有效的减少了传输流量,有利于节约资源,提高效率。\n上述实施例仅用来进一步说明本发明的用存储过程实现车辆越界判断与统计的方法,但本发明并不局限于实施例,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均落入本发明技术方案的保护范围内。
法律信息
- 2010-10-13
- 2009-06-24
- 2008-06-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2005-07-21
| | |
2
| |
2006-11-08
|
2005-09-27
| | |
3
| | 暂无 |
2006-02-27
| | |
4
| |
2001-04-04
|
2000-08-31
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |