CN112327338B - 一种快速车载gps轨迹精确地图匹配的方法 - Google Patents

一种快速车载gps轨迹精确地图匹配的方法 Download PDF

Info

Publication number
CN112327338B
CN112327338B CN202110005167.7A CN202110005167A CN112327338B CN 112327338 B CN112327338 B CN 112327338B CN 202110005167 A CN202110005167 A CN 202110005167A CN 112327338 B CN112327338 B CN 112327338B
Authority
CN
China
Prior art keywords
last
point
matching
connecting line
endpoint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110005167.7A
Other languages
English (en)
Other versions
CN112327338A (zh
Inventor
王元庆
吴洲豪
谢明辉
韦森
苏娟
金书鑫
秦帆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changan University
Original Assignee
Changan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changan University filed Critical Changan University
Priority to CN202110005167.7A priority Critical patent/CN112327338B/zh
Publication of CN112327338A publication Critical patent/CN112327338A/zh
Application granted granted Critical
Publication of CN112327338B publication Critical patent/CN112327338B/zh
Priority to PCT/CN2021/101240 priority patent/WO2022147968A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/38Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system
    • G01S19/39Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system the satellite radio beacon positioning system transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/393Trajectory determination or predictive tracking, e.g. Kalman filtering
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Navigation (AREA)

Abstract

本发明提供了一种快速车载GPS轨迹精确地图匹配的方法,属于交通技术领域,包括以下步骤:得到有效GPS轨迹点列表;得到首点至末点的最佳地图匹配路径;由末点回溯所述最佳地图匹配路径,并汇总输出匹配结果统计表;输出首点至中断点的匹配结果,并从中断点到末点执行匹配任务,直至完成全部车载GPS轨迹点的匹配。本发明提出了以GPS轨迹点作为空间加权的地图匹配路径搜索算法,实现了以“路径搜索导向的GPS轨迹点匹配逻辑”替代了传统的“GPS轨迹点导向的路径搜索逻辑”,避免了传统匹配逻辑中繁复低效的地图数据调用过程,极大提升了地图匹配工作效率,解决了现有技术GPS轨迹匹配方法中匹配精度及效率难以兼顾的问题。

Description

一种快速车载GPS轨迹精确地图匹配的方法
技术领域
本发明属于交通技术领域,尤其涉及一种快速车载GPS轨迹精确地图匹配的方法。
背景技术
城市交通网络***是个复杂的巨***,每时每刻都有数以万计的交通流在其网络结构上运行及转移,如何全面准确对相关交通时空数据进行采集,分析预测各类城市的交通发生,进而为***分析把握城市交通网络运行规律、拥堵发生演变机理、完善大规模城市交通需求组成结构、优化相关交通网络***供给等交通***分析难题提供强有力的数据及理论支撑,是近年来交通***智能分析领域的主要议题之一。
其中车载GPS数据作为快速易得的交通信息数据源之一,具有覆盖范围广、时间连续性强、与交通网络直接相关等数据优势,近年来已为各类交通大数据***分析项目广泛采用,通过将实时车载GPS轨迹信息映射至交通网络,通过分析挖掘相关出行轨迹信息,相关统计结果既可有效覆盖城市大范围时空下的交通***信息,也能在需要时较精确刻画区域交通运行状态。而***分析的第一步即是基于车载GPS将车辆行驶轨迹与路网结构进行准确映射,称为“Map Matching轨迹匹配”,相关算法即为轨迹匹配算法,一般分为四类:几何、拓扑、概率、高级等。
快速准确刻画“车辆行驶轨迹与道路网络的匹配关系”对车载导航、基于位置的服务、交通网络***分析等工作的重要性不言而喻,然而纵观现有各类匹配算法,算法逻辑仍存在一些技术性缺点。对于传统步进式匹配算法,如HMM,隐式马尔科夫匹配算法;MDP,多准则动态规划匹配算法;LBMM,基于轨迹局部特征的匹配算法,存在缺点包括:1) 步进式匹配过程速度慢,由于该匹配过程需逐点展开路径分析,较分段式匹配显著较慢,从而极大限制了地图匹配算法的应用效果,如车载导航及基于位置的服务中地图路径卡顿现象、以及基于离线地图匹配在传统交通规划及***分析应用领域尚无有效应用案例等。2)总体匹配比例较低,各类匹配算法匹配里程总体一般不到90%,产生原因包括路网拓扑中存在误差、GPS轨迹点采样误差等;3)匹配精度与比例难以兼顾,若采用路径搜索等算法精确匹配,往往由于网络拓扑原因导致总体匹配比例较低,有时甚至低于50%,而若采用行驶方向对行驶轨迹进行估计,则又易产生局部匹配误差;4)算法缺乏有效逻辑控制,局部匹配误差不可控,尤其在交通网络结构复杂的区域,如多条干路辅路并行路段、交叉口区域,匹配误差难以避免;5) 对异常GPS轨迹点缺乏有效处理,如设备故障导致的GPS轨迹点异常等,有时可能严重影响匹配质量。
对于最新的分段式匹配算法,也有一些先天缺陷,包括:已有高级分段匹配算法依赖地图编码信息,实施难度大,局限了方法在不同数据平台的应用,尤其是计算能力较小的平台;以及分段过程受地图质量干扰较大,匹配精度相对有一定下降,可能产生导致一定的应用失效。
发明内容
针对现有技术中的上述不足,本发明提供的一种快速车载GPS轨迹精确地图匹配的方法,解决了现有技术GPS轨迹匹配方法中匹配精度及效率难以兼顾的问题。
为了达到以上目的,本发明采用的技术方案为:
本方案提供一种快速车载GPS轨迹精确地图匹配方法,包括以下步骤:
S1、获取任一车辆的GPS经过的若干个GPS轨迹点,并对所述若干个GPS轨迹点进行初始化操作,得到有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)};
S2、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环,并根据所述地图匹配工作循环,利用以GPS轨迹点导向的最短路径搜索算法得到首点vp(1)至末点vp(k)的最佳地图匹配路径;
S3、由末点vp(k)回溯所述最佳地图匹配路径,遍历获取沿途各GPS轨迹点的最佳匹配结果,并汇总输出匹配结果统计表;
S4、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则输出首点vp(1)至中断点vp(s)的匹配结果,并返回步骤S2,否则,完成快速车载GPS轨迹精确地图的匹配。
进一步地,所述步骤S1包括以下步骤:
S101、获取任一车辆的GPS经过的若干个GPS轨迹点;
S102、将所述若干个GPS轨迹点分离为分段集合Trip(a)={T1,T2,…,Ta,…,Tn},其中,Ta表示一个分段,且所述Ta分段内包括多个GPS轨迹点,Tn表示总分段数;
S103、从分段Ta内的多个GPS轨迹点{ p(1),p(2),…,p(i),…,p(n)}中任选一个GPS轨迹点p(i)作为当前GPS轨迹点,其中,p(n)表示总的GPS轨迹点;
S104、判断所述当前GPS轨迹点p(i)至p(i+1)的直线速度是否大于300km/h,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;或
判断所述当前GPS轨迹点p(i)与p(i+1)的间隔时间是否小于等于0,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;
S105、设当前GPS轨迹点的上一累计行驶距离变量为p(i).lastD;
S106、判断所述p(i).lastD是否小于20米,若是,则计算得到GPS轨迹点p(i-1)至p(i)的距离,并剔除GPS轨迹点p(i),并进入步骤S107,否则,所述p(i).lastD大于20米,并将当前GPS轨迹点p(i)= vp(l)纳入所述有效节点列表VP={vp(1),vp(2),…,vp(k)},并进入步骤S107;
S107、判断分段Ta内是否所有的GPS轨迹点均被作为当前GPS轨迹点,若是,则建立有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)},并获取所述GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中各GPS轨迹点k在地图数据中的待匹配邻近连接线集合NearL(k),并初始化匹配结果变量Match(k)=-1,最佳匹配权重MatchW(k)=10000,完成有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}的建立,并进入步骤S2,否则,返回步骤S101。
再进一步地,所述步骤S2包括以下步骤:
S201、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环;
S202、根据所述地图匹配工作循环,设有效GPS列表VP={vp(1),vp(2),…,vp(k)}的起始节点为Startp,终止节点为Endp;
S203、判断所述起始节点Startp是否小于等于终止节点Endp,若是,则进入步骤S204,否则,起始节点Startp大于终止节点Endp,完成GPS轨迹的全部匹配,得到首点vp(1)至末点vp(k)的最佳地图匹配路径,并进入步骤S3;
S204、利用以GPS轨迹点导向的最短路径搜索算法搜索起始节点Startp至终止节点Endp的最短路径,并判断最短路径搜索的迭代过程是否结束,若是,则获取备选路径,并进入步骤S3,否则,重复步骤S204,直至最短路径搜索迭代完成。
再进一步地,所述步骤S204包括以下步骤:
S2041、对所述起始节点Startp进行匹配变量初始化处理,所述匹配变量包括上一起始节点Lastp等于起始节点Startp、当前最远匹配节点Pnow、已修改路网节点集NList、搜索打开节点集OpenL、对应搜索前进参考变量集OpenValueL、搜索结束路网节点集CloseL以及起点邻近路网连接线集NearL(Startp);
S2042、对所述起点邻近路网连接线集NearL(Startp)中各连接线建立地图匹配工作循环;
S2043、判断各连接线是否满足出发条件,若是,则将各连接线的对应端点纳入所述搜索打开节点集OpenL,并分别更新所述对应搜索前进参考变量集OpenValueL、已修改路网节点集NList以及更新各连接线对应前向搜索端点s的搜索属性集Search(s),且当循环结束时,所述搜索打开节点集OpenL不为空集,进入步骤S2044;否则,对所述起始节点Startp选取邻近匹配路径回溯路径回溯端点CrtEndN骤S202,其中,所述端点搜索属性集Search(s)包括端点出发截断成本集StartCut(s)、路径物理成本集SPcost(s)、局部截断成本集LOCcost(s)、GPS轨迹点加权成本集PWcost(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)以及途径连接线集SPvia(s);
S2044、对所述搜索打开节点集OpenL中各路网搜索前向搜索端点s建立迭代,并判断所述迭代的结束条件是否为搜索打开节点集OpenL已为空集,若是,则获取备选路径,并进入步骤S3,否则,进入步骤S2045;
S2045、选取所述搜索打开节点集OpenL中首个前向搜索端点s开展搜索,分别获取对应轨迹标号ValidN(s)以及前向搜索端点s的对应搜索前进参考变量OpenValueL值OpenValueL.begin,并判断所述对应轨迹标号ValidN(s)是否大于起始节点Startp-1,若是,则从搜索打开节点集OpenL以及对应前向搜索端点s的首个对应搜索前进参考变量集OpenValueL中剔除前向搜索端点s及其对应的前进变量HeadDist,并进入步骤S2046,否则,进入步骤S2048;
S2046、若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述对应轨迹标号ValidN(s)小于当前最远匹配节点Pnow,则计算得到前进判断距离Jdist,并进入步骤S2047;或
若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述局部轨迹增量Padd(s)=0,则计算得到前进判断距离Jdis,并进入步骤S2047;
S2047、判断前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于2*前进判断距离Jdist,且前进判断距离Jdist大于200米,若是,则返回步骤S2045,否则,进入步骤S2048;或
判断所述前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于400米且前进判断距离Jdist小于等于200米,若是,则返回步骤S2045,否则,进入步骤S2048;
S2048、对当前搜索前向搜索端点s各前向连接线集合ForwardL建立循环,并提取前向连接线u及下一路网节点n(u),当途径连接线集SPvia(s)不为空集时,若前向搜索端点s途径连接线集SPvia(s)的最后一个元素SPvia(s).last等于前向连接线u时,跳至前向连接线集合ForwardL下一连接线,并继续计算前向连接线u与GPS轨迹点vp(ValidN(s))运动方向夹角MoveAng(u);
S2049、判断所述运动方向夹角MoveAng(u)是否大于等于100度,若是,则跳至前向连接线集合ForwardL中下一前向连接线u,并返回步骤S2048,否则,将前向连接线u按运动方向夹角MoveAng(u)从小到大顺序***拓展连线集NextL,并在循环结束后进入步骤S20410;
S20410、对拓展连线集NextL中元素建立前向搜索循环,提取前向连接线u及下一路网节点n(u),并初始化局部GPS轨迹点加权变量PWac=0、已匹配GPS轨迹点序号Sernow=对应轨迹标号ValidN(s)、局部增量匹配点数AddN=0以及掉头指示变量TurnIndi=false;
S20411、当已匹配GPS轨迹点序号Sernow小于终止节点Endp时,初始化迭代指示变量Indi=true,并建立前向轨迹匹配增益,判断迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20412,否则,进入步骤S20415;
S20412、令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断前向连接线u是否不在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;或
令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断已匹配GPS轨迹点序号Sernow等于终止节点Endp时,迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;
S20413、判断局部增量匹配点数AddN是否等于0,若是,则进入步骤S20415,否则,则局部增量匹配点数AddN大于0,并进入步骤S20416;
S20414、分别令局部增量匹配点数AddN为局部增量匹配点数AddN+1,以及计算得到局部GPS轨迹点加权变量PWac,且若GPS轨迹点存在掉头,则掉头指示变量TurnIndi=true,迭代指示变量Indi=false;当局部增量匹配点数AddN=0,则进入步骤S20415;并判断局部增量匹配点数AddND是否大于0,若是,则进入步骤S24021,否则,返回步骤S20412;其中,所述局部GPS轨迹点加权变量PWac的表达式如下:
PWac=PWac+(Sernow).Weight(u)
式中,PWac表示局部GPS轨迹点加权变量,vp(Sernow).Weight(u)表示GPS轨迹点vp;
S20415、当前向搜索端点s大于起始节点Startp时,判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20416,否则,进入步骤S20417;
S20416、计算得到局部搜索成本Costnow,并在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***元素局部搜索成本Costnow,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***元素0,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***元素,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***元素,在已修改路网节点集NList末尾***n(u),并进入步骤S20419,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20417、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20418,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,并进入步骤S20419;
S20418、根据前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last计算得到匹配路径成本Cost1,以及根据计算得到前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,若匹配路径成本Cost1小于匹配路径成本Cost2,则计算得到前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last,并令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last等于前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last=0,以及计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及令前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last等于前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20420,其中,所述匹配路径成本Cost的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last的表达式如下:
LOCcost(n(u)).last=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示,前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
SPcost(n(u)).last=SPcost(s).last+Length(u)
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20419、根据前向搜索端点s局部截断成本集的最后一个元素LOCcost(s).last以及前向连接线u的长度Length(u)计算得到前进变量HeadDist,并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***0,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及前向连接线u的长度Length(u),在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20425;其中,所述前进变量HeadDist的表达式如下:
HeadDist=LOCcost(s).last +Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20420、根据所述前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last计算得到当前匹配GPS轨迹点进度Mnow,并判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20421,否则,进入步骤S20422;其中,所述当前匹配GPS轨迹点进度Mnow的表达式如下:
Mnow=ValidN(s).last+AddN
式中,ValidN(s).last表示前向搜索端点s对应轨迹标号集的最后一个元素,AddN表示局部增量匹配点数;
S20421、计算得到局部搜索成本Costnow以及令前向变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow), n(u)),并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾插前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last+局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last+局部GPS轨迹点加权变量PWac以及在已修改路网节点集NList末尾***n(u),并进入步骤S0425,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20422、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20423,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前匹配GPS轨迹点进度Mnow,并进入步骤S20424;
S20423、分别计算得到匹配路径成本Cost1以及匹配路径成本Cost2,若匹配路径成本Cost1小于匹配路径成本Cost2,则令前进变量HeadDist等于GPS轨迹点vp(Mnow)和n(u)的欧式距离Euc(vp(Mnow), n(u)),令前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last为前进变量HeadDist,令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last为前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last为局部增量匹配点数AddN,以及分别计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).las,并进入步骤S20428;其中,所述匹配路径成本的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last+PWac-StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,Pwac表示局部GPS轨迹点加权变量,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last的表达式如下:
SPcost(n(u)).last=SPcost(s).last+Length(u)+StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last的表达式如下:
PWcost(n(u)).last=PWcost(s).last+PWac
式中,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,PWac表示局部GPS轨迹点加权变量;
S20424、执行前进变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow),n(u)),并计算得到局部搜索成本Costnow,以及在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last以及局部GPS轨迹点加权变量PWac,并进入步骤S20428;其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20425、当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last小于终止节点Endp时,在搜索结束路网节点集CloseL中剔除前向搜索端点s,并计算得到前进变量HeadDist(n(u)),若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除该元素,并判断前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last是否等于当前最远匹配节点Pnow,若是,则进入步骤S20426,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(s).last小于当前最远匹配节点Pnow,并进入步骤S20427;其中,前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))= Euc(vp(ValidN(s).last +1), n(u)+ LOCcost(n(u)).last)
式中,Euc(vp(ValidN(s).last +1), n(u)表示GPS轨迹点vp(ValidN(s).last和前向连接线u的前向端点n(u)的欧式距离, LOCcost(n(u)).last)表示前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20426、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),在搜索结束路网节点集CloseL中***前向连接线u的前向端点n(u),并返回步骤S2044;
S20427、在搜索打开节点集OpenL末尾位置***n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,则在搜索结束路网节点集CloseL中剔除前向搜索端点s,在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***0以及在搜索结束路网节点集CloseL***前向连接线u的前向端点n(u),并返回步骤S2043;
S20428、当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于终止节点Endp时,计算前进变量HeadDist(n(u))等于GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc(vp(ValidN(n(u)).last +1)以及前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素 LOCcost(n(u)).last,若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除前向连接线u的前向端点n(u),并判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否大等于当前最远匹配节点Pnow,若是,则进入步骤S20429,否则,进入步骤S20430;其中,所述前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))= Euc(vp(ValidN(n(u)).last +1)+LOCcost(n(u)).last
式中,Euc(vp(ValidN(n(u)).last +1)表示GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc,LOCcost(n(u)).last表示前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20429、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),并返回步骤S2044;
S20430、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否大于当前最远匹配节点Pnow,若是,则进入步骤S20431,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前最远匹配节点Pnow,并进入步骤S20432;
S20431、更新当前最远匹配节点Pnow为前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,并清空搜索结束路网节点集CloseL集合,***前向连接线u的前向端点n(u),并返回步骤S2044;
S20432、在搜索打开节点集OpenL末尾位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,在搜索打开节点集OpenL起始位置***n(u),在对应搜索前进参考变量集OpenValueL起始位置***0,并返回步骤S2043。
再进一步地,所述步骤S3包括以下步骤:
S301、由末点vp(k)回溯所述最佳匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素,遍历所述搜索结束路网节点集CloseL选择一最优元素作为匹配路径回溯点;
S302、根据所述匹配路径回溯点,以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段匹配过程;
S303、根据当前匹配轨迹段回溯结果,输出从GPS轨迹点vp(Lastp)到GPS轨迹点vp(Pnow)中各GPS轨迹点的匹配结果,并分别清空所有已修改路网节点集NList中涉及路网节点各途径连接线集SPvia、路径物理成本集SPcost、局部截断成本集LOCcost、GPS轨迹点加权成本集PWcost、局部轨迹增量集Padd、对应轨迹标号集ValidN以及端点出发截断成本集StartCut;
S304、判断起始节点Startp是否大于终止节点Endp,若是,则当前出行GPS轨迹点全部匹配结束,并汇总输出匹配结果统计表,并进入步骤S4,否则,起始节点Startp小于终止节点Endp,并进入步骤S4。
再进一步地,所述步骤S301包括以下步骤:
S3011、由末点vp(k)回溯所述最佳匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素;
S3012、对所述搜索结束路网节点集CloseL中各元素道路节点建立循环,并初始化最小总路径加权成本MinCost等于100000,当节点对应轨迹标号集的最后一个元素ValidN(s).last等于当前最远匹配节点Pnow时,建立最优局部路径终点搜索迭代m=false,以及初始化当前搜索路网节点CrtN为前向搜索端点s,当途径连接线集SPvia(s)不为空集,且前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last 等于当前最远匹配节点Pnow时,以及途径连接线集SPvia(s)仅存在一个元素,则检查是否陷入回溯端点死循环,若是,则终止迭代进入搜索结束路网节点集CloseL中下一元素,并进入步骤S3013,否则,进入步骤S3015;
S3013、检查当前最远匹配节点Pnow附近是否存在前向搜索端点s途径连接线集的最后一个元素SPvia(s).last,若是,则找到局部最优终点,并进入步骤S3015,否则,进入步骤S3014;
S3014、若前向搜索端点s途径连接线集的元素数量SPvia(s).size大于1,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;或
若前向搜索端点s为轨迹匹配段落起点,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;
S3015、根据找到的路径回溯端点CrtEndN及所属连接线路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtN).last,计算得到路径总成本TotalCost,并判断所述路径总成本TotalCost是否小于最小总路径加权成本MinCost,若是,则更新最小总路径加权成本MinCost等于路径总成本TotalCost以及最佳匹配尾节点BestEndN等于路径回溯端点CrtEndN,进入下一备选尾节点,并返回步骤S3011,否则,遍历完搜索结束路网节点集CloseL,选择一最优元素作为匹配路径回溯点,并进入步骤S302;其中,路径总成本TotalCost的表达式如下:
TotalCost=SPcost(CrtN)+PWcost(CrtN)+Euc(vp(Pnow),CrtN)
式中,SPcost(CrtN)表示路径回溯端点CrtEndN的路径物理成本集,PWcost(CrtN)表示路径回溯端点CrtEndN的GPS轨迹点加权成本集,Euc(vp(Pnow),CrtN)表示GPS轨迹点vp(Pnow)和路径回溯端点CrtEndN的欧式距离。
再进一步地,所述步骤S302包括以下步骤:
S3021、更新起始节点Startp为当前最远匹配节点Pnow+1,并分别初始化当前回溯GPS轨迹点CrtP等于当前最远匹配节点Pnow、当前回溯尾节点CrtEndN等于最佳匹配尾节点BestEndN以及回溯指示变量BackCk等于端点BestEndN途径连接线集的元素数量SPvia(BestEndN).size,建立回溯迭代,并判断回溯迭代的回溯指示变量BackCk是否等于1,若是,则进入步骤S3022,否则,回溯迭代的回溯指示变量BackCk大于1,并进入步骤S3023;
S3022、检查是否已回溯到路网路径起点,若是,则直接终止迭代,并进入步骤S3023,否则,返回步骤S3021;
S3023、建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k;
S3024、当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最优匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));以及
当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k).Weight(SPvia(CrtEndN).last)小于最佳匹配权重MatchW(k),则匹配结果变量Match(k)为路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最佳匹配权重MatchW(k)为节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的最后一个元素ValidN(CrtEndN).last小于当前回溯GPS轨迹点CrtP时,则当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3025、令k为k-1,并继续循环,若判断循环是否结束,若是,则进入步骤S3026,否则,返回步骤S3024;
S3026、建立从回溯指示变量BackCk到1的逆序循环t;
S3027、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合中的最后一个元素,更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,且路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3028、令k为k-1,继续循环,并判断循环是否结束,若是,则进入步骤S3029,否则,返回步骤S3027;
S3029、建立从回溯指示变量BackCk到1的逆序循环t;
S30210、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合的最后一个元素,并更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一个元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则使更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));
若匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且若vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP等于当前回溯GPS轨迹点CrtP-1;
S30211、令k为k-1,并继续循环,判断循环是否结束,若是,则进入步骤S30212,否则,返回步骤S30210;
S30212、更新路径回溯端点CrtEndN等于其途径连接线集的最后一个元素的尾节点SPvia(CrtEndN).last.tail,以及更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size;
S30213、设置临时点TempN等于SPvia(CrtEndN).last.tail,若SPvia(CrtEndN).size大于1,剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)、轨迹标号集ValidN(CrtEndN)的最后一个元素,更新当前回溯尾节点CrtEndN等于临时点TempN,回溯指示变量BackCk等于路径回溯端点CrtEndN的途径连接线集包含元素数目SPvia(CrtEndN).size,结束循环t;
S30214、判断是否迭代结束,若是,则返回步骤S3023,否则,进入步骤S30215;
S30215、继续迭代,并判断回溯指示变量BackCk是否等于1,若是,则返回步骤S3023,否则,进入步骤S30216;
S30216、判断回溯指示变量BackCk是否大于1,若是,则返回步骤S3023,否则,回溯指示变量BackCk是否等于0,迭代结束,从而实现以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段的匹配过程,并进入步骤S303。
再进一步地,所述步骤S4包括以下步骤:
S401、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则进入步骤S402,否则,完成快速车载GPS轨迹精确地图的匹配;
S402、输出首点vp(1)至中断点vp(s)的匹配结果,并从中断点vp(s)到末点vp(k)执行步骤S2至S3,直至完成全部车载GPS轨迹点的匹配。
本发明的有益效果:
(1)本发明创新提出了以GPS轨迹点作为空间加权的地图匹配路径搜索算法,即实现了以“路径搜索导向的GPS轨迹点匹配逻辑”替代了传统的“GPS轨迹点导向的路径搜索逻辑”,避免了传统匹配逻辑中繁复低效的地图数据调用过程,极大提升了地图匹配工作效率,同时实验表明,当GPS采样间隔为2秒时,与传统步进式匹配方法相比,本方法可提升匹配速度10的4次方倍数量级,与先进的分段式匹配方法相比,本方法提升匹配速度也在10的2次方倍数量级,且当采样间隔小于20秒时,与其他地图匹配算法相比具备最佳的匹配精度。
(2)本发明仅需要GPS轨迹点坐标及时间戳信息,不依赖其他数据,有效规避了复杂路网条件下匹配过程极易产生的局部匹配误差。
(3)本发明既能有效控制匹配误差不扩散,也显著提升了相应路径搜索算法的匹配效率,可广泛应用于车载导航、移动位置应用服务、普适计算及城市交通***分析规划管理领域。
附图说明
图1为本发明的方法流程图。
图2为本实施例中实验数据示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例
在对本实施例进行说明前,对以下参数进行说明:
本实施例中,false表示否,true表示是。
如图1所示,本发明提供了一种快速车载GPS轨迹精确地图匹配的方法,其实现方法如下:
S1、获取任一车辆的GPS经过的若干个GPS轨迹点,并对所述若干个GPS轨迹点进行初始化操作,得到有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)},其实现方法如下:
S101、获取任一车辆的GPS经过的若干个GPS轨迹点;
S102、将所述若干个GPS轨迹点分离为分段集合Trip(a)={T1,T2,…,Ta,…,Tn},其中,Ta表示一个分段,且所述Ta分段内包括多个GPS轨迹点,Tn表示总分段数;
S103、从分段Ta内的多个GPS轨迹点{ p(1),p(2),…,p(i),…,p(n)}中任选一个GPS轨迹点p(i)作为当前GPS轨迹点,其中,p(n)表示总的GPS轨迹点;
S104、判断所述当前GPS轨迹点p(i)至p(i+1)的直线速度是否大于300km/h,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;或
判断所述当前GPS轨迹点p(i)与p(i+1)的间隔时间是否小于等于0,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;
S105、设当前GPS轨迹点的上一累计行驶距离变量为p(i).lastD;
S106、判断所述p(i).lastD是否小于20米,若是,则计算得到GPS轨迹点p(i-1)至p(i)的距离,并剔除GPS轨迹点p(i),并进入步骤S107,否则,所述p(i).lastD大于20米,并将当前GPS轨迹点p(i)= vp(l)纳入所述有效节点列表VP={vp(1),vp(2),…,vp(k)},并进入步骤S107;
本实施例中,如果小于20米,比如是3米,则轨迹点p(i+1)的当前累计行驶p(i).currentD=p(i).lastD+3=13米,轨迹点p(i+1).lastD=p(i).currentD,并从节点列表中剔除p(i);
S107、判断分段Ta内是否所有的GPS轨迹点均被作为当前GPS轨迹点,若是,则建立有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)},并获取所述GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中各GPS轨迹点k在地图数据中的待匹配邻近连接线集合NearL(k),并初始化匹配结果变量Match(k)=-1,最佳匹配权重MatchW(k)=10000,完成有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}的建立,并进入步骤S2,否则,返回步骤S101;
S2、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环,并根据所述地图匹配工作循环,利用以GPS轨迹点导向的最短路径搜索算法得到首点vp(1)至末点vp(k)的最佳地图匹配路径,其实现方法如下:
S201、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环;
S202、根据所述地图匹配工作循环,设有效GPS列表VP={vp(1),vp(2),…,vp(k)}的起始节点为Startp,终止节点为Endp;
S203、判断所述起始节点Startp是否小于等于终止节点Endp,若是,则进入步骤S204,否则,起始节点Startp大于终止节点Endp,完成GPS轨迹的全部匹配,得到首点vp(1)至末点vp(k)的最佳地图匹配路径,并进入步骤S3;
S204、利用以GPS轨迹点导向的最短路径搜索算法搜索起始节点Startp至终止节点Endp的最短路径,并判断最短路径搜索的迭代过程是否结束,若是,则获取备选路径,并进入步骤S3,否则,重复步骤S204,直至最短路径搜索迭代完成,其实现方法如下:
S2041、对所述起始节点Startp进行匹配变量初始化处理,所述匹配变量包括上一起始节点Lastp等于起始节点Startp、当前最远匹配节点Pnow、已修改路网节点集NList、搜索打开节点集OpenL、对应搜索前进参考变量集OpenValueL、搜索结束路网节点集CloseL以及起点邻近路网连接线集NearL(Startp);
S2042、对所述起点邻近路网连接线集NearL(Startp)中各连接线建立地图匹配工作循环;
S2043、判断各连接线是否满足出发条件,若是,则将各连接线的对应端点纳入所述搜索打开节点集OpenL,并分别更新所述对应搜索前进参考变量集OpenValueL、已修改路网节点集NList以及更新各连接线对应前向搜索端点s的搜索属性集Search(s),且当循环结束时,所述搜索打开节点集OpenL不为空集,进入步骤S2044;否则,对所述起始节点Startp选取邻近匹配值最大的连接线作为该点匹配结果,并更新起始节点Startp等于起始节点Startp+1,并返回步骤S202,其中,所述端点搜索属性集Search(s)包括端点出发截断成本集StartCut(s) 、路径物理成本集SPcost(s) 、局部截断成本集LOCcost(s) 、GPS轨迹点加权成本集PWcost(s) 、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)以及途径连接线集SPvia(s);
S2044、对所述搜索打开节点集OpenL中各路网搜索前向搜索端点s建立迭代,并判断所述迭代的结束条件是否为搜索打开节点集OpenL已为空集,若是,则获取备选路径,并进入步骤S3,否则,进入步骤S2045;
S2045、选取所述搜索打开节点集OpenL中首个前向搜索端点s开展搜索,分别获取对应轨迹标号ValidN(s)以及前向搜索端点s的对应搜索前进参考变量OpenValueL值OpenValueL.begin,并判断所述对应轨迹标号ValidN(s)是否大于起始节点Startp-1,若是,则从搜索打开节点集OpenL以及对应前向搜索端点s的首个对应搜索前进参考变量集OpenValueL中剔除前向搜索端点s及其对应的前进变量HeadDist,并进入步骤S2046,否则,进入步骤S2048;
S2046、若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述对应轨迹标号ValidN(s)小于当前最远匹配节点Pnow,则计算得到前进判断距离Jdist,并进入步骤S2047;或
若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述局部轨迹增量Padd(s)=0,则计算得到前进判断距离Jdis,并进入步骤S2047;
S2047、判断前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于2*前进判断距离Jdist,且前进判断距离Jdist大于200米,若是,则返回步骤S2045,否则,进入步骤S2048;或
判断所述前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于400米且前进判断距离Jdist小于等于200米,若是,则返回步骤S2045,否则,进入步骤S2048;
S2048、对当前搜索前向搜索端点s各前向连接线集合ForwardL建立循环,并提取前向连接线u及下一路网节点n(u),当途径连接线集SPvia(s)不为空集时,若前向搜索端点s途径连接线集SPvia(s)的最后一个元素SPvia(s).last等于前向连接线u时,跳至前向连接线集合ForwardL下一连接线,并继续计算前向连接线u与GPS轨迹点vp(ValidN(s))运动方向夹角MoveAng(u);
S2049、判断所述运动方向夹角MoveAng(u)是否大于等于100度,若是,则跳至前向连接线集合ForwardL中下一前向连接线u,并返回步骤S2048,否则,将前向连接线u按运动方向夹角MoveAng(u)从小到大顺序***拓展连线集NextL,并在循环结束后进入步骤S20410;
S20410、对拓展连线集NextL中元素建立前向搜索循环,提取前向连接线u及下一路网节点n(u),并初始化局部GPS轨迹点加权变量PWac=0、已匹配GPS轨迹点序号Sernow=对应轨迹标号ValidN(s)、局部增量匹配点数AddN=0以及掉头指示变量TurnIndi=false;
S20411、当已匹配GPS轨迹点序号Sernow小于终止节点Endp时,初始化迭代指示变量Indi=true,并建立前向轨迹匹配增益,判断迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20412,否则,进入步骤S20415;
S20412、令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断前向连接线u是否不在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;或
令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断已匹配GPS轨迹点序号Sernow等于终止节点Endp时,迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;
S20413、判断局部增量匹配点数AddN是否等于0,若是,则进入步骤S20415,否则,则局部增量匹配点数AddN大于0,并进入步骤S20416;
S20414、分别令局部增量匹配点数AddN为局部增量匹配点数AddN+1,以及计算得到局部GPS轨迹点加权变量PWac,且若GPS轨迹点存在掉头,则掉头指示变量TurnIndi=true,迭代指示变量Indi=false;当局部增量匹配点数AddN=0,则进入步骤S20415;并判断局部增量匹配点数AddND是否大于0,若是,则进入步骤S24021,否则,返回步骤S20412;其中,所述局部GPS轨迹点加权变量PWac的表达式如下:
PWac=PWac+(Sernow). Weight(u)
式中,PWac表示局部GPS轨迹点加权变量,vp(Sernow). Weight(u)表示GPS轨迹点vp;
S20415、当前向搜索端点s大于起始节点Startp时,判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20416,否则,进入步骤S20417;
S20416、计算得到局部搜索成本Costnow,并在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***元素局部搜索成本Costnow,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***元素0,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***元素,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***元素,在已修改路网节点集NList末尾***n(u),并进入步骤S20419,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20417、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20418,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,并进入步骤S20419;
S20418、根据前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last计算得到匹配路径成本Cost1,以及根据计算得到前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,若匹配路径成本Cost1小于匹配路径成本Cost2,则计算得到前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last,并令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last等于前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last=0,以及计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及令前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last等于前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20420,其中,所述匹配路径成本Cost的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last的表达式如下:
LOCcost(n(u)).last=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示,前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
SPcost(n(u)).last=SPcost(s).last+Length(u)
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20419、根据前向搜索端点s局部截断成本集的最后一个元素LOCcost(s).last以及前向连接线u的长度Length(u)计算得到前进变量HeadDist,并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***0,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及前向连接线u的长度Length(u),在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20425;其中,所述前进变量HeadDist的表达式如下:
HeadDist=LOCcost(s).last +Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20420、根据所述前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last计算得到当前匹配GPS轨迹点进度Mnow,并判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20421,否则,进入步骤S20422;其中,所述当前匹配GPS轨迹点进度Mnow的表达式如下:
Mnow=ValidN(s).last+AddN
式中,ValidN(s).last表示前向搜索端点s对应轨迹标号集的最后一个元素,AddN表示局部增量匹配点数;
S20421、计算得到局部搜索成本Costnow以及令前向变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow), n(u)),并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾插前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last+局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last+局部GPS轨迹点加权变量PWac以及在已修改路网节点集NList末尾***n(u),并进入步骤S0425,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20422、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20423,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前匹配GPS轨迹点进度Mnow,并进入步骤S20424;
S20423、分别计算得到匹配路径成本Cost1以及匹配路径成本Cost2,若匹配路径成本Cost1小于匹配路径成本Cost2,则令前进变量HeadDist等于GPS轨迹点vp(Mnow)和n(u)的欧式距离Euc(vp(Mnow), n(u)),令前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last为前进变量HeadDist,令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last为前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last为局部增量匹配点数AddN,以及分别计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).las,并进入步骤S20428;其中,所述匹配路径成本的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last+PWac-StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,Pwac表示局部GPS轨迹点加权变量,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last的表达式如下:
SPcost(n(u)).last=SPcost(s).last+Length(u)+StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last的表达式如下:
PWcost(n(u)).last=PWcost(s).last+PWac
式中,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,PWac表示局部GPS轨迹点加权变量;
S20424、执行前进变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow), n(u)),并计算得到局部搜索成本Costnow,以及在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last以及局部GPS轨迹点加权变量PWac,并进入步骤S20428;其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20425、当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last小于终止节点Endp时,在搜索结束路网节点集CloseL中剔除前向搜索端点s,并计算得到前进变量HeadDist(n(u)),若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除该元素,并判断前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last是否等于当前最远匹配节点Pnow,若是,则进入步骤S20426,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(s).last小于当前最远匹配节点Pnow,并进入步骤S20427;其中,前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))= Euc(vp(ValidN(s).last +1), n(u)+ LOCcost(n(u)).last )
式中, Euc(vp(ValidN(s).last +1), n(u)表示GPS轨迹点vp(ValidN(s).last和前向连接线u的前向端点n(u)的欧式距离, LOCcost(n(u)).last )表示前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20426、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),在搜索结束路网节点集CloseL中***前向连接线u的前向端点n(u),并返回步骤S2044;
S20427、在搜索打开节点集OpenL末尾位置***n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last 等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,则在搜索结束路网节点集CloseL中剔除前向搜索端点s,在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***0以及在搜索结束路网节点集CloseL***前向连接线u的前向端点n(u),并返回步骤S2043;
S20428、当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于终止节点Endp时,计算前进变量HeadDist(n(u))等于GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc(vp(ValidN(n(u)).last +1)以及前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素 LOCcost(n(u)).last,若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除前向连接线u的前向端点n(u),并判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last 是否大等于当前最远匹配节点Pnow,若是,则进入步骤S20429,否则,进入步骤S20430;其中,所述前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))= Euc(vp(ValidN(n(u)).last +1)+LOCcost(n(u)).last
式中,Euc(vp(ValidN(n(u)).last +1)表示GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc,LOCcost(n(u)).last表示前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20429、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),并返回步骤S2044;
S20430、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否大于当前最远匹配节点Pnow,若是,则进入步骤S20431,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前最远匹配节点Pnow,并进入步骤S20432;
S20431、更新当前最远匹配节点Pnow为前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,并清空搜索结束路网节点集CloseL集合,***前向连接线u的前向端点n(u),并返回步骤S2044;
S20432、在搜索打开节点集OpenL末尾位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last 等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,在搜索打开节点集OpenL起始位置***n(u),在对应搜索前进参考变量集OpenValueL起始位置***0,并返回步骤S2043;
S3、由末点vp(k)回溯所述最佳地图匹配路径,遍历获取沿途各GPS轨迹点的最佳匹配结果,并汇总输出匹配结果统计表,其实现方法如下:
S301、由末点vp(k)回溯所述最佳匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素,遍历所述搜索结束路网节点集CloseL选择一最优元素作为匹配路径回溯点,其实现方法如下:
S3011、由末点vp(k)回溯所述最佳匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素;
S3012、对所述搜索结束路网节点集CloseL中各元素道路节点建立循环,并初始化最小总路径加权成本MinCost等于100000,当节点对应轨迹标号集的最后一个元素ValidN(s).last等于当前最远匹配节点Pnow时,建立最优局部路径终点搜索迭代m=false,以及初始化当前搜索路网节点CrtN为前向搜索端点s,当途径连接线集SPvia(s)不为空集,且前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last 等于当前最远匹配节点Pnow时,以及途径连接线集SPvia(s)仅存在一个元素,则检查是否陷入回溯端点死循环,若是,则终止迭代进入搜索结束路网节点集CloseL中下一元素,并进入步骤S3013,否则,进入步骤S3015;
S3013、检查当前最远匹配节点Pnow附近是否存在前向搜索端点s途径连接线集的最后一个元素SPvia(s).last,若是,则找到局部最优终点,并进入步骤S3015,否则,进入步骤S3014;
S3014、若前向搜索端点s途径连接线集的元素数量SPvia(s).size大于1,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;或
若前向搜索端点s为轨迹匹配段落起点,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;
S3015、根据找到的路径回溯端点CrtEndN及所属连接线路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtN).last,计算得到路径总成本TotalCost,并判断所述路径总成本TotalCost是否小于最小总路径加权成本MinCost,若是,则更新最小总路径加权成本MinCost等于路径总成本TotalCost以及最佳匹配尾节点BestEndN等于路径回溯端点CrtEndN,进入下一备选尾节点,并返回步骤S3011,否则,遍历完搜索结束路网节点集CloseL,选择一最优元素作为匹配路径回溯点,并进入步骤S302;其中,路径总成本TotalCost的表达式如下:
TotalCost=SPcost(CrtN)+ PWcost(CrtN)+Euc(vp(Pnow), CrtN)
式中,SPcost(CrtN)表示路径回溯端点CrtEndN的路径物理成本集,PWcost(CrtN)表示路径回溯端点CrtEndN的GPS轨迹点加权成本集,Euc(vp(Pnow), CrtN)表示GPS轨迹点vp(Pnow)和路径回溯端点CrtEndN的欧式距离;
S302、根据所述匹配路径回溯点,以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段匹配过程,其实现方法如下:
S3021、更新起始节点Startp为当前最远匹配节点Pnow+1,并分别初始化当前回溯GPS轨迹点CrtP等于当前最远匹配节点Pnow、当前回溯尾节点CrtEndN等于最佳匹配尾节点BestEndN以及回溯指示变量BackCk等于端点BestEndN途径连接线集的元素数量SPvia(BestEndN).size,建立回溯迭代,并判断回溯迭代的回溯指示变量BackCk是否等于1,若是,则进入步骤S3022,否则,回溯迭代的回溯指示变量BackCk大于1,并进入步骤S3023;
S3022、检查是否已回溯到路网路径起点,若是,则直接终止迭代,并进入步骤S3023,否则,返回步骤S3021;
S3023、建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k;
S3024、当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最优匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k). Weight(Match(k));以及
当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k). Weight(SPvia(CrtEndN).last)小于最佳匹配权重MatchW(k),则匹配结果变量Match(k)为路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最佳匹配权重MatchW(k)为节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的最后一个元素ValidN(CrtEndN).last小于当前回溯GPS轨迹点CrtP时,则当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3025、令k为k-1,并继续循环,若判断循环是否结束,若是,则进入步骤S3026,否则,返回步骤S3024;
S3026、建立从回溯指示变量BackCk到1的逆序循环t;
S3027、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合中的最后一个元素,更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,且路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k). Weight(Match(k));当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3028、令k为k-1,继续循环,并判断循环是否结束,若是,则进入步骤S3029,否则,返回步骤S3027;
S3029、建立从回溯指示变量BackCk到1的逆序循环t;
S30210、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合的最后一个元素,并更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一个元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则使更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k). Weight(Match(k));
若匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且若vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k). Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP等于当前回溯GPS轨迹点CrtP-1;
S30211、令k为k-1,并继续循环,判断循环是否结束,若是,则进入步骤S30212,否则,返回步骤S30210;
S30212、更新路径回溯端点CrtEndN等于其途径连接线集的最后一个元素的尾节点SPvia(CrtEndN).last.tail,以及更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size;
S30213、设置临时点TempN等于SPvia(CrtEndN).last.tail,若SPvia(CrtEndN).size大于1,剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)、轨迹标号集ValidN(CrtEndN)的最后一个元素,更新当前回溯尾节点CrtEndN等于临时点TempN,回溯指示变量BackCk等于路径回溯端点CrtEndN的途径连接线集包含元素数目SPvia(CrtEndN).size,结束循环t;
S30214、判断是否迭代结束,若是,则返回步骤S3023,否则,进入步骤S30215;
S30215、继续迭代,并判断回溯指示变量BackCk是否等于1,若是,则返回步骤S3023,否则,进入步骤S30216;
S30216、判断回溯指示变量BackCk是否大于1,若是,则返回步骤S3023,否则,回溯指示变量BackCk是否等于0,迭代结束,从而实现以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段的匹配过程,并进入步骤S303;
S303、根据当前匹配轨迹段回溯结果,输出从GPS轨迹点vp(Lastp)到GPS轨迹点vp(Pnow)中各GPS轨迹点的匹配结果,并分别清空所有已修改路网节点集NList中涉及路网节点各途径连接线集SPvia、路径物理成本集SPcost、局部截断成本集LOCcost、GPS轨迹点加权成本集PWcost、局部轨迹增量集Padd、对应轨迹标号集ValidN以及端点出发截断成本集StartCut;
S304、判断起始节点Startp是否大于终止节点Endp,若是,则当前出行GPS轨迹点全部匹配结束,并汇总输出匹配结果统计表,并进入步骤S4,否则,起始节点Startp小于终止节点Endp,并进入步骤S4;
S4、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则输出首点vp(1)至中断点vp(s)的匹配结果,并返回步骤S2,否则,完成快速车载GPS轨迹精确地图的匹配,其实现方法如下:
S401、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则进入步骤S402,否则,完成快速车载GPS轨迹精确地图的匹配;
S402、输出首点vp(1)至中断点vp(s)的匹配结果,并从中断点vp(s)到末点vp(k)执行步骤S2至S3,直至完成全部车载GPS轨迹点的匹配。
本实施例中,对西安市2020年1月11日期间使用“GPSkit”人工采集GPS轨迹数据(234公里,26段轨迹,10445轨迹点)进行匹配校验,如图2所示,图2为实验数据分布地图。
本实施例中,其他6种对比轨迹匹配方法包括,4种步进式匹配算法:STM,基于时空分析的匹配算法;HMM,隐式马尔科夫匹配算法;MDP,多准则动态规划匹配算法;LBMM,基于轨迹局部特征的匹配算法;2种分段式匹配算法:SMRI,基于MRI***的分段匹配算法;SRF,基于轨迹特征的分段匹配算法,如表1和表2所示,表1为匹配精度对比表,表2为匹配速度对比表,其中精度计算方式为正确匹配点数量与全部轨迹点数量之比;速度计算方式为每一千个轨迹点所需匹配时间(秒)的以10为底对数值。
表1
Figure DEST_PATH_IMAGE002
表2
Figure DEST_PATH_IMAGE004
本实施例中,本发明基于“路径搜索-轨迹点空间加权”逻辑的匹配算法,算法实现了以“路径搜索导向的轨迹点匹配逻辑”替代了传统的“轨迹点导向的路径搜索逻辑”,避免了传统匹配逻辑中繁复低效的地图数据调用过程,极大提升了地图匹配工作效率。实验表明,当GPS采样间隔为2秒时,与传统步进式匹配方法相比,本方法可提升匹配速度10的4次方倍数量级,与先进的分段式匹配方法相比,本方法提升匹配速度也在10的2次方倍数量级,且当采样间隔小于20秒时,与其他地图匹配算法相比具备最佳的匹配精度。可广泛应用于车载导航、移动位置应用服务、普适计算及城市交通***分析规划管理领域。

