发明名称 基于GPS定位的道路网络栅格数字地图自动生成方法
摘要 本发明涉及一种地图测绘领域的基于GPS定位的道路网络栅格数字地图自动生成方法。本发明用车载GPS设备采集汽车在道路网络上的行驶轨迹数据(即道路信息数据),并用计算机对行驶轨迹数据进行大地坐标到城建坐标的转换,然后存入轨迹数据库;用计算机对轨迹数据库中的行驶轨迹数据进行过滤和增强;然后,采用计算机处理过滤和增强过的行驶轨迹数据,生成道路网络栅格数字地图粗图;最后,采用计算机对上述粗图进行处理,生成道路网络栅格数字地图。本发明所采用数据源获取方便且获取成本较低,其生成的道路网络栅格数字地图完整清晰、精度高,并与实际道路网络同步,因此可更好地满足对道路网络地图及时性和精确性的应用要求。
申请公布号 CN101464158B 申请公布日期 2011.04.20
申请号 CN200910045401.8 申请日期 2009.01.15
申请人 上海交通大学 发明人 史文欢;闫焱;申抒含;刘允才
分类号 G01C21/32(2006.01)I;G09B29/00(2006.01)I 主分类号 G01C21/32(2006.01)I
代理机构 上海交达专利事务所 31201 代理人 王锡麟;王桂忠
主权项 1.一种基于GPS定位的道路网络栅格数字地图自动生成方法,其特征在于包括如下步骤:第一步,在车群上加装车载GPS设备,实时采集汽车在道路网络上的行驶轨迹数据,然后利用已有地图投影公式将行驶轨迹数据中的大地经纬度数据转换成城建坐标数据,最后存入轨迹数据库;第二步,采用计算机对轨迹数据库中的行驶轨迹数据进行阈值过滤,将速度大的轨迹点数据删除,同时采用计算机在过滤后同一ID相邻时刻的轨迹点数据之间插入二者的中点数据,并删除上述轨迹数据中除城建坐标外的数据项;第三步,采用计算机对上述离散的轨迹点进行膨胀处理直至离散的轨迹点连成实线,紧接着再进行腐蚀处理来光滑实线边沿,生成边沿光滑的道路网络栅格数字地图粗图;第四步,采用计算机对上述粗图实施两次膨胀处理后再细化处理,最终得到道路网络栅格数字地图;所述的地图投影公式为:<img file="FSB00000423564300011.GIF" wi="1500" he="231" />其中(x,y)为城建坐标,l,d分别为经度和纬度;所述的阈值过滤是指:将第一步处理过的行驶轨迹数据由数据库分批读入内存,当速度大于50km/h时则将该轨迹点数据删除;所述的插入二者的中点数据,并删除上述轨迹数据中除城建坐标外的数据项是指:计算与当前速度低于50km/h的有效轨迹点具有相同ID的上一时刻有效轨迹点之间的时间间隔:如果时间间隔在10秒以内,则在两个轨迹点数据之间插入一个新轨迹点,新轨迹点X轴坐标和Y轴坐标分别为前二者X轴坐标和Y轴坐标的均值,定义一个二维数组Trace并将全部元素初始化为0,逐次将内存中的轨迹点存储到数组中:对于城建坐标为(x,y)的轨迹点,将Trace[3800-y][x+800]置为1,其表示在城建坐标系的(x,y)位置上存在有效轨迹点;所述的膨胀处理是指:定义一个与Trace同阶的二维数组Temp,将Trace 数组中以Trace[i][j]为中心的3×3区域中的元素值复制到3×3二维数组neighbor中,检查neighbor中是否有值为1的元素,如有,则将Temp[i][j]置为1,否则置为0,用循环命令语句对Trace全部元素进行一遍上述处理,最后将Temp中的元素值全部复制回Trace数组中,重复执行六次;所述的腐蚀处理是指:将Trace数组中以Trace[i][j]为中心的3×3区域中的元素值复制到3×3二维数组neighbor中,检查neighbor中是否有值为0的元素,如果有,则将Temp[i][j]置为0,否则置为1,用循环命令语句对Trace全部元素进行一遍上述处理,最后将Temp中的元素值复制回Trace数组中;所述的细化处理是指:1)定义一个与Trace同阶的二维数组Temp,将Trace数组中以Trace[i][j]为中心的5×5区域中的元素值复制到5×5二维数组neighbor中,计算nCount=neighbor[1][1]+neighbor[1][2]+neighbor[1][3]+neighbor[2][1]+neighbor[2][2]+ neighbor[2][3]+neighbor[3][1]+neighbor[3][2]+neighbor[3][3],定义布尔变量bCondition1,如果2≤nCount≤6,则将其置为true,否则置为false;2)将nCount清零,逐次判断neighbor[1][2]=0 &amp; neighbor[1][1]=1、neighbor[1][1]=0 &amp; neighbor[2][1]=1、neighbor[2][1]=0 &amp; neighbor[3][1]=1、neighbor[3][1]=0 &amp; neighbor[3][2]=1、neighbor[3][2]=0 &amp; neighbor[3][3]=1、neighbor[3][3]=0 &amp; neighbor[2][3]=1、neighbor[2][3]=0 &amp; neighbor[1][3]=1、neighbor[1][3]=0 &amp; neighbor[1][2]=1是否成立,如果成立,则nCount每次增1,否则不变,最后定义布尔变量bCondition2,并判断nCount=1是否成立,如果成立,则将其置为true,否则置为false;3)定义布尔变量bCondition3,判断neighbor[1][2]×neighbor[2][1]×neighbor[2][3]=1是否成立,如果成立,则将bCondition3置为true后转到步骤4),否则,先将nCount清零,然后逐次判断neighbor[0][2]=0 &amp; neighbor[0][1]=1、neighbor[0][1]=0 &amp; neighbor[1][1]=1、neighbor[1][1]=0 &amp; neighbor[2][1]=1、neighbor[2][1]=0 &amp; neighbor[2][2]=1、neighbor[2][2]=0 &amp; neighbor[2][3]=1、neighbor[2][3]=0 &amp; neighbor[1][3]=1、neighbor[1][3]=0 &amp; neighbor[0][3]=1、neighbor[0][3]=0 &amp; neighbor[0][2]=1是否成立,如果成立,则nCount每次增1,最后判断nCount是否为1,如果不为1,则将bCondition3置为true,否则置为false; 4)定义布尔变量bCondition4,判断neighbor[1][2]×neighbor[2][1]×neighbor[3][2]=0是否成立,如果成立则将bCondition4置为true并转到步骤5),否则,先将nCount清零,逐次判断neighbor[1][1]=0 &amp; neighbor[1][0]=1、neighbor[1][0]=0 &amp; neighbor[2][0]=1、neighbor[2][0]=0 &amp; neighbor[3][0]=1、neighbor[3][0]=0 &amp; neighbor[3][1]=1、neighbor[3][1]=0 &amp; neighbor[3][2]=1、neighbor[3][2]=0 &amp; neighbor[2][2]=1、neighbor[2][2]=0 &amp; neighbor[1][2]=1、neighbor[1][2]=0 &amp; neighbor[1][1]=1是否成立,如果成立,则nCount每次增1,最后判断nCount是否为1,如果不为1,则将bCondition4置为true,否则置为false;5)判断bCondition1、bCondition2、bCondition3、bCondition4是否都为true,如果是,则将Temp[i][j]置为1,否则置为0,运用循环命令语句,重复步骤1)~步骤5)直至Trace中全部元素都经历一遍运算,最后将Temp中的元素值复制回Trace中,Trace数组中存储的数据即所生成的道路网络栅格数字地图。
地址 200240 上海市闵行区东川路800号