掌桥专利:专业的专利平台
掌桥专利
首页

一种基于地图插件使用对比算法实现精准定位和导航方法及装置

文献发布时间:2023-06-19 18:58:26


一种基于地图插件使用对比算法实现精准定位和导航方法及装置

技术领域

本发明涉及电子信息技术领域,具体是一种基于地图插件使用对比算法实现精准定位和导航方法及装置。

背景技术

在我国,出于安全考虑,所有的公开的电子地图、导航设备,都需要加入国家保密插件,它是对真实坐标系统进行人为的加偏处理,实际上是按照特殊的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同,而加密后的坐标也常被人称为火星坐标系统(GCJ02),市面上其他地图的坐标系是在火星坐标系的基础上进行二次加密计算。

移动手机定位使用方式通常有卫星定位(GPS、北斗、伽利略)、混合定位(基站、WIFI)、外接SDK(百度、高德)定位。卫星定位就是通过手机中定位模块获取位置,优点是精确度高,信息全,特别是在户外等开阔地,缺点是强烈依赖卫星信号。混合定位是通过整合基站和WIFI的数据进行用户位置的确认,每个WIFI后面可能对应一套设备标记信息,定位服务提供商通过采集和采购的方式获取到定位地区的基站和WIFI覆盖数据存储到自己的定位库中,缺点是依赖基站和WIFI数量及采集的数量,精度不可控。外接SDK定位即是在手机中接入地图定位SDK,优点是精确度和稳定性较好,缺点是会额外消耗手机流量及电量。

在移动作业现场使用自建APP集成外接SDK来采集用户坐标数据,外接SDK在山林地区和室内信号弱的场景下采集的用户坐标数据偏差较大,或记录的坐标数据有间断,这样在实际应用不能很好反应出作业人员现场轨迹数据,不利于稽查人员掌握现场作业人员活动情况。

发明内容

本发明提供一种基于地图插件使用对比算法实现精准定位和导航方法,解决自建APP在集成地图SDK后特殊场景下采集坐标数据不准的问题,提升地图APP导航准确性和自建APP在地图APP应用上的兼容性。

一种基于地图插件使用对比算法实现精准定位和导航方法,包括如下步骤:

移动作业客户端APP的配置模块获取用户的登录信息用户标记UID和设备信息Dcode;

SDK模块将采集到的坐标数据Location(x,y)与用户标记UID及设备信息DCod绑定形成数据格式Data{Location(x,y),UID,DCode}之后推送到缓存模块;

缓存模块将接收的数据Data{Location(x,y),UID,DCode}进行本地缓存组装,形成当前用户的数据列表:

CacheList[Data{Location(x,y),UID,DCode,Time}],

经过计算处理后向接口服务模块进行数据推送,推送成功则清除缓存数据,推送失败则进行数据标记:

TagList[Data{Location(x,y),UID,DCode,Time}],待后续重复推送;

应用服务端的接口服务模块接收移动作业客户端的缓存模块推送的数据,存入数据存储模块,并记录定位数据LocData(x,y,t),其中x表示坐标经度,y表示坐标纬度,t表示采集的坐标系类型,数据存储模块与应用服务端的数据传输模块连接;

移动作业客户端APP的客户端应用模块从应用服务端的数据传输模块获取用户的定位数据LocData(x,y,t)后,用户选择导航时进入地图应用模块,以开启地图导航模式,地图应用模块对当前的数据坐标类型LocData(t)与用户手机已安装的地图APP进行坐标系匹配,如果是同类坐标系匹配成功则直接打开地图应用,如果是不同类型坐标系则先对定位数据LocData(x,y,t)进行坐标系转换生成新的定位数据LocData(x1,y1,g),再传入数据打开地图应用。

进一步的,所述缓存模块在接收坐标数据之后,对预设时间内的所有坐标数据进行对比计算,设定人体正常移动范围L[min,max],将相连两个坐标距离超过L范围时进行偏差纠正。