Claims (8)

1.一种快速车载GPS轨迹精确地图匹配的方法,其特征在于,包括以下步骤:
S1、获取任一车辆的GPS经过的若干个GPS轨迹点,并对所述若干个GPS轨迹点进行初始化操作,得到有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)};
S2、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环,并根据所述地图匹配工作循环,利用以GPS轨迹点导向的最短路径搜索算法得到首点vp(1)至末点vp(k)的最佳地图匹配路径;
S3、由末点vp(k)回溯所述最佳地图匹配路径,遍历获取沿途各GPS轨迹点的最佳匹配结果,并汇总输出匹配结果统计表;
S4、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则输出首点vp(1)至中断点vp(s)的匹配结果,并返回步骤S2,否则,完成快速车载GPS轨迹精确地图的匹配。
2.根据权利要求1所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S1包括以下步骤:
S101、获取任一车辆的GPS经过的若干个GPS轨迹点;
S102、将所述若干个GPS轨迹点分离为分段集合Trip(a)={T1,T2,…,Ta,…,Tn},其中,Ta表示一个分段,且所述Ta分段内包括多个GPS轨迹点,Tn表示总分段数;
S103、从分段Ta内的多个GPS轨迹点{ p(1),p(2),…,p(i),…,p(n)}中任选一个GPS轨迹点p(i)作为当前GPS轨迹点,其中,p(n)表示总的GPS轨迹点;
S104、判断所述当前GPS轨迹点p(i)至p(i+1)的直线速度是否大于300km/h,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;或
判断所述当前GPS轨迹点p(i)与p(i+1)的间隔时间是否小于等于0,若是,则剔除当前GPS轨迹点p(i),转入下一个GPS轨迹点p(i+1),并重复步骤S104,否则,进入步骤S105;
S105、设当前GPS轨迹点的上一累计行驶距离变量为p(i).lastD;
S106、判断所述p(i).lastD是否小于20米,若是,则计算得到GPS轨迹点p(i-1)至p(i)的距离,并剔除GPS轨迹点p(i),并进入步骤S107,否则,所述p(i).lastD大于20米,并将当前GPS轨迹点p(i)= vp(l)纳入有效节点列表VP={vp(1),vp(2),…,vp(k)},并进入步骤S107;
S107、判断分段Ta内是否所有的GPS轨迹点均被作为当前GPS轨迹点,若是,则建立有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)},并获取所述GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中各GPS轨迹点k在地图数据中的待匹配邻近连接线集合NearL(k),并初始化匹配结果变量Match(k)=-1,最佳匹配权重MatchW(k)=10000,完成有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}的建立,并进入步骤S2,否则,返回步骤S101。
3.根据权利要求1所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S2包括以下步骤:
S201、在所述有效GPS轨迹点列表VP={vp(1),vp(2),…,vp(k)}中,以首点vp(1)至末点vp(k)建立地图匹配工作循环;
S202、根据所述地图匹配工作循环,设有效GPS列表VP={vp(1),vp(2),…,vp(k)}的起始节点为Startp,终止节点为Endp;
S203、判断所述起始节点Startp是否小于等于终止节点Endp,若是,则进入步骤S204,否则,起始节点Startp大于终止节点Endp,完成GPS轨迹的全部匹配,得到首点vp(1)至末点vp(k)的最佳地图匹配路径,并进入步骤S3;
S204、利用以GPS轨迹点导向的最短路径搜索算法搜索起始节点Startp至终止节点Endp的最短路径,并判断最短路径搜索的迭代过程是否结束,若是,则获取备选路径,并进入步骤S3,否则,重复步骤S204,直至最短路径搜索迭代完成。
4.根据权利要求3所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S204包括以下步骤:
S2041、对所述起始节点Startp进行匹配变量初始化处理,所述匹配变量包括上一起始节点Lastp等于起始节点Startp、当前最远匹配节点Pnow、已修改路网节点集NList、搜索打开节点集OpenL、对应搜索前进参考变量集OpenValueL、搜索结束路网节点集CloseL以及起点邻近路网连接线集NearL(Startp);
S2042、对所述起点邻近路网连接线集NearL(Startp)中各连接线建立地图匹配工作循环;
S2043、判断各连接线是否满足出发条件,若是,则将各连接线的对应端点纳入所述搜索打开节点集OpenL,并分别更新所述对应搜索前进参考变量集OpenValueL、已修改路网节点集NList以及更新各连接线对应前向搜索端点s的搜索属性集Search(s),且当循环结束时,所述搜索打开节点集OpenL不为空集,进入步骤S2044;否则,对所述起始节点Startp选取邻近匹配值最大的连接线作为该点匹配结果,并更新起始节点Startp等于起始节点Startp+1,并返回步骤S202,其中,所述端点搜索属性集Search(s)包括端点出发截断成本集StartCut(s)、路径物理成本集SPcost(s)、局部截断成本集LOCcost(s)、GPS轨迹点加权成本集PWcost(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)以及途径连接线集SPvia(s);
S2044、对所述搜索打开节点集OpenL中各路网搜索前向搜索端点s建立迭代,并判断所述迭代的结束条件是否为搜索打开节点集OpenL已为空集,若是,则获取备选路径,并进入步骤S3,否则,进入步骤S2045;
S2045、选取所述搜索打开节点集OpenL中首个前向搜索端点s开展搜索,分别获取对应轨迹标号ValidN(s)以及前向搜索端点s的对应搜索前进参考变量OpenValueL值OpenValueL.begin,并判断所述对应轨迹标号ValidN(s)是否大于起始节点Startp-1,若是,则从搜索打开节点集OpenL以及对应前向搜索端点s的首个对应搜索前进参考变量集OpenValueL中剔除前向搜索端点s及其对应的前进变量HeadDist,并进入步骤S2046,否则,进入步骤S2048;
S2046、若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述对应轨迹标号ValidN(s)小于当前最远匹配节点Pnow,则计算得到前进判断距离Jdist,并进入步骤S2047;或
若所述对应轨迹标号ValidN(s)小于终止节点Endp,且所述局部轨迹增量Padd(s)=0,则计算得到前进判断距离Jdis,并进入步骤S2047;
S2047、判断前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于2*前进判断距离Jdist,且前进判断距离Jdist大于200米,若是,则返回步骤S2045,否则,进入步骤S2048;或
判断所述前向搜索端点s的对应搜索前进参考变量的值OpenValueL(s)是否大于400米且前进判断距离Jdist小于等于200米,若是,则返回步骤S2045,否则,进入步骤S2048;
S2048、对当前搜索前向搜索端点s各前向连接线集合ForwardL建立循环,并提取前向连接线u及下一路网节点n(u),当途径连接线集SPvia(s)不为空集时,若前向搜索端点s途径连接线集SPvia(s)的最后一个元素SPvia(s).last等于前向连接线u时,跳至前向连接线集合ForwardL下一连接线,并继续计算前向连接线u与GPS轨迹点vp(ValidN(s))运动方向夹角MoveAng(u);
S2049、判断所述运动方向夹角MoveAng(u)是否大于等于100度,若是,则跳至前向连接线集合ForwardL中下一前向连接线u,并返回步骤S2048,否则,将前向连接线u按运动方向夹角MoveAng(u)从小到大顺序***拓展连线集NextL,并在循环结束后进入步骤S20410;
S20410、对拓展连线集NextL中元素建立前向搜索循环,提取前向连接线u及下一路网节点n(u),并初始化局部GPS轨迹点加权变量PWac=0、已匹配GPS轨迹点序号Sernow=对应轨迹标号ValidN(s)、局部增量匹配点数AddN=0以及掉头指示变量TurnIndi=false;
S20411、当已匹配GPS轨迹点序号Sernow小于终止节点Endp时,初始化迭代指示变量Indi=true,并建立前向轨迹匹配增益,判断迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20412,否则,进入步骤S20415;
S20412、令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断前向连接线u是否不在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;或
令已匹配GPS轨迹点序号Sernow为已匹配GPS轨迹点序号Sernow+1,在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中搜索前向连接线u,并判断已匹配GPS轨迹点序号Sernow等于终止节点Endp时,迭代结束条件是否为迭代指示变量Indi=false,若是,则进入步骤S20413,否则,前向连接线u在GPS轨迹点vp(Sernow)邻近连线集NearL(Sernow)中,并进入步骤S20414;
S20413、判断局部增量匹配点数AddN是否等于0,若是,则进入步骤S20415,否则,则局部增量匹配点数AddN大于0,并进入步骤S20416;
S20414、分别令局部增量匹配点数AddN为局部增量匹配点数AddN+1,以及计算得到局部GPS轨迹点加权变量PWac,且若GPS轨迹点存在掉头,则掉头指示变量TurnIndi=true,迭代指示变量Indi=false;当局部增量匹配点数AddN=0,则进入步骤S20415;并判断局部增量匹配点数AddND是否大于0,若是,则进入步骤S24021,否则,返回步骤S20412;其中,所述局部GPS轨迹点加权变量PWac的表达式如下:
PWac=PWac+(Sernow).Weight(u)
式中,PWac表示局部GPS轨迹点加权变量,vp(Sernow).Weight(u)表示GPS轨迹点vp;
S20415、当前向搜索端点s大于起始节点Startp时,判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20416,否则,进入步骤S20417;
S20416、计算得到局部搜索成本Costnow,并在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***元素局部搜索成本Costnow,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***元素0,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***元素,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***元素,在已修改路网节点集NList末尾***n(u),并进入步骤S20419,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20417、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20418,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,并进入步骤S20419;
S20418、根据前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last计算得到匹配路径成本Cost1,以及根据计算得到前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,若匹配路径成本Cost1小于匹配路径成本Cost2,则计算得到前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last,并令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last等于前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last=0,以及计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及令前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last等于前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20420,其中,所述匹配路径成本Cost的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last的表达式如下:
LOCcost(n(u)).last=LOCcost(s).last+Length(u)
式中,LOCcost(s).last表示,前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
SPcost(n(u)).last=SPcost(s).last+Length(u)
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20419、根据前向搜索端点s局部截断成本集的最后一个元素LOCcost(s).last 以及前向连接线u的长度Length(u)计算得到前进变量HeadDist,并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***0,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及前向连接线u的长度Length(u),在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(s).last,并进入步骤S20425;其中,所述前进变量HeadDist的表达式如下:
HeadDist=LOCcost(s).last +Length(u)
式中,LOCcost(s).last表示前向搜索端点s局部截断成本集的最后一个元素,Length(u)表示前向连接线u的长度;
S20420、根据所述前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last计算得到当前匹配GPS轨迹点进度Mnow,并判断前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))集合是否为空集,若是,则进入步骤S20421,否则,进入步骤S20422;其中,所述当前匹配GPS轨迹点进度Mnow的表达式如下:
Mnow=ValidN(s).last+AddN
式中,ValidN(s).last表示前向搜索端点s对应轨迹标号集的最后一个元素,AddN表示局部增量匹配点数;
S20421、计算得到局部搜索成本Costnow以及令前向变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow), n(u)),并分别在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾插前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last+局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last+局部GPS轨迹点加权变量PWac以及在已修改路网节点集NList末尾***n(u),并进入步骤S0425,其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20422、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否等于前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last,若是,则进入步骤S20423,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前匹配GPS轨迹点进度Mnow,并进入步骤S20424;
S20423、分别计算得到匹配路径成本Cost1以及匹配路径成本Cost2,若匹配路径成本Cost1小于匹配路径成本Cost2,则令前进变量HeadDist等于GPS轨迹点vp(Mnow)和n(u)的欧式距离Euc(vp(Mnow),n(u)),令前向连接线u的前向端点n(u)局部截断成本集的最后一个元素LOCcost(n(u)).last为前进变量HeadDist,令前向连接线u的前向端点n(u)途径连接线集的最后一个元素SPvia(n(u)).last为前向连接线u,令前向连接线u的前向端点n(u)局部轨迹增量集的最后一个元素Padd(n(u)).last为局部增量匹配点数AddN,以及分别计算得到前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last以及前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).las,并进入步骤S20428;其中,所述匹配路径成本的表达式如下:
Cost1=SPcost(s).last+Length(u)+PWcost(s).last+PWac-StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,PWac表示局部GPS轨迹点加权变量,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述匹配路径成本Cost2的表达式如下:
Cost2=SPcost(n(u)).last+PWcost(n(u)).last
式中,SPcost(n(u)).last表示前向连接线u的前向端点n(u)路径物理成本集最后一个元素,PWcost(n(u)).last表示前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素;
所述前向连接线u的前向端点n(u)路径物理成本集最后一个元素SPcost(n(u)).last的表达式如下:
SPcost(n(u)).last=SPcost(s).last+Length(u)+StartCut(s).last
式中,SPcost(s).last表示前向搜索端点s路径物理成本集的最后一个元素,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
所述前向连接线u的前向端点n(u)GPS轨迹点加权成本集的最后一个元素PWcost(n(u)).last的表达式如下:
PWcost(n(u)).last=PWcost(s).last+PWac
式中,PWcost(s).last表示前向搜索端点s的GPS轨迹点加权成本集的最后一个元素,PWac表示局部GPS轨迹点加权变量;
S20424、执行前进变量HeadDist为GPS轨迹点vp(Mnow)和前向连接线u的前向端点n(u)的欧式距离Euc(vp(Mnow), n(u)),并计算得到局部搜索成本Costnow,以及在前向连接线u的前向端点n(u)的局部截断成本集LOCcost(n(u))末尾***前进变量HeadDist,在前向连接线u的前向端点n(u)的途径连接线集SPvia(n(u))末尾***前向连接线u,在前向连接线u的前向端点n(u)的局部轨迹增量集Padd(n(u))末尾***局部增量匹配点数AddN,在前向连接线u的前向端点n(u)的对应轨迹标号集ValidN(n(u))末尾***当前匹配GPS轨迹点进度Mnow,在前向连接线u的前向端点n(u)的路径物理成本集SPcost(n(u))末尾***前向搜索端点s路径物理成本集的最后一个元素SPcost(s).last以及局部搜索成本Costnow,在前向连接线u的前向端点n(u)的GPS轨迹点加权成本集PWcost(n(u))末尾***前向搜索端点s的GPS轨迹点加权成本集的最后一个元素PWcost(s).last以及局部GPS轨迹点加权变量PWac,并进入步骤S20428;其中,所述局部搜索成本Costnow的表达式如下:
Costnow=Length(u)-StartCut(s).last
式中,Length(u)表示前向连接线u的长度,StartCut(s).last表示前向搜索端点s出发截断成本集最后一个元素;
S20425、当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last小于终止节点Endp时,在搜索结束路网节点集CloseL中剔除前向搜索端点s,并计算得到前进变量HeadDist(n(u)),若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除该元素,并判断前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last是否等于当前最远匹配节点Pnow,若是,则进入步骤S20426,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(s).last小于当前最远匹配节点Pnow,并进入步骤S20427;其中,前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))= Euc(vp(ValidN(s).last +1),n(u)+ LOCcost(n(u)).last)
式中,Euc(vp(ValidN(s).last+1),n(u)表示GPS轨迹点vp(ValidN(s).last和前向连接线u的前向端点n(u)的欧式距离,LOCcost(n(u)).last)表示前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20426、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),在搜索结束路网节点集CloseL中***前向连接线u的前向端点n(u),并返回步骤S2044;
S20427、在搜索打开节点集OpenL末尾位置***n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,则在搜索结束路网节点集CloseL中剔除前向搜索端点s,在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***0以及在搜索结束路网节点集CloseL***前向连接线u的前向端点n(u),并返回步骤S2043;
S20428、当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于终止节点Endp时,计算前进变量HeadDist(n(u))等于GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc(vp(ValidN(n(u)).last +1)以及前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素 LOCcost(n(u)).last,若搜索打开节点集OpenL中有前向连接线u的前向端点n(u),则剔除前向连接线u的前向端点n(u),并判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否大等于当前最远匹配节点Pnow,若是,则进入步骤S20429,否则,进入步骤S20430;其中,所述前进变量HeadDist(n(u))的表达式如下:
HeadDist(n(u))=Euc(vp(ValidN(n(u)).last +1)+LOCcost(n(u)).last
式中,Euc(vp(ValidN(n(u)).last +1)表示GPS轨迹点vp(ValidN(s).last和n(u)的欧式距离Euc,LOCcost(n(u)).last表示前向连接线u的前向端点n(u))和前向连接线u的前向端点n(u)局部截断成本集的最后一个元素;
S20429、在搜索打开节点集OpenL起始位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL起始位置***前进变量HeadDist(n(u)),并返回步骤S2044;
S20430、判断前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last是否大于当前最远匹配节点Pnow,若是,则进入步骤S20431,否则,前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last小于当前最远匹配节点Pnow,并进入步骤S20432;
S20431、更新当前最远匹配节点Pnow为前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last,并清空搜索结束路网节点集CloseL集合,***前向连接线u的前向端点n(u),并返回步骤S2044;
S20432、在搜索打开节点集OpenL末尾位置***前向连接线u的前向端点n(u),在对应搜索前进参考变量集OpenValueL末尾位置***前进变量HeadDist(n(u)),当前向连接线u的前向端点n(u)对应轨迹标号集的最后一个元素ValidN(n(u)).last等于终止节点Endp时,若前向连接线u在GPS轨迹点vp(Endp)邻近连线集NearL(Endp)中,在搜索打开节点集OpenL起始位置***n(u),在对应搜索前进参考变量集OpenValueL起始位置***0,并返回步骤S2043。
5.根据权利要求1所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S3包括以下步骤:
S301、由末点vp(k)回溯所述最佳地图匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素,遍历所述搜索结束路网节点集CloseL选择一最优元素作为匹配路径回溯点;
S302、根据所述匹配路径回溯点,以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段匹配过程;
S303、根据当前匹配轨迹段回溯结果,输出从GPS轨迹点vp(Lastp)到GPS轨迹点vp(Pnow)中各GPS轨迹点的匹配结果,并分别清空所有已修改路网节点集NList中涉及路网节点各途径连接线集SPvia、路径物理成本集SPcost、局部截断成本集LOCcost、GPS轨迹点加权成本集PWcost、局部轨迹增量集Padd、对应轨迹标号集ValidN以及端点出发截断成本集StartCut;
S304、判断起始节点Startp是否大于终止节点Endp,若是,则当前出行GPS轨迹点全部匹配结束,并汇总输出匹配结果统计表,并进入步骤S4,否则,起始节点Startp小于终止节点Endp,并进入步骤S4。
6.根据权利要求5所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S301包括以下步骤:
S3011、由末点vp(k)回溯所述最佳匹配路径,遍历获取沿途各GPS轨迹点,并根据沿途GPS轨迹点,获取搜索结束路网节点集CloseL各元素;
S3012、对所述搜索结束路网节点集CloseL中各元素道路节点建立循环,并初始化最小总路径加权成本MinCost等于100000,当节点对应轨迹标号集的最后一个元素ValidN(s).last等于当前最远匹配节点Pnow时,建立最优局部路径终点搜索迭代m=false,以及初始化当前搜索路网节点CrtN为前向搜索端点s,当途径连接线集SPvia(s)不为空集,且前向搜索端点s对应轨迹标号集的最后一个元素ValidN(s).last等于当前最远匹配节点Pnow时,以及途径连接线集SPvia(s)仅存在一个元素,则检查是否陷入回溯端点死循环,若是,则终止迭代进入搜索结束路网节点集CloseL中下一元素,并进入步骤S3013,否则,进入步骤S3015;
S3013、检查当前最远匹配节点Pnow附近是否存在前向搜索端点s途径连接线集的最后一个元素SPvia(s).last,若是,则找到局部最优终点,并进入步骤S3015,否则,进入步骤S3014;
S3014、若前向搜索端点s途径连接线集的元素数量SPvia(s).size大于1,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;或
若前向搜索端点s为轨迹匹配段落起点,则分别在途径连接线集SPvia(s)、对应轨迹标号集ValidN(s)、局部轨迹增量集Padd(s)、路径物理成本集SPcost(s)以及GPS轨迹点加权成本集PWcost(s)中剔除最后一个元素,并令路径回溯端点CrtEndN等于前向搜索端点s途径连接线集的最后一个元素的尾点SPvia(s).last.tail,并返回步骤S3012;
S3015、根据找到的路径回溯端点CrtEndN及所属连接线路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtN).last,计算得到路径总成本TotalCost,并判断所述路径总成本TotalCost是否小于最小总路径加权成本MinCost,若是,则更新最小总路径加权成本MinCost等于路径总成本TotalCost以及最佳匹配尾节点BestEndN等于路径回溯端点CrtEndN,进入下一备选尾节点,并返回步骤S3011,否则,遍历完搜索结束路网节点集CloseL,选择一最优元素作为匹配路径回溯点,并进入步骤S302;其中,路径总成本TotalCost的表达式如下:
TotalCost=SPcost(CrtN)+PWcost(CrtN)+Euc(vp(Pnow),CrtN)
式中,SPcost(CrtN)表示路径回溯端点CrtEndN的路径物理成本集,PWcost(CrtN)表示路径回溯端点CrtEndN的GPS轨迹点加权成本集,Euc(vp(Pnow),CrtN)表示GPS轨迹点vp(Pnow)和路径回溯端点CrtEndN的欧式距离。
7.根据权利要求5所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S302包括以下步骤:
S3021、更新起始节点Startp为当前最远匹配节点Pnow+1,并分别初始化当前回溯GPS轨迹点CrtP等于当前最远匹配节点Pnow、当前回溯尾节点CrtEndN等于最佳匹配尾节点BestEndN以及回溯指示变量BackCk等于端点BestEndN途径连接线集的元素数量SPvia(BestEndN).size,建立回溯迭代,并判断回溯迭代的回溯指示变量BackCk是否等于1,若是,则进入步骤S3022,否则,回溯迭代的回溯指示变量BackCk大于1,并进入步骤S3023;
S3022、检查是否已回溯到路网路径起点,若是,则直接终止迭代,并进入步骤S3023,否则,返回步骤S3021;
S3023、建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k;
S3024、当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最优匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));以及
当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k).Weight(SPvia(CrtEndN).last)小于最佳匹配权重MatchW(k),则匹配结果变量Match(k)为路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last,最佳匹配权重MatchW(k)为节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的最后一个元素SPvia(CrtEndN).last不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的最后一个元素ValidN(CrtEndN).last小于当前回溯GPS轨迹点CrtP时,则当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3025、令k为k-1,并继续循环,若判断循环是否结束,若是,则进入步骤S3026,否则,返回步骤S3024;
S3026、建立从回溯指示变量BackCk到1的逆序循环t;
S3027、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合中的最后一个元素,更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,且路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));当匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且轨迹点vp(k)对应该连接线的匹配权重vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP为当前回溯GPS轨迹点CrtP-1;
S3028、令k为k-1,继续循环,并判断循环是否结束,若是,则进入步骤S3029,否则,返回步骤S3027;
S3029、建立从回溯指示变量BackCk到1的逆序循环t;
S30210、若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)大于当前回溯GPS轨迹点CrtP时,则剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)以及路径回溯端点CrtEndN的对应轨迹标号集ValidN(CrtEndN)集合的最后一个元素,并更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size,并继续循环下一个元素t-1;以及
若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于等于当前回溯GPS轨迹点CrtP时,则建立从当前回溯GPS轨迹点CrtP到上一起始节点Lastp的逆序循环k,当匹配结果变量Match(k)等于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,则使更新匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k));
若匹配结果变量Match(k)大于-1时,若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)在邻近连线集NearL(k)中,且若vp(k).Weight(SPvia(CrtEndN).at(t))小于最佳匹配权重MatchW(k),则使匹配结果变量Match(k)等于路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t),最佳匹配权重MatchW(k)等于节点k匹配连接线的匹配权重vp(k).Weight(Match(k)),若路径回溯端点CrtEndN途径连接线集的第t个元素SPvia(CrtEndN).at(t)不在邻近连线集NearL(k)中,且若路径回溯端点CrtEndN对应轨迹标号集的第t个元素ValidN(CrtEndN).at(t)小于当前回溯GPS轨迹点CrtP时,则使当前回溯GPS轨迹点CrtP等于当前回溯GPS轨迹点CrtP-1;
S30211、令k为k-1,并继续循环,判断循环是否结束,若是,则进入步骤S30212,否则,返回步骤S30210;
S30212、更新路径回溯端点CrtEndN等于其途径连接线集的最后一个元素的尾节点SPvia(CrtEndN).last.tail,以及更新回溯指示变量BackCk等于路径回溯端点CrtEndN途径连接线集的元素数量SPvia(CrtEndN).size;
S30213、设置临时点TempN等于SPvia(CrtEndN).last.tail,若SPvia(CrtEndN).size大于1,剔除路径回溯端点CrtEndN的途径连接线集SPvia(CrtEndN)、轨迹标号集ValidN(CrtEndN)的最后一个元素,更新当前回溯尾节点CrtEndN等于临时点TempN,回溯指示变量BackCk等于路径回溯端点CrtEndN的途径连接线集包含元素数目SPvia(CrtEndN).size,结束循环t;
S30214、判断是否迭代结束,若是,则返回步骤S3023,否则,进入步骤S30215;
S30215、继续迭代,并判断回溯指示变量BackCk是否等于1,若是,则返回步骤S3023,否则,进入步骤S30216;
S30216、判断回溯指示变量BackCk是否大于1,若是,则返回步骤S3023,否则,回溯指示变量BackCk是否等于0,迭代结束,从而实现以最优匹配尾节点BestEndN为尾节点回溯完成当前轨迹段的匹配过程,并进入步骤S303。
8.根据权利要求1所述的快速车载GPS轨迹精确地图匹配的方法,其特征在于,所述步骤S4包括以下步骤:
S401、根据所述匹配结果统计表,判断匹配中途是否存在由地图匹配工作循环引起的中断点,若是,则进入步骤S402,否则,完成快速车载GPS轨迹精确地图的匹配;
S402、输出首点vp(1)至中断点vp(s)的匹配结果,并从中断点vp(s)到末点vp(k)执行步骤S2至S3,直至完成全部车载GPS轨迹点的匹配。
CN202110005167.7A 2021-01-05 2021-01-05 一种快速车载gps轨迹精确地图匹配的方法 Active CN112327338B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110005167.7A CN112327338B (zh) 2021-01-05 2021-01-05 一种快速车载gps轨迹精确地图匹配的方法
PCT/CN2021/101240 WO2022147968A1 (zh) 2021-01-05 2021-06-21 一种快速车载gps轨迹精确地图匹配的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110005167.7A CN112327338B (zh) 2021-01-05 2021-01-05 一种快速车载gps轨迹精确地图匹配的方法

