位置数据上传方法、里程计算方法及装置与流程

文档序号:16131325发布日期:2018-12-01 00:21阅读:531来源:国知局

本发明属于计算机网络领域,具体地说,涉及一种位置数据上传方法及装置。

背景技术

在互联网技术支持下,网约车及线上货运车等网络运营车辆得到了快速地发展和应用。现有网络运行车辆服务架构包括用户端、服务端、司机端。用户通过用户端生成订单发送至服务端,服务端确定用户所在位置及用车需求后将订单发布至司机端由司机通过司机端进行抢单或由服务端根据司机所在位置进行派单。

现有技术中,为了获取司机端的实时位置数据以便于根据司机端的所在位置发布订单至相应的司机端,在司机端启动运行后,即开启定位服务并通过定位服务每间隔5分钟进行一次位置定位并上传gps定位数据至服务端。而司机端接单后会开启里程计算服务,里程计算服务会每间隔1秒钟进行一次位置定位并上传gps定位数据至服务端,由服务端根据里程计算服务持续上传的gps定位数据计算司机的服务里程进行计价。由此可知,定位服务以及里程计算服务均会进行gps定位并上传gps数据,这就造成司机端将gps定位数据进行重复上传,造成流量资源的浪费,增加了司机的运营成本。



技术实现要素:

有鉴于此,本发明提供了一种位置数据上传方法、一种里程计算方法及装置,避免了司机端将gps定位数据进行重复上传,造成流量和资源的损耗。

为了解决上述技术问题,本发明提供了一种位置数据上传方法,包括:

判断司机端是否处于订单服务状态;

如果司机端未处于订单服务状态,开启定位服务;

通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置;

如果所述司机端处于订单服务状态,关闭所述定位服务并开启里程计算服务;

通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据;

将连续获得的多个第二定位数据进行压缩打包获得位置数据包;

上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

优选地,所述将连续获得的多个第二定位数据进行压缩打包获得位置数据包,包括:

将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码,将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包。

优选地,所述上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程,包括:

每间隔第三时间上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述第三间隔时间内获取的多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

优选地,所述将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码,将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包,包括:

确定所述连续获得的多个第二定位数据中的每一个第二定位数据的纬度值和经度值;

按照预设数据格式将所述每一个第二定位数据的维度值和经度值进行数据编码;

将所述多个经过数据编码的第二定位数据进行压缩打包,获得所述位置数据包。

优选地,所述将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码,将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包,包括:

确定所述连续获得的第二定位数据中的每一个第二定位数据相对于其前一个第二定位数据的纬度偏移量和经度偏移量;

按照预设数据格式将所述每一个第二定位数据的维度偏移量和经度偏移量进行数据编码;

将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包。

优选地,所述如果司机端未处于订单服务状态,开启定位服务包括:

如果司机端未处于订单服务状态,判断所述司机端是否处于上班状态;

如果是,开启所述定位服务;

如果否,关闭所述定位服务。

本申请提供了一种里程计算方法,包括:

接收所述司机端发送的位置数据包;其中,所述位置数据包为将连续获得的多个第二定位数据进行压缩打包获得;所述第二定位数据为所述司机端处于订单服务状态时,关闭所述定位服务并开启里程计算服务;通过所述里程计算服务每间隔第二预设时间进行一次位置定位获得的;

基于所述位置数据包,解压缩获得所述多个第二定位数据;

判断所述位置数据包中的多个定位数据是否处于同一直线上;

如果是,基于所述位置数据包中的第一个第二定位数据和最后一个第二定位数据计算所述行驶里程;

如果否,确定所述多个第二定位数据中的拐点位置数据;其中,所述拐点位置数据为所述司机行驶过程中出现转折时的第二定位数据;

基于所述第一个第二定位数据、所述拐点位置数据及所述最后一个第二定位数据计算所述行驶里程。

本申请还提供了一种位置数据上传装置,包括:

第一判断模块,用于判断司机端是否处于订单服务状态;如果否,触发第一服务模块;如果是,触发第二服务模块;

所述第一服务模块,用于开启定位服务;

第一定位数据获取模块,用于通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置;

所述第二服务模块,用于关闭所述定位服务并开启里程计算服务;

第二定位数据获取模块,用于通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据;

位置数据包获取模块,用于将连续获得的多个第二定位数据进行压缩打包获得位置数据包;

