一种基于矢量地图数据模型的城市层次化区域划分方法_2

文档序号:9469720阅读:来源:国知局
输入任意一个多边形区域,并定义道路类型为一级道路,根据步骤(I)和步骤(2)进行进行处理,得到城市的一级区域,从而完成对城市的一级划分;继续对城市进行二级划分,遍历所有的一级区域,此时定义道路类型为二级道路,根据步骤(I)和步骤(2)进行进行处理,从而得到所有该区域下的二级区域。
[0039]与现有技术相比,本发明具有以下有益效果:
[0040]1、使用矢量模型处理地图数据。本方法使用图结构对矢量地图数据进行存储,所有运算均基于矢量数据,这样可完整地保留地图的原始数据,且可以无失真地对数据进行处理。
[0041]2、城市区域的层次化划分。本方法使用道路网络信息对城区域进行划分,每个区域由道路围成的最小封闭区域构成,根据道路属性的不同,分别选取主干道、高速公路、普通公路的路网数据,即可分别将城市区域划分为一级、二级、三级层次化区域。
[0042]3、快速更新局部区域数据。地图数据是在不断更新和完善的,使用矢量数据和层次化划分的方法,当某一小区域的数据发生了变化时,只需要对该区域所属的大区域进行一次更新操作即可,而对其它部分的数据不产生影响,方便快捷。
【附图说明】
[0043]图1是本发明实施例中北京市由路网形成的区域图;
[0044]图2是本发明方法中地图数据预处理流程;
[0045]图3本发明方法中区域划分算法流程;
[0046]图4本发明方法中图分割算法流程;
[0047]图5本发明方法中城市二级区域划分算法流程。
【具体实施方式】
[0048]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0049]本发明希望用纯粹的矢量模型来将地图区域划分,在保持原有的道路网络信息的同时也能减少计算过程中的冗余数据。其中一个挑战是,我们希望在区域划分的过程中保持道路地图的层次结构。拿北京道路地图来举个例子。如图1所示,主干高速路能把北京分成几个大的区域而等级更低的路能把这些区域继续划分成更小的单元。这种道路的层次结构应该保留而且也应该在结果中有所体现。
[0050]图2是本发明对地图数据进行预处理的流程示意图,即对需要进行划分的区域,构建对应的路网图结构与多边形边界数据。首先输入需要进行划分的城市区域,一般为城市的边界,然后从城市路网数据中提取出该区域下对应道路等级的路网数据,并计算出道路的交点,然后合并距离小于阈值的道路以便将一条路的两条不同方向的车道合并,并提取中间点以便简化计算,最后输出简化后的图结构数据与多边形边界数据,具体地如图所示,
[0051]步骤101为本发明的输入参数,分别为欲进行划分的城市区域与用来进行区域划分的道路类型,其中区域表示为地图上任意GPS点序列组成的简单多边形,道路类型根据等级从大到小分别有:主干线(trunk)、高速公路(motorway)、(公路)primary、(城市道路)secondary、(林区道路)track,因此可进行层次化划分,如第一层级为trunk、motorway与 primary,第二层级为 secondary 与 track。
[0052]步骤102使用PostGIS函数STjntersect1n从数据库中提取出该区域下的对应道路类型的路网数据,提取出来的道路仅是每条道路从起点到终点的点序列,两条物理上相交的道路,在其点序列中并没有一个共同的交点,即没有包含道路与道路之间拓扑关系,因此需要先经过步骤103计算出道路与道路之间的交点,由交点信息还原路网的拓扑关系O
[0053]步骤103遍历道路中的任意两条道路,使用ST_intersect1n计算出其交点,并分别添加到两条道路对应的位置中。
[0054]步骤104对步骤103得出的道路数据构造图结构进行存储,图结构使用邻接链表表示法,在每条道路的点序列中,任意相邻两点组成图中的一条边,遍历所有道路的点序列,即构造成了原始的图结构。原始的图结构中,结点数较多,为了简化计算,需要对结点进行删减。
[0055]步骤105对图结构中距离较近的结点进行合并,其方法为遍历图中所有的结点对,将距离较近的结点进行合并,取其中点。
[0056]步骤106提取出道路的中间点,只保留道路与道路之间的交点,方法为遍历图中的所有结点,提取出所有度为2的结点(中间点),从而简化道路从交点到交点之间的点序列,即只保留道路交点作为图结构的结点,交点与交点与间的中间点序列作为交点的附加属性。
[0057]步骤107将得到的简化的图结构和其所属的多边形区域即区域边界作为结果返回。
[0058]对地图数据进行预处理之后,得到对应的图结构与区域边界,便可进行区域划分。图3是对图结构进行区域划分运算的流程图,首先根据路网图结构与多边形边界数据构建对应的图结构与边界多边形,寻找一条路径并应用图分割算法,将原来的多边形一分为二,并且在新生成的多边形中继续寻找路径进行图分割,直到所有多边形都不可分割时,便找到了所有的封闭区域,具体过程如下:
[0059]程序经过初始化步骤201之后,步骤202将步骤107返回的图结构与其边界作为202的输入,步骤203使用自定义Dijkstra单源点最短路径搜索算法,在原始Dijkstra算法的基础上,增加边界点序列作为输入,搜索路径时不经过所有在边界上的边,遍历边界上的点作为源点,寻找一条由该源点到边界上另外一点的路径,注意此路径不包含在边界上的边。
[0060]之后进入判断步骤204,判断是否找到一条路径,如果没有找到路径则进入步骤205,如果找到一条路径,则进入步骤206。
[0061]步骤205判定该边界为一不可再分的封闭多边形区域,将其添加到结果集中,步骤207结束本函数的执行。
[0062]步骤206沿着找到的路径将图结构分割为两部分,分别为(图结构1,多边形区域
1)和(图结构2,多边形区域2),然后分别输入到步骤202进行迭代运算,具体的图分割算法,如图4所示,,在一个带有区域边界的图结构中,首先需要将原来的区域边界沿着该路径分割为两个新多边形边界,然后遍历图结构中所有的点和边,判断点和边属于哪个多边形,并添加到对应的多边形图结构中,从而将图结构也一分为二,具体过程如下:
[0063]步骤301以图结构、边界,以及步骤206找到的路径作为数据输入.
[0064]步骤302将边界沿着路径,生成两个新的边界,即(多边形边界1,多边界形边界
2)ο
[0065]步骤303-步骤313将图结构进行分割,属于多边形区域I内以及边界上的点,将组成新的图结构1,属于多边形区域2以及边界上的点,将组成新的图结构2。具体方法为,
[0066]步骤303遍历图结构中的所有结点,
[0067]步骤304判断该点是否在多边形区域中或者其边界上,如果是则进入步骤305。
[0068]步骤305将该点添加到新的图结构I中,
[0069]然后进入步骤306遍历该结点的所有邻接边,
[0070]步骤307判断该边的中点是否在多边形区域I中或者其边界上,
[0071 ] 如果是则通过步骤308将该边添加到新的图结构I中。
[0072]
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1