Publications (2)

Publication Number Publication Date
CN112327338A CN112327338A (zh) 2021-02-05
CN112327338B true CN112327338B (zh) 2021-03-30

Family

ID=74302127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110005167.7A Active CN112327338B (zh) 2021-01-05 2021-01-05 一种快速车载gps轨迹精确地图匹配的方法

Country Status (2)

Country Link
CN (1) CN112327338B (zh)
WO (1) WO2022147968A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112327338B (zh) * 2021-01-05 2021-03-30 长安大学 一种快速车载gps轨迹精确地图匹配的方法
CN113254562B (zh) * 2021-06-18 2021-09-28 长安大学 一种高效gps轨迹地图匹配方法
CN116701492B (zh) * 2023-08-03 2023-11-24 智慧足迹数据科技有限公司 轨迹匹配程度校验方法、装置、计算机设备及存储介质
CN117889871B (zh) * 2024-03-14 2024-05-10 德博睿宇航科技(北京)有限公司 一种导航路网匹配精准位置梯次迭代搜寻方法和***

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100713459B1 (ko) * 2004-08-31 2007-05-02 삼성전자주식회사 네비게이션 시스템 및 네비게이션 시스템에서 이동체의경로 이탈 판단 방법
US9684081B2 (en) * 2015-09-16 2017-06-20 Here Global B.V. Method and apparatus for providing a location data error map
AU2017399007B2 (en) * 2017-02-17 2021-12-23 Dataspark Pte, Ltd Mobility gene for trajectory data
CN109143291B (zh) * 2018-06-29 2020-10-16 长安大学 一种车载gps轨迹空间索引精确匹配方法
CN109405839B (zh) * 2018-10-23 2022-04-12 南京林业大学 一种基于多路径的交通网络离线地图匹配算法
CN109459047B (zh) * 2018-12-24 2022-10-18 武汉大学 车辆高精度定位数据与导航地图精确匹配及变道行为探测方法
CN110555992B (zh) * 2019-09-11 2021-05-28 中国矿业大学(北京) 一种基于gps轨迹数据的出租车行驶路径信息提取方法
CN112015835B (zh) * 2020-08-13 2022-09-30 安徽师范大学 Geohash压缩的地图匹配方法
CN112020012B (zh) * 2020-08-18 2022-09-30 深圳诺地思维数字科技有限公司 一种移动轨迹重建及道路匹配方法、存储介质及服务器
CN112327338B (zh) * 2021-01-05 2021-03-30 长安大学 一种快速车载gps轨迹精确地图匹配的方法