上传模块,用于上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

优选地,所述位置数据包获取模块包括:

编码单元:将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码;

打包单元:将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包。

优选地,所述上传模块具体用于:

每间隔第三时间上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述第三间隔时间内获取的多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

优选地,所述编码单元具体用于:

确定所述连续获得的多个第二定位数据中的每一个第二定位数据的纬度值和经度值;

按照预设数据格式将所述每一个第二定位数据的维度值和经度值进行数据编码。

优选地,所述编码单元具体用于:

确定所述连续获得的第二定位数据中的每一个第二定位数据相对于其前一个第二定位数据的纬度偏移量和经度偏移量;

按照预设数据格式将所述每一个第二定位数据的维度偏移量和经度偏移量进行数据编码。

优选地,所述第一服务模块具体用于:

判断所述司机端是否处于上班状态;

如果是,开启所述定位服务;

如果否,关闭所述定位服务。

本申请还提供了一种里程计算装置,包括:

位置数据包接收模块,用于接收所述司机端发送的位置数据包;其中,所述位置数据包为将连续获得的多个第二定位数据进行压缩打包获得;所述第二定位数据为所述司机端处于订单服务状态时,关闭所述定位服务并开启里程计算服务;通过所述里程计算服务每间隔第二预设时间进行一次位置定位获得的;

解压缩模块,用于基于所述位置数据包,解压缩获得所述多个第二定位数据;

第二判断模块用于,判断所述位置数据包中的多个定位数据是否处于同一直线上;如果是,触发第一计算模块;如果否,触发拐点位置数据确定模块;

所述第一计算模块,用于基于所述位置数据包中的第一个第二定位数据和最后一个第二定位数据计算所述行驶里程;

所述拐点位置数据确定模块,用于确定所述多个第二定位数据中的拐点位置数据;其中,所述拐点位置数据为所述司机行驶过程中出现转折时的第二定位数据;

第二计算模块,用于基于所述第一个第二定位数据、所述拐点位置数据及所述最后一个第二定位数据计算所述行驶里程。

与现有技术相比,本发明可以获得包括以下技术效果:

本发明提供了一种位置数据上传方法、一种里程计算方法及装置。本发明通过判断所述司机端的订单服务状态确定开启不同的定位数据上传模式。当司机端未处于订单服务状态时,仅通过定位服务即可获取第一定位数据满足对司机的定位需求;当司机端处于订单服务状态时,由于里程计算服务中同样会上传第二定位数据,因此可以关闭定位服务,避免了同一位置数据多次上传,同时通过将多个第二定位数据进行压缩打包,获得位置数据包可以大大压缩上传的数据量从而进一步降低数据流量的损耗。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种位置数据上传方法的一个实施例的流程图;

图2是本发明实施例的一种位置数据上传方法的另一个实施例的流程图;

图3是本发明实施例的一种里程计算方法的一个实施例的流程提图;

图4是本发明实施例的一种位置数据上传装置的一个实施例的结构示意图;

图5是本发明实施例的一种位置数据上传装置的另一个实施例的结构示意图;

图6是本发明实施例的一种里程计算装置的一个实施例的结构示意图。

具体实施方式

以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决技术问题,基本达到技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表第一装置可直接电性耦接于第二装置,或通过其他装置或耦接手段间接地电性耦接至第二装置。说明书后续描述为实施本发明的较佳实施方式,然描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。

为了解决司机端将gps定位数据进行重复上传,造成流量和资源的损耗的技术问题,发明人经过一系列研究提出了本申请实施例的技术方案。本发明提供了一种位置数据上传方法、一种里程计算方法及装置。本发明通过判断所述司机端的订单服务状态确定开启不同的定位数据上传模式。当司机端未处于订单服务状态时,仅通过定位服务即可获取第一定位数据满足对司机的定位需求;当司机端处于订单服务状态时,由于里程计算服务中同样会上传第二定位数据,因此可以关闭定位服务,避免了同一位置数据多次上传,同时通过将多个第二定位数据进行压缩打包,获得位置数据包可以大大压缩上传的数据量从而进一步降低数据流量的损耗。

下面将结合附图对本申请技术方案进行详细描述。

图1是本发明实施例的一种位置数据上传方法的一个实施例的流程图。该方法应用于司机端,该方法可以包括:

101:判断司机端是否处于订单服务状态,如果是,执行步骤102;如果否,执行步骤104。

现有网络运行车辆服务架构包括用户端、服务端、司机端。用户通过用户端生成订单发送至服务端,服务端确定用户所在位置及用车需求后将订单推送至司机端,司机通过司机端进行抢单或由服务端根据司机所在位置进行派单。因此,服务端在进行派单或订单推送时需要获取司机的实时位置。

现有技术中,由于在司机端启动运行后,即开启定位服务并通过定位服务每间隔5分钟进行一次位置定位并上传gps定位数据至服务端。而司机端接单后会开启里程计算服务,里程计算服务会每间隔1秒钟进行一次位置定位并上传gps定位数据至服务端,由服务端根据里程计算服务持续上传的gps定位数据计算司机的行驶里程进行计价。这就造成司机端将gps定位数据进行重复上传,由于司机端上传定位数据至服务端,需要耗费司机端的数据流量,因此造成不必要的流量资源的浪费,增加了司机的运营成本。

102:开启定位服务。

103:通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置。

实际中,为了避免gps定位数据重复上传,可以在司机端启动运行后,首先判断司机端是否处于订单服务状态。如果司机端未处于订单服务状态,则仅开启定位服务,该第一预设时间可以根据实际服务端定位数据刷新频率确定,例如仍为5分钟进行一次位置定位,获得第一定位数据并将第一定位数据上传到服务端。服务端每5分钟刷新一次司机端的定位数据,并根据当前定位数据推送位于服务范围内的订单至司机端。司机端根据订单推送情况选择接单或抢单,并在接单后处于订单服务状态。

104:关闭所述定位服务并开启里程计算服务。

105:通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据。

106:将连续获得的多个第二定位数据进行压缩打包获得位置数据包。

107:上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

司机端接单处于订单服务状态后,必须要在当前订单完成后才可以接下一个订单进行服务,因此可触发在开启里程计算服务的同时关闭定位服务。但在司机处于订单服务状态时仍需要对司机端进行位置定位即便进行行驶里程的计算,例如,司机端所在的服务车辆上会有打表器,打表器会根据服务端计算的行驶里程跳表计价。

里程计算服务是通过实时对司机端进行位置定位获得第二定位数据,并根据第二定位数据计算司机端的行驶里程并可以记录行驶路线。实际中,服务车辆实际行驶速度可以按照60公里/小时计算,服务车辆的打表器按每行驶0.1公里跳一次表进行计价,因此,便于里程计算并节省上传的数据流量。司机端可以仍每1秒钟进行一次位置定位,但不再一秒上传一次第二定位数据至服务端,而是可以将每10秒内连续获得的10个第二定位数据进行压缩打包为位置数据包后上传至服务端。经过压缩打包后获得的位置数据包的数据量大大减小,因此降低了里程计算服务过程中的司机端流量的损耗。服务端根据获取的位置数据包可以解压缩后获得连续的10个第二定位数据,并根据该连续的10个定位数据计算服务车辆的十秒内的行驶里程。

当然,本发明实施例并不限定于在里程计算服务中,每间隔1秒进行一次位置定位获得一个第二定位数据,然后将10秒内连续获得的10个第二定位数据进行压缩打包获得一个位置数据包,实际中,可根据不同的定位精度,里程计算精度及打表器或计价器的精度进行设定,在此不做具体限定。

可选地,在某些实施例中,所述如果司机端未处于订单服务状态,开启定位服务包括:

如果司机端未处于订单服务状态,判断所述司机端是否处于上班状态;

如果是,开启所述定位服务;

如果否,关闭所述定位服务。

实际应用中,为了进一步避免造成司机端数据流量的浪费,在司机端未处于订单服务状态时,还可以判断司机是否处于上班状态。由于司机在不工作的情况下,司机端可能仍处在开启状态,这时定位服务就会执行位置定位,继续上传第一定位数据至服务端,但此时司机不会再接单。因此,可以通过在司机端设定工作时间段,判断当前时间是否处于工作时间段内,如果是则认为司机端处于上班状态,继续开启定位服务,以便于服务端向司机端推送订单;如果未处于工作时间段,认为司机端未处于上班状态,则关闭定位服务进行,避免造成司机端的流量损耗。