进一步的,所述偏差纠正具体包括:对缓存的5个坐标数据,Data1{Location(x1,y1)}....Data5{Location(x5,y5)},从第一个点开始,依次对后面坐标点进行距离偏差计算,得到位置偏移量数Distance1(CALC(Location(x1,y1),Location(x2,y2)))...Distance10(CAL C(Location(x4,y4),Location(x5,y5))),将偏移量数据与基准范围值L[min,max]进行比较,如果超出范围值,则按其前后数据的差值进行平均值处理,完成偏差补正。

进一步的,所述坐标系转换具体包括:

步骤一:假定输入坐标系值(x1,y1);

步骤二:使用中国坐标偏移标准(xp,yp)计算偏差:

x2=x1-xp,y2=y1-yp

步骤三:使用数学公式计算

z1=Math.sqrt(x2*x2+y2*y2)-X*Math.sin(y2*PI)

z2=Math.atan2(y2,x2)-Y*Math.cos(x2*PI)

x3=z1*Math.cos(z2)

y3=z1*Math.sin(z2)

步骤四:输出转换后的坐标值(x3,y3);

该坐标系反向转换的逻辑如下:

步骤一:假定输入坐标系值(x1,y1);

步骤二:使用数学公式计算:

z1=Math.sqrt(x1*x1+y1*y1)+X*Math.sin(y1*PI)

z2=Math.atan2(y1,x1)+Y*Math.cos(x1*PI);

步骤三:使用中国坐标偏移标准(xp,yp)计算偏差

x3=z1*Math.cos(z2)+xp

y3=z1*Math.sin(z2)+yp

步骤四:输出转换后的坐标值(x3,y3)

以上转换方式中,PI为圆周率,X,Y为地球椭圆球的偏心率值。

一种基于地图插件使用对比算法实现精准定位和导航装置,包括移动作业客户端和应用服务端,所述移动作业客户端包括配置模块、SDK模块、缓存模块,所述应用服务端包括接口服务模块、数据存储模块、数据传输模块、数据传输模块;

所述配置模块,用于获取用户的登录信息用户标记UID和设备信息Dcode;

所述SDK模块,用于将采集到的坐标数据Location(x,y)与用户标记UID及设备信息DCod绑定形成数据格式Data{Location(x,y),UID,DCode}之后推送到缓存模块;

所述缓存模块,用于将接收的数据Data{Location(x,y),UID,DCode}进行本地缓存组装,形成当前用户的数据列表:

CacheList[Data{Location(x,y),UID,DCode,Time}],

经过计算处理后向接口服务模块进行数据推送,推送成功则清除缓存数据,推送失败则进行数据标记:

TagList[Data{Location(x,y),UID,DCode,Time}],待后续重复推送;

所述接口服务模块,用于接收移动作业客户端的缓存模块推送的数据,存入数据存储模块,并记录定位数据LocData(x,y,t),其中x表示坐标经度,y表示坐标纬度,t表示采集的坐标系类型,数据存储模块与应用服务端的数据传输模块连接;

所述客户端应用模块,用于从应用服务端的数据传输模块获取用户的定位数据LocData(x,y,t)后,用户选择导航时进入地图应用模块,以开启地图导航模式;

所述地图应用模块,用于对当前的数据坐标类型LocData(t)与用户手机已安装的地图APP进行坐标系匹配,如果是同类坐标系匹配成功则直接打开地图应用,如果是不同类型坐标系则先对定位数据LocData(x,y,t)进行坐标系转换生成新的定位数据LocData(x1,y1,g),再传入数据打开地图应用。

进一步的,所述缓存模块还用于:在接收坐标数据之后,对预设时间内的所有坐标数据进行对比计算,设定人体正常移动范围L[min,max],将相连两个坐标距离超过L范围时进行偏差纠正。

进一步的,所述偏差纠正具体包括:对缓存的5个坐标数据,Data1{Location(x1,y1)}....Data5{Location(x5,y5)},从第一个点开始,依次对后面坐标点进行距离偏差计算,得到位置偏移量数Distance1(CALC(Location(x1,y1),Location(x2,y2)))...Distance10(CAL C(Location(x4,y4),Location(x5,y5))),将偏移量数据与基准范围值L[min,max]进行比较,如果超出范围值,则按其前后数据的差值进行平均值处理,完成偏差补正。

