一种沿轨迹线生成地图瓦片坐标的方法与流程

文档序号:11864721阅读:462来源:国知局
一种沿轨迹线生成地图瓦片坐标的方法与流程

本发明涉及一种沿轨迹线生成地图瓦片坐标的方法。



背景技术:

基于位置服务的应用一般都是在连接到网络的情况下使用在线网络地图瓦片数据来做地图展示,在没有网络的状态下展示地图,需要先下载在线的地图瓦片数据到本地;下载地图瓦片的方式通常是选择矩形区域下载,此方式实现较为简单,但其地图瓦片数据利用率太低,很多区域的地图瓦片数据在实际应用中是多余的,应用的使用者并不关心那部分地图瓦片数据,造成了下载资源、本地存储空间的浪费。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种沿轨迹线生成地图瓦片坐标的方法,实现沿轨迹线对地图瓦片坐标进行获取,将其用于下载地图数据能够极大减少下载的时间和下载的地图瓦片数,实际应用中能极大提升用户体验并节约大量的本地存储空间。

本发明的目的是通过以下技术方案来实现的:一种沿轨迹线生成地图瓦片坐标的方法,包括以下步骤:

S1.给定开始点和结束点的经纬度坐标数据;

S2.计算开始点和结束点的瓦片坐标(即在瓦片坐标系中的行列坐标);

S3.根据开始点和结束点的经纬度坐标数据计算弧度值;

S4.令当前瓦片坐标等于开始点瓦片坐标;

S5.记录当前点瓦片坐标,并判断当前点瓦片坐标和结束点瓦片坐标是否相同:

(1)当前点瓦片坐标和结束点瓦片坐标相同,转至步骤S9;

(2)当前点瓦片坐标与结束点瓦片坐标不同,进入步骤S6;

S6.计算当前点瓦片坐标所包含的经纬度范围;

S7.根据经纬度范围依次计算当前点瓦片坐标的左上、左下、右上、右下四个顶点的经纬度坐标,分别记为lu、ld、ru、rd;

S8.根据弧度值所在区间,结合开始点、结束点的连线与当前点瓦片坐标四个顶点之间的连线的相交关系,对当前点瓦片坐标进行更新,更新后返回步骤S5;

S9.输出记录的所有瓦片坐标。

进一步可根据计算得出的瓦片坐标实现地图瓦片数据的下载。

所述的步骤S1包括以下子步骤:

S01.依次给定两个初始点的经纬度数据;

S02.以第一个点作为开始点,第二个点作为结束点,得到开始点和结束点的经纬度数据。

步骤S8中,需要结合瓦片坐标系的类型对当前瓦片坐标更新。

所述的瓦片坐标系类型包括Google瓦片坐标系和TMS瓦片坐标系。

所述的瓦片坐标系为Google瓦片坐标系时,所述的步骤S8包括以下子步骤:

S801.判断弧度值是否处于(0,π/2]区间;

(1)弧度值处于(0,π/2]区间,开始点与结束点连线向右上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标加1;

(2)弧度值不处于(0,π/2]区间,进入步骤S802;

S802.判断弧度值是否处于(π/2,π]区间:

(1)弧度值处于(π/2,π]区间,开始点与结束点连线向左上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标行坐标减去1,列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2) 弧度值不处于(π/2,π]区间,进入步骤S803;

S803.判断弧度值是否处于(-π, -π/2]区间:

(1)弧度值处于(-π, -π/2]区间,开始点与结束点连线向左下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与及lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1、列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2)弧度值不处于(-π, -π/2]区间,进入步骤S804;

S804.认为弧度值处于(-π/2,0]区间,开始点与结束点的连线向右下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1、列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标加1,并返回步骤S5。

所述的瓦片坐标系为TMS瓦片坐标系时,所述的步骤S8包括以下子步骤:

S811.判断弧度值是否处于(0,π/2]区间;

(1)弧度值处于(0,π/2]区间,开始点与结束点连线向右上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标加1;

(2)弧度值不处于(0,π/2]区间,进入步骤S812;

S812.判断弧度值是否处于(π/2,π]区间:

(1)弧度值处于(π/2,π]区间,开始点与结束点连线向左上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标行坐标加1,列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2) 弧度值不处于(π/2,π]区间,进入步骤S813;

S813.判断弧度值是否处于(-π, -π/2]区间:

(1)弧度值处于(-π, -π/2]区间,开始点与结束点连线向左下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与及lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1、列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2)弧度值不处于(-π, -π/2]区间,进入步骤S814;

S814.认为弧度值处于(-π/2,0]区间,开始点与结束点的连线向右下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1、列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标加1,并返回步骤S5。

本发明的有益效果是:实现了沿轨迹线对地图瓦片坐标进行获取,将其用于下载地图数据能够极大减少下载的时间和下载的地图瓦片数,实际应用中能极大提升用户体验并节约大量的本地存储空间。

附图说明

图1为本发明的流程图。

图2为Google瓦片坐标系示意图。

图3为TMS瓦片坐标系示意图。

具体实施方式

下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。

如图1所示,一种沿轨迹线生成地图瓦片坐标的方法,包括以下步骤:

S1.给定开始点和结束点的经纬度坐标数据;

S2.计算开始点和结束点的瓦片坐标(即在瓦片坐标系中的行列坐标);

S3.根据开始点和结束点的经纬度坐标数据计算弧度值;

S4.令当前瓦片坐标等于开始点瓦片坐标;

S5.记录当前点瓦片坐标,并判断当前点瓦片坐标和结束点瓦片坐标是否相同:

(1)当前点瓦片坐标和结束点瓦片坐标相同,转至步骤S9;

(2)当前点瓦片坐标与结束点瓦片坐标不同,进入步骤S6;

S6.计算当前点瓦片坐标所包含的经纬度范围;

S7.根据经纬度范围依次计算当前点瓦片坐标的左上、左下、右上、右下四个顶点的经纬度坐标,四个顶点分别记为lu、ld、ru、rd;

lu为当前点瓦片坐标左上顶点,ld为当前点瓦片坐标左下顶点,ru为当前点瓦片坐标右上顶点,rd为当前点瓦片坐标右下顶点。

S8.根据弧度值所在区间,结合开始点、结束点的连线与当前点瓦片坐标四个顶点之间的连线的相交关系,对当前点瓦片坐标进行更新,更新后返回步骤S5;

S9.输出记录的所有瓦片坐标。

进一步可根据计算得出的瓦片坐标实现地图瓦片数据的下载。

所述的步骤S1包括以下子步骤:

S01.依次给定两个初始点的经纬度数据;

S02.以第一个点作为开始点,第二个点作为结束点,得到开始点和结束点的经纬度数据。

步骤S8中,需要结合瓦片坐标系的类型对当前瓦片坐标更新。

所述的瓦片坐标系类型包括Google瓦片坐标系和TMS瓦片坐标系。

如图2所示,为Google瓦片坐标系示意图,如图3所示,为TMS瓦片坐标系示意图;由图2和图3可以看出,Google瓦片坐标系和TMS瓦片坐标系的坐标变化方式不同,因此,在Google瓦片坐标系和TMS瓦片坐标系中生成瓦片坐标的方法也有相应不同。

所述的瓦片坐标系为Google瓦片坐标系时,所述的步骤S8包括以下子步骤:

S801.判断弧度值是否处于(0,π/2]区间;

(1)弧度值处于(0,π/2]区间,开始点与结束点连线向右上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标加1;

(2)弧度值不处于(0,π/2]区间,进入步骤S802;

S802.判断弧度值是否处于(π/2,π]区间:

(1)弧度值处于(π/2,π]区间,开始点与结束点连线向左上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标行坐标减去1,列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2) 弧度值不处于(π/2,π]区间,进入步骤S803;

S803.判断弧度值是否处于(-π, -π/2]区间:

(1)弧度值处于(-π, -π/2]区间,开始点与结束点连线向左下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与及lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1、列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2)弧度值不处于(-π, -π/2]区间,进入步骤S804;

S804.认为弧度值处于(-π/2,0]区间,开始点与结束点的连线向右下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1、列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标加1,并返回步骤S5。

所述的瓦片坐标系为TMS瓦片坐标系时,所述的步骤S8包括以下子步骤:

S811.判断弧度值是否处于(0,π/2]区间;

(1)弧度值处于(0,π/2]区间,开始点与结束点连线向右上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标加1;

(2)弧度值不处于(0,π/2]区间,进入步骤S812;

S812.判断弧度值是否处于(π/2,π]区间:

(1)弧度值处于(π/2,π]区间,开始点与结束点连线向左上延伸,分为以下三种情况:

① 如果开始点与结束点连线既与lu和ru的连线相交,也与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标行坐标加1,列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与lu和ru的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标加1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2) 弧度值不处于(π/2,π]区间,进入步骤S813;

S813.判断弧度值是否处于(-π, -π/2]区间:

(1)弧度值处于(-π, -π/2]区间,开始点与结束点连线向左下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与及lu和ld的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1、列坐标减1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与lu和ld的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标减1,并返回步骤S5;

(2)弧度值不处于(-π, -π/2]区间,进入步骤S814;

S814.认为弧度值处于(-π/2,0]区间,开始点与结束点的连线向右下延伸,分为以下三种情况:

① 如果开始点与结束点连线既与ld和rd的连线相交,也与ru和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1、列坐标加1,并返回步骤S5;

② 如果开始点与结束点连线只与ld和rd的连线相交,对当前点瓦片坐标进行更新:将当前点瓦片坐标中的行坐标减1,并返回步骤S5;

③ 如果开始点与结束点连线只与ru和rd的连线相交,对当前点瓦片坐标进行更新,将当前点瓦片坐标中的列坐标加1,并返回步骤S5。

瓦片坐标系(Google瓦片坐标系或TMS瓦片坐标系)中的纵坐标(Y轴)即本申请中所说的行坐标,瓦片坐标系中的横坐标(X轴)即本申请中所说的列坐标。

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