本申请实施例中,过判断所述司机端的订单服务状态确定开启不同的定位数据上传模式。当司机端未处于订单服务状态时,仅通过定位服务即可获取第一定位数据满足对司机的定位需求;当司机端处于订单服务状态时,由于里程计算服务中同样会上传第二定位数据,因此可以关闭定位服务,避免了同一位置数据多次上传,同时通过将多个第二定位数据进行压缩打包,获得位置数据包可以大大压缩上传的数据量从而进一步降低数据流量的损耗。

图2是本发明实施例的一种位置数据上传方法的另一个实施例的流程图。该方法应用于司机端,该方法可以包括:

201:判断司机端是否处于订单服务状态,如果是,执行步骤202;如果否,执行步骤204。

202:开启定位服务。

203:通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置。

204:关闭所述定位服务并开启里程计算服务。

205:通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据。

206:将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码。

207:将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包。

208:每间隔第三时间上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述第三间隔时间内获取的多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

实际中,为了有效地降低位置数据包的数据量进一步降低司机端数据流量的损耗,可以按照预设的数据格式对第二定位数据进行数据编码和拼装,通过压缩打包可以大大降低位置数据包的数据量。

实际中,该第三时间是根据进行压缩打包为一个位置数据包的第二定位数据的个数确定的。例如,每间隔1秒进行一次位置定位获得一个第二定位数据,如果每连续10个第二位置定位数据进行压缩打包为一个位置数据包,则该第三时间为10秒,即每十秒获得一个位置数据包并上传至服务端。

本发明实施例中给出了第二定位数据的编码格式,如下所示。

可选地,在某些实施例中,所述将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码,将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包,包括:

确定所述连续获得的多个第二定位数据中的每一个第二定位数据的纬度值和经度值;

按照预设数据格式将所述每一个第二定位数据的维度值和经度值进行数据编码。

实际每一个位置数据包中都会包括当前服务的订单号,司机id,以及通过位置定位获得每一个定位点对应的第二定位数据的纬度值和经度值,以及当前位置的卫星数量,行驶速度,行驶方向及定位时间等。因此,第二定位数据的编码格式可以按照:<订单号>long+<司机id>long+<gps组序列号>int+<第一个点的维度值>double+<第一个点的经度值>double+<第一个点的定位精度>float+<第一个点的卫星数量>short+<第一个点的行驶方向值>float+<第一个点的时间>long+<第二个点的维度值>double+<第二个点的经度值>double+<第二个点的定位精度>float+<第二个点的卫星数量>short+<第二个点的行驶方向值>float+<第二个点的时间>long+.......<第n个点的维度值>double+<第n个点的经度值>double+<第n个点的定位精度>float+<第n个点的卫星数量>short+<第n个点的行驶方向值>float+<第n个点的时间>long。实际中,n表示压缩为一个位置数据包中包含的连续的第二定位数据的个数。

上述每种数据类型都转化为十六进制进行编码,并且按照上述顺序拼装为串,其中,long占8位,double占8位,float占4位,int占4位,short占2位。这就可以在位居数据包的数据量减小的同时,保证了上传至服务端中对司机端定位的精确度。当然,根据服务端计算行驶里程的精确度的不同,该预设数据格式并不限于上述方式可以根据实际精度需求进行设定,在此不做具体限定。

可选地,在某些实施例中,为了进一步降低位置数据包的数据量,所述将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码,将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包,包括:

确定所述连续获得的第二定位数据中的每一个第二定位数据相对于其前一个第二定位数据的纬度偏移量和经度偏移量;

按照预设数据格式将所述每一个第二定位数据的维度偏移量和经度偏移量进行数据编码。

当在确定第一个定位点的第二定位数据的经度值和纬度值后,第二的定位点的第二定位数据的经度值和维度值可以与第一个定位点的经度值和位置的差值来表示。

经度偏移量表示为:经度diff=(当前定位点的经度值-前一个定位点的经度值)*1000000;

维度偏移量表示为:维度diff=(当前定位点的纬度值-前一个定位点的纬度值)*1000000;

时间偏移量表示为:时间diff=(当前定位点时间-前一个定位点时间)/毫秒。