进一步的,所述坐标系转换具体包括:

步骤一:假定输入坐标系值(x1,y1);

步骤二:使用中国坐标偏移标准(xp,yp)计算偏差:

x2=x1-xp,y2=y1-yp

步骤三:使用数学公式计算

z1=Math.sqrt(x2*x2+y2*y2)-X*Math.sin(y2*PI)

z2=Math.atan2(y2,x2)-Y*Math.cos(x2*PI)

x3=z1*Math.cos(z2)

y3=z1*Math.sin(z2)

步骤四:输出转换后的坐标值(x3,y3);

该坐标系反向转换的逻辑如下:

步骤一:假定输入坐标系值(x1,y1);

步骤二:使用数学公式计算:

z1=Math.sqrt(x1*x1+y1*y1)+X*Math.sin(y1*PI)

z2=Math.atan2(y1,x1)+Y*Math.cos(x1*PI);

步骤三:使用中国坐标偏移标准(xp,yp)计算偏差

x3=z1*Math.cos(z2)+xp

y3=z1*Math.sin(z2)+yp

步骤四:输出转换后的坐标值(x3,y3)

以上转换方式中,PI为圆周率,X,Y为地球椭圆球的偏心率值。

本发明为自建APP提供更好的解决方案,可避免在信号弱特殊场景下出现采集坐标数据偏差大、数据不连续等问题,提升用户体验度,使自建APP在作业人员轨迹上更好的服务于实际作业场景。

附图说明

图1是本发明技术实现架构图;

图2是本发明实施例一种基于地图插件使用对比算法实现精准定位和导航方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种基于地图插件使用对比算法实现精准定位和导航方法,其对移动作业APP在使用过程中的定位及导航进行了改进处理,通过缓存、重试机制确保定位的准确性,在导航处理中,对不同的地图软件进行坐标系转换。所述方法包括如下步骤:

首先,在移动作业客户端APP的Config模块(配置模块)获取用户的登录信息UID(用户标记)和设备信息DCode(设备编码),SDK模块(集成模块)获取当前手机的定位数据Location(x,y),在SDK模块(集成模块)中,针对信号弱不能及时采集数据场景,本方案重复最多9次尝试,如果持续失败则等待到下一分钟进行采集,每次将采集到的坐标数据Location(x,y)与用户UID(用户标记)及设备信息DCode(设备编码)绑定形成数据格式Data{Location(x,y),UID,DCode}之后推送到Cache模块。

其次,Cache模块(缓存模块)将接收的数据Data{Location(x,y),UID,DCode}进行本地缓存组装,形成当前用户的数据列表CacheList[Data{Location(x,y),UID,DCode,Time}],经过计算处理后向Service模块(接口服务模块)进行数据推送,推送成功则清除缓存数据,推送失败则进行数据标记TagList[Data{Location(x,y),UID,DCode,Time}],待后续重复推送。在Cache模块(缓存模块),针对采集的坐标数据之间概率性偏差大的场景,此模块创新点是在接收坐标数据之后,会对预设时间(例如5分钟)内的所有坐标数据进行一个对比计算,设定一个人体正常移动范围L[min,max],将相连两个坐标距离超过L范围时,即认为偏差较大,需要进行偏差纠正,具体纠正逻辑在下面详细说明。

再次,应用服务端的Service模块(接口服务模块)接收客户端Cache模块(缓存模块)推送的数据,并存入DB模块(数据存储模块),并记录定位数据LocData(x,y,t),其中x表示坐标经度,y表示坐标纬度,t表示采集的坐标系类型,DB模块(数据存储模块)与应用服务端的Run模块(数据传输模块)连接。