Also Published As

Publication number Publication date
WO2022147968A1 (zh) 2022-07-14
CN112327338A (zh) 2021-02-05

Similar Documents

Publication Publication Date Title
CN112327338B (zh) 一种快速车载gps轨迹精确地图匹配的方法
CN109143291B (zh) 一种车载gps轨迹空间索引精确匹配方法
CN109405839B (zh) 一种基于多路径的交通网络离线地图匹配算法
CN113254562B (zh) 一种高效gps轨迹地图匹配方法
CN110095127A (zh) 一种基于分段的隐马尔可夫模型地图匹配方法
CN106840175B (zh) 一种车辆行驶轨迹匹配路网的方法及装置
CN112015835B (zh) Geohash压缩的地图匹配方法
CN109059939A (zh) 基于隐马尔科夫模型的地图匹配算法
CN112309118B (zh) 一种基于时空相似度的车辆轨迹推算方法
CN105184393A (zh) 一种复杂路径下辅助路径还原方法
CN106156531B (zh) 基于低采样历史轨迹的行程时间估计方法
CN114202120A (zh) 一种针对多源异构数据的城市交通行程时间预测方法
CN109035783A (zh) 一种基于公交gps轨迹的虚拟路网缺失路段自动识别方法
CN108132056B (zh) 一种通过gps推断公交路径方法
CN112067005A (zh) 一种基于转弯点的离线地图匹配方法、装置及终端设备
CN115586557A (zh) 一种基于路网数据的车辆行驶轨迹纠偏方法及装置
CN114866969A (zh) 基于手机信令大数据的地铁清分清算方法与***
CN111160480A (zh) 地下停车场出入口挖掘方法、装置及电子设备
CN110986965A (zh) 基于隐马尔可夫模型的低频浮动车轨迹数据路网匹配方法
CN113932821A (zh) 基于连续窗口平均方向特征的轨迹地图匹配方法
CN112033418A (zh) 一种离线地图匹配方法
CN111397632A (zh) 一种大规模路网的分块预处理路径规划方法
Das et al. Map enhanced route travel time prediction using deep neural networks
CN114993325A (zh) 一种车辆gps地图道路匹配方法、装置及存储介质
CN111896013B (zh) 一种大规模路网中的货车远距离路径的预处理规划方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant