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

文档序号:9469720阅读:338来源:国知局
一种基于矢量地图数据模型的城市层次化区域划分方法
【技术领域】
[0001]本发明属于地理信息系统技术领域,更具体地,涉及一种基于矢量地图数据模型的城市层次化区域划分方法。
【背景技术】
[0002]随着地理信息系统(Geographic Informat1n System, GIS)和基于位置的服务(Locat1n Based Services, LBS)的快速发展,区域分析在很多地理空间相关应用中变得越来越重要,比如旅游规划,城市规划,交通路况分析等等。当我们分析城市中这些地区的特点时,首先要做的就是将整个城市划分成很多个小的区域。为了让地图分割变得更简单,现在用的最多的方法是基于网格的方法。这种方法是在把固定的网格加到道路网络上。然而这种方法只是简单地提供了解决方法,并没有涉及到地图的信息,这种方法失去了城市原有的道路结构和区域的地理信息。选择网格的间隔大小也可能会产生许多问题:小的间隔会增加计算复杂度;而大的间隔则会产生粗糙的边界。
[0003]与此同时,基于道路的地图划分能自然的把区域划分成有意义的区域。那些被道路网围绕的区域块会是区域分析里完美的区域单元。这个问题的主要挑战是我们如何以及利用什么数据结构去把道路地图转化为分割计算。一般来说,有两种主要的模型能描述空间数据:基于矢量的模型和基于栅格的模型。
[0004]针对不同的具体应用,这两种模型既有优点也有缺点,矢量模型可以很好地保持地图数据原本的拓扑关系,其结果也可以很好地保存和利用,但是矢量模型需要选用合适的数据结构进行保存和操作,存在运算时间复杂度高缺点;栅格模型可以很容易地将地图数据转化为图片数据,并利用形状学操作来完成区域划分,但是其缺点是精度不高,且栅格化后的数据丢失了原有的拓扑信息,无法利用道路层次信息进行迭代式计算,并且计算后的数据为图片,难以进行修改和操作。

【发明内容】

[0005]本发明提供了一种使用矢量地图道路网络数据对城市区域进行划分的方法,该方法具有适合处理矢量地图数据、可对城市区域进行层次化的划分、可对局部区域进行快速更新,非常适合于处理更新频繁的地图数据。
[0006]为了实现上述目的,本发明提供了一种基于矢量地图数据模型的城市层次化区域划分方法,包括如下步骤:
[0007](I)对需要进行划分的区域,构建对应的路网图结构与多边形边界数据:首先输入需要进行划分的城市区域,然后从城市路网数据中提取出该区域下对应道路等级的路网数据,并计算出道路的交点,然后合并距离小于阈值的道路以便将一条路的两条不同方向的车道合并,并提取中间点以便简化计算,最后输出简化后的图结构数据与多边形边界数据;
[0008](2)根据路网图结构与多边形边界数据构建对应的图结构与边界多边形,寻找一条路径并应用图分割算法,将原来的多边形一分为二,并且在新生成的多边形中继续寻找路径进行图分割,直到所有多边形都不可分割时,从而找到所有的封闭区域;
[0009](3)根据一级道路数据将城市划分为一级区域,然后遍历所有的一级区域,提取出该区域下的二级道路数据,应用区域划分算法,划分出该区域下的二级区域,从而构成城市区域的层次结构。
[0010]本发明的一个实施例中,所述步骤(I)具体包括:
[0011]步骤101、获得欲进行划分的城市区域与用来进行区域划分的道路类型,其中城市区域表示为地图上任意GPS点序列组成的简单多边形,道路类型根据等级从大到小分别有:主干线trunk、高速公路motorway、公路primary、城市道路secondary、林区道路track ;
[0012]步骤102、使用PostGIS函数STjntersect1n从数据库中提取出该区域下的对应道路类型的路网数据;
[0013]步骤103遍历道路中的任意两条道路,使用ST_intersect1n计算出其交点,并分别添加到两条道路对应的位置中;
[0014]步骤104对步骤103得出的道路数据构造图结构进行存储,图结构使用邻接链表表示法,在每条道路的点序列中,任意相邻两点组成图中的一条边,遍历所有道路的点序列,即构造成了原始的图结构;
[0015]步骤105对图结构中距离较近的结点进行合并,其方法为遍历图中所有的结点对,将距离较近的结点进行合并,取其中点;
[0016]步骤106提取出道路的中间点,只保留道路与道路之间的交点,方法为遍历图中的所有结点,提取出所有度为2的结点,从而简化道路从交点到交点之间的点序列,即只保留道路交点作为图结构的结点,交点与交点与间的中间点序列作为交点的附加属性;
[0017]步骤107将得到的简化的图结构和其所属的多边形区域即区域边界作为结果返回。
[0018]本发明的一个实施例中,所述步骤(2)具体包括:
[0019]步骤202将步骤I得到的图结构数据与多边形边界数据作为步骤203的输入;
[0020]步骤203使用自定义Dijkstra单源点最短路径搜索算法,在原始Dijkstra算法的基础上,增加边界点序列作为输入,搜索路径时不经过所有在边界上的边,遍历边界上的点作为源点,寻找一条由该源点到边界上另外一点的路径,此路径不包含在边界上的边;
[0021]步骤204,判断是否找到一条路径,如果没有找到路径则进入步骤205,如果找到一条路径,则进入步骤206 ;
[0022]步骤205判定该边界为一不可再分的封闭多边形区域,将其添加到结果集中,并结束图分割;
[0023]步骤206沿着找到的路径将图结构分割为两部分,分别为图结构I与多边形区域1,和图结构2与多边形区域2,然后分别输入到步骤202进行迭代运算。
[0024]本发明的一个实施例中,所述步骤206中将图结构分割为两部分,具体为:在一个带有区域边界的图结构中,首先将原来的区域边界沿着该路径分割为两个新多边形边界,然后遍历图结构中所有的点和边,判断点和边属于哪个多边形,并添加到对应的多边形图结构中,从而将图结构也一分为二。
[0025]本发明的一个实施例中,所述步骤206具体包括:
[0026]步骤301以步骤I得到的图结构数据与多边形边界数据,以及步骤206找到的路径作为数据输入;
[0027]步骤302将边界沿着路径,生成两个新的边界,即多边形边界I和多边界形边界2 ;
[0028]步骤303将图结构进行分割,属于多边形区域I内以及边界上的点,将组成新的图结构1,属于多边形区域2以及边界上的点,将组成新的图结构2。
[0029]本发明的一个实施例中,所述步骤303具体包括如下子步骤:
[0030]步骤3031遍历图结构中的所有结点;
[0031]步骤304判断该点是否在多边形区域中或者其边界上,如果是则进入步骤305 ;
[0032]步骤305将该点添加到新的图结构I中;
[0033]步骤306遍历该结点的所有邻接边;
[0034]步骤307判断该邻接边的中点是否在多边形区域I中或者其边界上,如果是则转步骤308 ;
[0035]步骤308将该边添加到新的图结构I中;
[0036]步骤309-步骤313所作操作与步骤304-步骤308对应,将属于多边形区域内或者边界上的点,添加到新的图结构2中。
[0037]本发明的一个实施例中,所述步骤3具体包括如下子步骤:
[0038]
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1