最后,移动作业客户端APP的Client模块(客户端应用模块)从应用服务端的Run模块(数据传输模块)获取用户的定位数据LocData(x,y,t)后,用户选择导航时进入MAP模块(地图应用模块),以开启地图导航模式。此模块创新点是自动识别和转换数据坐标系以兼容地图APP,准确定位人员所在位置。主要过程是MAP模块(地图应用模块)对当前的数据坐标类型LocData(t)与用户手机已安装的地图APP进行坐标系匹配,如果是同类坐标系匹配成功则直接打开地图应用,如果是不同类型坐标系则先对定位数据LocData(x,y,t)进行坐标系转换生成新的定位数据LocData(x1,y1,g),再传入数据打开地图应用。

本发明关键模块核心算法流程如下:

1、手机APP开发Config模块

在业务移动APP开发中,编写Config模块代码,关键功能是获取用户的登陆信息User(UID)、手机设备信息Device(DCode),并将二者的信息进行绑定,绑定关系数据存储到手机本地Rel{UID,DCode}。

2、手机APP集成地图,开发SDK模块。

本案例使用集成百度SDK获取用户坐标数据Location(x,y),由于移动APP使用过程中可以切换账号,故在坐标数据Location(x,y)获取后会关联本地存储的用户及设备数据Rel{UID,DCode},形成新的用户坐标关联数据Data{Location(x,y),UID,DCode}。在客户端APP每一分钟获取当前作业现场坐标定位数据,每一分钟获取成功即结束,如果获取坐标数据失败之后再重复获取,直接重试第9次结束。

关键实现逻辑如下:

3、手机APP开发Cache模块

本地缓存Cache模块中数据格式为CacheList[Data{Location(x,y),UID,DCode,Time}],缓存到本地后,对5分钟内的所有坐标数据进行偏差纠正计算,再将纠正之后的坐标数据通过批量上传的接口,将用户的定位数据上传到Service模块(接口服务模块),如果上传成功则删除本地缓存数据,如果上传失败则记录缓存数据状态,数据标记后格式为TagList[Data{Location(x,y),UID,DCode,Time}]待下次重复上传。

坐标纠偏算法关键逻辑如下:

对缓存的5个坐标数据,Data1{Location(x1,y1)}....Data5{Location(x5,y5)},从第一个点开始,依次对后面坐标点进行距离偏差计算,得到位置偏移量数据,Distance1(CALC(Location(x1,y1),Location(x2,y2)))...Distance10(CAL C(Location(x4,y4),Location(x5,y5))),将偏移量数据与基准范围值L[min,max]进行比较,如果超出范围值,则按其前后数据的差值进行平均值处理,完成偏差补正。

4、开发应用服务端模块

开发APP应用服务端Service模块,接收客户端上传的坐标数据,处理完业务逻辑计算后,将数据存储到DB模块,并返回给前端处理结果。最终存储在数据库的关键信息为LocData{ID,x,y,UID,DCode,Time,Address,Type}],数据库存储的数据提供给服务端Run模块查询。

5、开发APP客户端业务应用Client模块及服务端Run模块

移动端进行业务数据展示时,通过业务BID把业务数据及关联的人员UID调用应用服务端面的Run模块,查询出关联坐标数据LocData{ID,x,y,UID,DCode,Time,Address,Type}]返回到客户端页面进行展示。

6、开发APP客户端业务应用MAP模块

作业人员在客户端APP使用Client模块对业务数据进行查看时,依据业务场景要求需要到作业现场,这时手机的MAP模块根据坐标数据的类型LocData.Type与当前本机安装的地图APP匹配,如果坐标系类型一致则直接进行坐标系位置分析和导航计算,如果坐标系类型不匹配时,则采用特定转换算法实现坐标系转换,将转换之后的坐标数据带入到地图APP中进行位置分析和导航计算,提高位置导航准确度。

坐标系转换的关键逻辑如下:

步骤一:假定输入坐标系值(x1,y1)

步骤二:使用中国坐标偏移标准(xp,yp)计算偏差,

x2=x1-xp,y2=y1-yp;

步骤三:使用数学公式计算