即第二定位数据的编码格式可以按照:<订单号>long+<司机id>long+<gps组序列号>int+<第一个点的维度diff>short+<第一个点的经度diff>short+<第一个点的定位精度>float+<第一个点的卫星数量>short+<第一个点的行驶方向值>float+<第一个点的时间diff>short+<第二个点的维度diff>short+<第二个点的经度diff>short+<第二个点的定位精度>float+<第二个点的卫星数量>short+<第二个点的行驶方向值>float+<第二个点的时间diff>short+.......<第n个点的维度diff>short+<第n个点的经度diff>short+<第n个点的定位精度>float+<第n个点的卫星数量>short+<第n个点的行驶方向值>float+<第n个点的时间diff>short。

可以看出,通过经度偏移量及维度偏移量对第二定位数据进行编码和数据拼装,使得原来需要占用8位(long)的经度值和纬度值,调整为仅需要占2位(short)经度偏移量和维度偏移量,大大减少了每一个第二定位数据占用的数据位置,从而进一步降低了位置数据包的数据量。

可选地,实际中服务端进行里程计算,可以根据位置数据包中每一个定位数据的经度值和纬度值计算的。如果第三时间内采集的第二位置数据对应的定位点位于同一直线上,则认为服务车辆在直线行驶,因此也可以仅将第三时间内采集的第一个定位点及最后一个定位点分别对应的第二位置数据进行压缩打包即可计算该第三时间内的行驶里程。当第三时间内对应的多个定位点不在一条直线上,则表明服务车辆不是直线行驶,司机端可根据第三时间内获取的第二定位数据确定服务车辆的拐点对应的定位点,将第一定位点,拐点及最后一个定位点进行压缩打包即可计算第三时间内的行驶里程。这样可以进一步降低位置数据包的数据量,同时保证了行驶里程的计算精度。

本申请实施例,通过按照不同的预设编码格式对第二定位数据进行编码,并将按照预设编码格式进行编码拼装的多个第二定位数据进行压缩打包获得位置数据包,进一步降低位置数据包的数据量同时保证了行驶里程的计算精度,避免了资源的重复浪费。

图3是本发明实施例的一种里程计算方法的一个实施例的流程图。该方法应用于服务端,该方法可以包括;

301:接收所述司机端发送的位置数据包。

其中,所述位置数据包为将连续获得的多个第二定位数据进行压缩打包获得;所述第二定位数据为所述司机端处于订单服务状态时,关闭所述定位服务并开启里程计算服务;通过所述里程计算服务每间隔第二预设时间进行一次位置定位获得的。

302:基于所述位置数据包,解压缩获得所述多个第二定位数据。

303:判断所述位置数据包中的多个定位数据是否处于同一直线上;如果是,执行步骤304;如果否,执行步骤305。

304:基于所述位置数据包中的第一个第二定位数据和最后一个第二定位数据计算所述行驶里程。

305:确定所述多个第二定位数据中的拐点位置数据;其中,所述拐点位置数据为所述司机行驶过程中出现转折时的第二定位数据。

306:基于所述第一个第二定位数据、所述拐点位置数据及所述最后一个第二定位数据计算所述行驶里程。

实际中,服务端接收到司机端发送的位置数据包后,根据约定的预设编码格式对位置数据包进行解码获得多个第二定位数据,并根据第二定位数据计算该第三时间内的行驶里程以进行计价。

为了提高计算效率节省计算时间,可以通过二值法判断该多个第二定位数据对应的定位点是否位于同一直线上,如果是,则直接根据第一个定位点对应的第二定位数据及最后一个定位对应的第二定位数据的差值计算行驶里程即可,不需要将每相邻两个定位对应的第二定位数据做差,计算连续距离差。对于不再同一直线上的定位点则定义为服务车辆的拐点,并确定拐点对应的拐点位置数据。此时,服务端根据第一个定位点与拐点之间对应的位置数据的距离差及拐点与最后一个定位点之间对应的位置数据的距离差,计算行驶里程。实际中拐点可以是多个,根据第三时间的长短可以确定有效拐点个数,当拐点存在多个时还需要计算相邻拐点之间的位置数据的距离差,以计算获得行驶里程。

本申请实施例中,通过该里程计算方法可以大大提高行驶里程的计算效率,同时保证了行驶里程的计算精度。服务端根据计算的行驶里程及时反馈至司机端,以便司机端的打表器或计价器及时根据行驶里程进行计价,进一步提高了服务效率和服务质量。

