1.一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:包括以下步骤:
S1.给定开始点和结束点的经纬度坐标数据;
S2.计算开始点和结束点的瓦片坐标;
S3.根据开始点和结束点的经纬度坐标数据计算弧度值;
S4.令当前瓦片坐标等于开始点瓦片坐标;
S5.记录当前点瓦片坐标,并判断当前点瓦片坐标和结束点瓦片坐标是否相同:
(1)当前点瓦片坐标和结束点瓦片坐标相同,转至步骤S9;
(2)当前点瓦片坐标与结束点瓦片坐标不同,进入步骤S6;
S6.计算当前点瓦片坐标所包含的经纬度范围;
S7.根据经纬度范围依次计算当前点瓦片坐标的左上、左下、右上、右下四个顶点的经纬度坐标,分别记为lu、ld、ru、rd;
S8.根据弧度值所在区间,结合开始点、结束点的连线与当前点瓦片坐标四个顶点之间的连线的相交关系,对当前点瓦片坐标进行更新,更新后返回步骤S5;
S9.输出记录的所有瓦片坐标。
2.根据权利要求1所述的一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:所述的步骤S1包括以下子步骤:
S01.依次给定两个初始点的经纬度数据;
S02.以第一个点作为开始点,第二个点作为结束点,得到开始点和结束点的经纬度数据。
3.根据权利要求1所述的一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:步骤S8中,需要结合瓦片坐标系的类型对当前瓦片坐标更新。
4.根据权利要求3所述的一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:所述的瓦片坐标系类型包括Google瓦片坐标系和TMS瓦片坐标系。
5.根据权利要求4所述的一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:所述的瓦片坐标系为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。
6.根据权利要求4所述的一种沿轨迹线生成地图瓦片坐标的方法,其特征在于:所述的瓦片坐标系为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。