z1=Math.sqrt(x2*x2+y2*y2)-X*Math.sin(y2*PI);

z2=Math.atan2(y2,x2)-Y*Math.cos(x2*PI);

x3=z1*Math.cos(z2);

y3=z1*Math.sin(z2);

步骤四:输出转换后的坐标值(x3,y3);

该坐标系反向转换的逻辑如下:

步骤一:假定输入坐标系值(x1,y1)

步骤二:使用数学公式计算

z1=Math.sqrt(x1*x1+y1*y1)+X*Math.sin(y1*PI);

z2=Math.atan2(y1,x1)+Y*Math.cos(x1*PI)

步骤三:使用中国坐标偏移标准(xp,yp)计算偏差

x3=z1*Math.cos(z2)+xp;

y3=z1*Math.sin(z2)+yp;

步骤四:输出转换后的坐标值(x3,y3);

以上转换方式中,PI为圆周率,X,Y为地球椭圆球的偏心率值。

本发明自建APP中通过外接SDK以及偏差对比算法进行数据补偿以提高坐标定位准确度,自建APP上进行地图导航时针对不同的地图SDK进行坐标系转换,以提高导航准确性。

本发明实施例还提供一种基于地图插件使用对比算法实现精准定位和导航装置,包括移动作业客户端和应用服务端,所述移动作业客户端包括配置模块、SDK模块、缓存模块,所述应用服务端包括接口服务模块、数据存储模块、数据传输模块、数据传输模块;

所述配置模块,用于获取用户的登录信息用户标记UID和设备信息Dcode;

所述SDK模块,用于将采集到的坐标数据Location(x,y)与用户标记UID及设备信息DCod绑定形成数据格式Data{Location(x,y),UID,DCode}之后推送到缓存模块;

所述缓存模块,用于将接收的数据Data{Location(x,y),UID,DCode}进行本地缓存组装,形成当前用户的数据列表:

CacheList[Data{Location(x,y),UID,DCode,Time}],

经过计算处理后向接口服务模块进行数据推送,推送成功则清除缓存数据,推送失败则进行数据标记:

TagList[Data{Location(x,y),UID,DCode,Time}],待后续重复推送;

所述接口服务模块,用于接收移动作业客户端的缓存模块推送的数据,存入数据存储模块,并记录定位数据LocData(x,y,t),其中x表示坐标经度,y表示坐标纬度,t表示采集的坐标系类型,数据存储模块与应用服务端的数据传输模块连接;

所述客户端应用模块,用于从应用服务端的数据传输模块获取用户的定位数据LocData(x,y,t)后,用户选择导航时进入地图应用模块,以开启地图导航模式;

所述地图应用模块,用于对当前的数据坐标类型LocData(t)与用户手机已安装的地图APP进行坐标系匹配,如果是同类坐标系匹配成功则直接打开地图应用,如果是不同类型坐标系则先对定位数据LocData(x,y,t)进行坐标系转换生成新的定位数据LocData(x1,y1,g),再传入数据打开地图应用。

本发明属于电子信息技术领域,涵盖信息安全、软件、大数据分析技术。基于地图插件使用对比算法实现精准定位和导航是指在采集作业现场用户坐标点时对用户手机APP里的坐标系进行统一,对采集的坐标数据进行缓存、对比、重试,以此来提高坐标数据的准确性;在稽查人员通过作业现场人员定位的地址定位导航时,针对不同的地图软件进行坐标系转换,将转换以后的经纬度数据传入对应导航中,用以保证各地图打开定位数据展示位置都能完全一致,可有效帮助稽查人员快速到达作业现场,避免反复确认过程。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何属于本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

相关技术
  • 一种基于iBeacon的室内定位及辅助导航方法、装置及系统
  • 一种导航地图中建筑模型的获取方法、装置及终端
  • 基于超宽带和激光SLAM(地图同步定位和导航)复合导航技术的AGV定位系统及方法
  • 一种基于电子导航地图的实时定位导航信息共享方法
技术分类

06120115758141