图4是本发明实施例的一种位置数据上传装置的一个实施例的结构示意图。该装置应用于司机端,该装置可以包括:

第一判断模块401,用于判断司机端是否处于订单服务状态,触发第一服务模块402;如果是,触发第二服务模块404。

第一服务模块402,开启定位服务。

第一定位数据获取模块403,用于通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置。

第二服务模块404,用于关闭所述定位服务并开启里程计算服务。

第二定位数据获取模块405,用于通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据。

位置数据包获取模块406,用于将连续获得的多个第二定位数据进行压缩打包获得位置数据包。

上传模块407,用于上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

司机端接单处于订单服务状态后,必须要在当前订单完成后才可以接下一个订单进行服务,因此可触发在开启里程计算服务的同时关闭定位服务。但在司机处于订单服务状态时仍需要对司机端进行位置定位即便进行行驶里程的计算,例如,司机端所在的服务车辆上会有打表器,打表器会根据服务端计算的行驶里程跳表计价。

里程计算服务是通过实时对司机端进行位置定位获得第二定位数据,并根据第二定位数据计算司机端的行驶里程并可以记录行驶路线。实际中,服务车辆实际行驶速度可以按照60公里/小时计算,服务车辆的打表器按每行驶0.1公里跳一次表进行计价,因此,便于里程计算并节省上传的数据流量。司机端可以仍每1秒钟进行一次位置定位,但不再一秒上传一次第二定位数据至服务端,而是可以将每10秒内连续获得的10个第二定位数据进行压缩打包为位置数据包后上传至服务端。经过压缩打包后获得的位置数据包的数据量大大减小,因此降低了里程计算服务过程中的司机端流量的损耗。服务端根据获取的位置数据包可以解压缩后获得连续的10个第二定位数据,并根据该连续的10个定位数据计算服务车辆的十秒内的行驶里程。

当然,本发明实施例并不限定于在里程计算服务中,每间隔1秒进行一次位置定位获得一个第二定位数据,然后将10秒内连续获得的10个第二定位数据进行压缩打包获得一个位置数据包,实际中,可根据不同的定位精度,里程计算精度及打表器或计价器的精度进行设定,在此不做具体限定。

可选地,在某些实施例中,所述第一服务模块402具体可以用于:

判断所述司机端是否处于上班状态;

如果是,开启所述定位服务;

如果否,关闭所述定位服务。

实际应用中,为了进一步避免造成司机端数据流量的浪费,在司机端未处于订单服务状态时,还可以判断司机是否处于上班状态。由于司机在不工作的情况下,司机端可能仍处在开启状态,这时定位服务就会执行位置定位,继续上传第一定位数据至服务端,但此时司机不会再接单。因此,可以通过在司机端设定工作时间段,判断当前时间是否处于工作时间段内,如果是则认为司机端处于上班状态,继续开启定位服务,以便于服务端向司机端推送订单;如果未处于工作时间段,认为司机端未处于上班状态,则关闭定位服务进行,避免造成司机端的流量损耗。

本申请实施例中,过判断所述司机端的订单服务状态确定开启不同的定位数据上传模式。当司机端未处于订单服务状态时,仅通过定位服务即可获取第一定位数据满足对司机的定位需求;当司机端处于订单服务状态时,由于里程计算服务中同样会上传第二定位数据,因此可以关闭定位服务,避免了同一位置数据多次上传,同时通过将多个第二定位数据进行压缩打包,获得位置数据包可以大大压缩上传的数据量从而进一步降低数据流量的损耗。

图5是本发明实施例的一种位置数据上传装置的另一个实施例的结构示意图。该装置应用于司机端,该装置可以包括:

第一判断模块501,用于判断司机端是否处于订单服务状态,触发第一服务模块502;如果是,触发第二服务模块504。

第一服务模块502,开启定位服务。

第一定位数据获取模块503,用于通过所述定位服务每间隔第一预设时间进行一次位置定位获得第一定位数据,并上传所述第一定位数据至服务端,以供所述服务端基于所述第一定位数据确定司机位置。

第二服务模块504,用于关闭所述定位服务并开启里程计算服务。

第二定位数据获取模块505,用于通过所述里程计算服务每间隔第二预设时间进行一次位置定位,获得第二定位数据。

