地理信息系统的地图生成方法和系统的制作方法_3

文档序号:9453795阅读:来源:国知局
7] 接着,按照该分割点(Xnud[i],ynud[i])到与该分割点对应的已知坐标点(x[i], y[i])的路径,将第一线段进行平移,并按照贝塞尔控制系数kcontral,以与分害U点(Xnud[i],ynild[i])对应的已知坐标点(x[i],y[i])为中心对第一线段进行缩放,得到第一线段缩放 后的端点坐标为:
[0118] xcontraU[i] = x[i] + (xnid_1[i]-xnid[i]) ?kcontral
[0119] yccintrai-i[i] = y[i] + (ymid-i[i]imd[i]) ?kcontral
[0120] xcontral-2[i] = x[i] + (xnid-2[i]-xnid[i]) ?kcontral
[0121] yc〇ntrai-2[i] = y[i] + (ymid-2[i]imd[i]) ?kcontral〇
[0122] 其中,(xccintrall[i],yccintrall[i])和(xccintral2[i],yrantral2[i])为位于该任意三个相 邻的已知坐标点(x[i-l],y[i-l])、(x[i],y[i])和(x[i+l],y[i+l])之间的贝塞尔控制 点的坐标。本实施例中,krantMl>0,且其数值越大,道路平滑处理后的拐角处越锐利。可以理 解的,本领域技术人员可以根据实际需要的道路拐角锐利程度或平滑程度,选择合适的贝 塞尔控制系数k。ontral°
[0123] 对道路上除了首尾两个端点之外的其他已知坐标点重复上述操作,直至计算出所 有已知坐标点对应的贝塞尔曲线控制点,并记录所有贝塞尔曲线控制点坐标。
[0124] 可以理解的,一个道路被该道路上的各个已知坐标点分割成若干个线段,由于在 计算贝塞尔控制点时,一个道路的任意两个相邻的线段之间的两个控制点,均位于同一个 已知坐标点附近,且与该已知坐标点共线,因此能够保证各段分别计算出的贝塞尔曲线之 间的平滑性。
[0125] S220,根据计算出的贝塞尔控制点计算道路的贝塞尔插值点的坐标和里程数。
[0126] -个道路上,由起点、终点两个已知坐标点与其相邻的已知坐标点所分割成的线 段只拥有一个贝塞尔控制点,而由其他已知坐标点依次分割成的线段均有两个贝塞尔控制 点。因此,在求取各个线段的贝塞尔插值点坐标时,对于起点、终点两个已知坐标点对应的 首尾两个线段使用二阶贝塞尔曲线插值,对于其他线段使用三阶贝塞尔曲线插值。
[0127] 首尾两个线段的贝塞尔插值点的坐标为:
[0132] 其中,j= 1,......,nbezlCT_l,np为一个道路的已知坐标点的数量,nbezlCT为同一 个道路的任意两个相邻的已知坐标点之间的贝塞尔插值点的数量。(xtezlCT[0] [j],ytezlCT[0] [j])为首线段的第j个贝塞尔插值点的坐标,〇WCT[np-2] [j],ytezlCT[np_2] [j])为首尾线 段的第j个贝塞尔插值点的坐标。
[0133] 其他线段的贝塞尔插值点的坐标为:
[0136] 其中,j=l,..... * ?-^-bezier^ ?-^bezier[i] [j]、ytezlCT[i] [j]为一个道路的第i个线 段的第j个贝塞尔插值点的坐标。本实施例中,一个道路的任意两个相邻的已知坐标点之 间的道路为一个线段。
[0137] 按照上述方法,计算道路的所有贝塞尔插值点。
[0138] 以下计算道路上各个贝塞尔插值点的里程数,假设坐标为(xbezlCT[i] [j],ybezlCT[i] [j])的贝塞尔插值点位于道路上的第i个已知坐标点和第i+1个已知坐标点之间,而通过 步骤S100可以获取到第i个已知坐标点的里程数为1 [i],第i+1个已知坐标点的里程数为 l[i+l]〇
[0139] 通过坐标数值计算道路上任意两个相邻已知坐标点的距离smv
[0140]
0C~lL, 〇
[0141] 其中,nbezlCT为道路的两个相邻的已知坐标点之间的贝塞尔插值点的数量。
[0142] 然后计算从道路上第i个已知坐标点到坐标为(xbezlCT[i] [j],ybezlCT[i] [j])的贝 塞尔插值点之间的距离总和
[0143]
[0144] 则各个贝塞尔插值点的里程数为:
[0145]
[0146] 其中,ltezlCT[i][j]为道路的第i个线段的第j个贝塞尔插值点的坐标,j= 1 '......? ^bezier 1 0
[0147] 使用上述方法,计算道路上所有贝塞尔插值点的里程数,以及道路上所有贝塞尔 插值点的里程数。
[0148] S300,根据所获取的道路两侧的物体的信息及道路的已知坐标点的信息和贝塞尔 插值点的信息,计算道路两侧的物体的坐标。
[0149] 道路两侧的物体的类型可以包括点状物体、线状物体和二维形状物体。
[0150] 对于道路两侧的物体的类型为点状物体的情况,可以利用插值后的道路上的各个 已知点,以及点状物体对应道路的里程数及其与道路的距离,利用插值和坐标平移的方法 更精确的计算出点状物体的实际坐标。参见图3, 一个实施例中,步骤300可以包括以下具 体子步骤:
[0151] S310,计算点状物体在经过插值平滑处理后的道路上的投影点的坐标。
[0152] 对于里程数已知的点状物体,可以根据其里程数与道路上已知坐标点和贝塞尔插 值点所组成的集合里的已知点里程数的比较,得到其在道路上的投影点的坐标。其中,已知 点为道路上的所有已知坐标点和与道路对应的各个贝塞尔插值点组成的集合里的一个点, 第i个已知点的坐标为om],/[i])。
[0153] 具体的,可以将点状物体的里程数与道路上的已知坐标点的里程数和与当前各个 贝塞尔插值点的里程数对比:
[0154] 若点状物体的里程数与道路上的已知坐标点和各个贝塞尔插值点中的一个 已知点的里程数相等,则点状物体在经过插值平滑处理后的道路上的投影点的坐标 (太1/,)为已知点的坐标。
[0155] 否则,通过公式:
[0156]
[0157]
[0158] 计算点状物体在经过插值平滑处理后的道路上的投影点的坐标。其中,为点状 物体的里程数,:U立于两个已知点的里程数r[i]和r[i+i]之间,两个已知点的坐标分别 为(x*[i],/[i])和(x*[i+l],/[i+l])。已知点为该道路上的已知坐标点或与该道路对应 的各个贝塞尔插值点。
[0159] S320,根据计算出的投影点的坐标计算点状物体的实际坐标。
[0160] 可以采用d_表示点状物体与该点状物体所在的道路之间的距离。且d_为正值 时,可以设定点状物体位于该道路从里程数零开始的方向(下行方向)的右侧。d_为负值 时,可以设定点状物体位于该道路从里程数零开始的方向(下行方向)的左侧。d_为零 时,可以设定点状物体正好位于该道路上。
[0161] 对于点状物体在道路上的投影点,算法根据投影点位置的不同,采用不同的方法 近似出投影点附近道路曲线的切线方向,从而可以将投影点向切线的垂线方向进行相应距 离的坐标平移,由此得到点状物体的实际坐标。
[0162] 具体的,若点状物体的里程数等于经过插值平滑处理后的道路的起点UlO], /[0])的里程数,即点状物体的投影点坐标正好位于该道路的起点,投影点的切线方向即 为经过插值平滑处理后的道路首段方向,点状物体的实际坐标为:
[0165] 若点状物体的里程数等于经过插值平滑处理后的道路的终点(/K-1], .r["" - 1])的里程数,即点状物体的投影点坐标正好位于该道路的终点,投影点的切线方
[0163]
[0164]
[0166] 向即为经过插值平滑处理后的道路末段方向,点状物体的实际坐标为:
[0167]
[0168] 若点状物体的里程数等于经过插值平滑处理后的道路的除了起点和终点外的其 他一个已知点(xlihyli])的里程数,即点状物体的投影点坐标也正好位于该已知点处, 投影点的切线方向即为经过插值平滑处理后的道路在该已知点上下游两个相邻已知点的 连线方向,点状物体的实际坐标为:
[0169]
[0170]
[0171] 若点状物体的里程数等于经过插值平滑处理后的道路中的两个相邻的已知点 (x*[i],/[i])和(x*[i+l],/[i+1])的里程数之间,其投影点位于两个相邻的已知点 (X*[i],/[i])和(X*[i+1],y*[i+l])之间,其切线方向为该两个相邻的已知点(X*[i], /[i])和(x*[i+l],/[i+l])的连线方向,点状物体的实际坐标为:
[0172]
[0173]
[0174] 对于道路两侧的物体的类型为线状物体的情况,可以将插值后的道路上在其起点 和终点里程数范围内的相关坐标点通过坐标平移投影在物体的曲线上,再利用贝塞尔曲线 对起点、终点和投影点之间的曲线进行插值平滑,得到相关贝塞尔插值点的坐标,最终得到 物体曲线的完整坐标信息。参见图4,一个实施例中,步骤300可以包括以下具体子步骤:
[0175] S330,计算道路上的已知坐标点在线状物体的两端端点之间的投影点坐标。
[0176] 首先根据线状物体
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1