位置数据包获取模块506,用于将连续获得的多个第二定位数据进行压缩打包获得位置数据包。

可选地,位置数据包获取模块506可以包括:

编码单元511:用于将连续获取的多个的第二定位数据中的每一个第二定位数据按照预设数据格式分别进行数据编码;

打包单元512:用于将所述多个按照所述预设格式编码的第二定位数据依次进行压缩打包,获得所述位置数据包。

上传模块507,用于上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

上传模块具体507具体可以用于:

每间隔第三时间上传所述位置数据包至所述服务端,以使所述服务端从所述位置数据包中解压缩获得所述第三间隔时间内获取的多个第二定位数据,基于所述多个第二定位数据计算所述司机端的行驶里程。

实际中,为了有效地降低位置数据包的数据量进一步降低司机端数据流量的损耗,可以按照预设的数据格式对第二定位数据进行数据编码和拼装,通过压缩打包可以大大降低位置数据包的数据量。

实际中,该第三时间是根据进行压缩打包为一个位置数据包的第二定位数据的个数确定的。例如,每间隔1秒进行一次位置定位获得一个第二定位数据,如果每连续10个第二位置定位数据进行压缩打包为一个位置数据包,则该第三时间为10秒,即每十秒获得一个位置数据包并上传至服务端。

本发明实施例中给出了第二定位数据的编码格式,如下所示。

可选地,在某些实施例中,所述编码单元511具体可以用于:

确定所述连续获得的多个第二定位数据中的每一个第二定位数据的纬度值和经度值;

按照预设数据格式将所述每一个第二定位数据的维度值和经度值进行数据编码。

实际每一个位置数据包中都会包括当前服务的订单号,司机id,以及通过位置定位获得每一个定位点对应的第二定位数据的纬度值和经度值,以及当前位置的卫星数量,行驶速度,行驶方向及定位时间等。因此,第二定位数据的编码格式可以按照:<订单号>long+<司机id>long+<gps组序列号>int+<第一个点的维度值>double+<第一个点的经度值>double+<第一个点的定位精度>float+<第一个点的卫星数量>short+<第一个点的行驶方向值>float+<第一个点的时间>long+<第二个点的维度值>double+<第二个点的经度值>double+<第二个点的定位精度>float+<第二个点的卫星数量>short+<第二个点的行驶方向值>float+<第二个点的时间>long+.......<第n个点的维度值>double+<第n个点的经度值>double+<第n个点的定位精度>float+<第n个点的卫星数量>short+<第n个点的行驶方向值>float+<第n个点的时间>long。实际中,n表示压缩为一个位置数据包中包含的连续的第二定位数据的个数。

上述每种数据类型都转化为十六进制进行编码,并且按照上述顺序拼装为串,其中,long占8位,double占8位,float占4位,int占4位,short占2位。这就可以在位居数据包的数据量减小的同时,保证了上传至服务端中对司机端定位的精确度。当然,根据服务端计算行驶里程的精确度的不同,该预设数据格式并不限于上述方式可以根据实际精度需求进行设定,在此不做具体限定。

可选地,在某些实施例中,所述编码单元512具体用于:

确定所述连续获得的第二定位数据中的每一个第二定位数据相对于其前一个第二定位数据的纬度偏移量和经度偏移量;

按照预设数据格式将所述每一个第二定位数据的维度偏移量和经度偏移量进行数据编码。

当在确定第一个定位点的第二定位数据的经度值和纬度值后,第二的定位点的第二定位数据的经度值和维度值可以与第一个定位点的经度值和位置的差值来表示。

经度偏移量表示为:经度diff=(当前定位点的经度值-前一个定位点的经度值)*1000000;

维度偏移量表示为:维度diff=(当前定位点的纬度值-前一个定位点的纬度值)*1000000;

时间偏移量表示为:时间diff=(当前定位点时间-前一个定位点时间)/毫秒。

即第二定位数据的编码格式可以按照:<订单号>long+<司机id>long+<gps组序列号>int+<第一个点的维度diff>short+<第一个点的经度diff>short+<第一个点的定位精度>float+<第一个点的卫星数量>short+<第一个点的行驶方向值>float+<第一个点的时间diff>short+<第二个点的维度diff>short+<第二个点的经度diff>short+<第二个点的定位精度>float+<第二个点的卫星数量>short+<第二个点的行驶方向值>float+<第二个点的时间diff>short+.......<第n个点的维度diff>short+<第n个点的经度diff>short+<第n个点的定位精度>float+<第n个点的卫星数量>short+<第n个点的行驶方向值>float+<第n个点的时间diff>short。

可以看出,通过经度偏移量及维度偏移量对第二定位数据进行编码和数据拼装,使得原来需要占用8位(long)的经度值和纬度值,调整为仅需要占2位(short)经度偏移量和维度偏移量,大大减少了每一个第二定位数据占用的数据位置,从而进一步降低了位置数据包的数据量。

可选地,实际中服务端进行里程计算,可以根据位置数据包中每一个定位数据的经度值和纬度值计算的。如果第三时间内采集的第二位置数据对应的定位点位于同一直线上,则认为服务车辆在直线行驶,因此也可以仅将第三时间内采集的第一个定位点及最后一个定位点分别对应的第二位置数据进行压缩打包即可计算该第三时间内的行驶里程。当第三时间内对应的多个定位点不在一条直线上,则表明服务车辆不是直线行驶,司机端可根据第三时间内获取的第二定位数据确定服务车辆的拐点对应的定位点,将第一定位点,拐点及最后一个定位点进行压缩打包即可计算第三时间内的行驶里程。这样可以进一步降低位置数据包的数据量,同时保证了行驶里程的计算精度。

本申请实施例,通过按照不同的预设编码格式对第二定位数据进行编码,并将按照预设编码格式进行编码拼装的多个第二定位数据进行压缩打包获得位置数据包,进一步降低位置数据包的数据量同时保证了行驶里程的计算精度,避免了资源的重复浪费。

图6是本发明实施例的一种里程计算装置的一个实施例的结构示意图。该装置应用于服务端,该装置可以包括:

位置数据包接收模块601,用于接收所述司机端发送的位置数据包。

其中,所述位置数据包为将连续获得的多个第二定位数据进行压缩打包获得;所述第二定位数据为所述司机端处于订单服务状态时,关闭所述定位服务并开启里程计算服务;通过所述里程计算服务每间隔第二预设时间进行一次位置定位获得的。

解压缩模块602,用于基于所述位置数据包,解压缩获得所述多个第二定位数据。

第二判断模块用于603,判断所述位置数据包中的多个定位数据是否处于同一直线上;如果是,触发第一计算模块604;如果否,触发拐点位置数据确定模块605。

第一计算模块604,用于基于所述位置数据包中的第一个第二定位数据和最后一个第二定位数据计算所述行驶里程。

拐点位置数据确定模块605,用于确定所述多个第二定位数据中的拐点位置数据;其中,所述拐点位置数据为所述司机行驶过程中出现转折时的第二定位数据。

第二计算模块606,用于基于所述第一个第二定位数据、所述拐点位置数据及所述最后一个第二定位数据计算所述行驶里程。

实际中,服务端接收到司机端发送的位置数据包后,根据约定的预设编码格式对位置数据包进行解码获得多个第二定位数据,并根据第二定位数据计算该第三时间内的行驶里程以进行计价。

为了提高计算效率节省计算时间,可以通过二值法判断该多个第二定位数据对应的定位点是否位于同一直线上,如果是,则直接根据第一个定位点对应的第二定位数据及最后一个定位对应的第二定位数据的差值计算行驶里程即可,不需要将每相邻两个定位对应的第二定位数据做差,计算连续距离差。对于不再同一直线上的定位点则定义为服务车辆的拐点,并确定拐点对应的拐点位置数据。此时,服务端根据第一个定位点与拐点之间对应的位置数据的距离差及拐点与最后一个定位点之间对应的位置数据的距离差,计算行驶里程。实际中拐点可以是多个,根据第三时间的长短可以确定有效拐点个数,当拐点存在多个时还需要计算相邻拐点之间的位置数据的距离差,以计算获得行驶里程。

本申请实施例中,通过该里程计算方法可以大大提高行驶里程的计算效率,同时保证了行驶里程的计算精度。服务端根据计算的行驶里程及时反馈至司机端,以便司机端的打表器或计价器及时根据行驶里程进行计价,进一步提高了服务效率和服务质量。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括要素的商品或者系统中还存在另外的相同要素

上述说明示出并描述了本发明的若干优选实施例,但如前,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1