快速提取OSM数据中指定行政区内路网的方法与流程

文档序号:13736124阅读:3653来源:国知局
快速提取OSM数据中指定行政区内路网的方法与流程
本发明涉及道路交通网络计算机抽象表达
技术领域
,特别是涉及一种快速提取osm数据中指定行政区内路网的方法。
背景技术
:交通系统除了涉及多个学科、跨领域、规模巨大等复杂特性之外,还具有实验试行成本极高甚至无法进行的特征。随着计算机和网络技术的不断发展,其在交通中的应用也愈加广泛,智能交通系统的概念和方法不断成熟,交通系统也向着信息化、网络化、自动化和智能化不断发展。智能交通系统中一个重要的技术就是交通仿真技术,即运用现代计算机技术建立能够替代现实交通系统的计算机模型的技术方法。其中,宏观交通仿真能够将预测或调查得到的流量分配到道路交通网中,是交通规划、交通建设和交通管理非常重要的参考依据。而进行宏观交通仿真的前提就是建立计算机表达的道路交通网络。openstreetmap,简称为osm,是一款由网络大众共同打造的免费开源、可编辑的地图服务。经过多年的发展,osm地图数据库已经成为全球范围内最精确和完善的矢量地理数据库之一。用户可以直接在osm上下载选定范围的路网数据,同时也可以查看行政区边界坐标、区域所属关系等其他数据信息。但目前从openstreetmap网站导出的路网区域只能是矩形,对于使用者,特别是城市规划者而言,他们更关心的研究范围其实是某一行政区域内的路网情况。如果某一行政区的形状非常不规则,则通过下载的osm数据构建的城市交通网络将包含许多不需要的节点和路段,需要使用者手工对其进行删除,增加了工作量。另外,从openstreetmap网站直接下载的行政区边界非常精细、形状复杂,如果按这个边界进行节点判断将需要许多计算时间,同时边界上的节点和路段也将被剔除,不符合用户需求。技术实现要素:为了解决上述存在的问题,本发明提供一种考虑upfc控制模式的潮流计算方,将由osm提供的指定行政区边界轮廓进行扩展和简化,把在这个扩展和简化后的区域外的节点和路段进行删除,为达此目的,本发明提供一种快速提取osm数据中指定行政区内路网的方法,包括如下步骤:步骤(1)将osm数据中的节点和行政区边界点的经纬度坐标转换为utm坐标系坐标,后续步骤中的坐标如没有特指都认为是在utm坐标系下;设转换后按原顺序排列的行政区边界点集合为sall;步骤(2)设行政区边界点坐标中的横坐标最小和最大值分别为xmin和xmax,横坐标中值xmid=(xmin+xmax)/2;设行政区边界点坐标中的纵坐标最小和最大值分别为ymin和ymax,纵坐标中值ymid=(ymin+ymax)/2;寻找行政区边界点坐标中横坐标值等于xmin的点作为边界最西侧点d,若有多个点横坐标等于xmin,则将这些点中纵坐标与ymid的差的绝对值最小的点作为d,若横坐标值等于xmin的点中有多个点纵坐标与ymid的差的绝对值都为最小,则选取这些点中的任意一点作为d;寻找行政区边界点坐标中横坐标值等于xmax的点作为边界最东侧点b,若有多个点横坐标等于xmax,则将这些点中纵坐标与ymid的差的绝对值最小的点作为b,若横坐标值等于xmax的点中有多个点纵坐标与ymid的差的绝对值都为最小,则选取这些点中的任意一点作为b;寻找行政区边界点坐标中纵坐标值等于ymin的点作为边界最南侧点c,若有多个点纵坐标等于ymin,则将这些点中横坐标与xmid的差的绝对值最小的点作为c,若纵坐标值等于ymin的点中有多个点横坐标与xmid的差的绝对值都为最小,则选取这些点中的任意一点作为c;寻找行政区边界点坐标中纵坐标值等于ymax的点作为边界最北侧点a,若有多个点纵坐标等于ymax,则将这些点中横坐标与xmid的差的绝对值最小的点作为a,若纵坐标值等于ymax的点中有多个点横坐标与xmid的差的绝对值都为最小,则选取这些点中的任意一点作为a;步骤(3)设点a和点c的直线距离为dy,点b和点d的直线距离为dx;将a点正北方向距离a点0.1*dy处的点设为a’,将b点正东方向距离b点0.1*dx处的点设为b’,将c点正南距离c点0.1*dy处的点设为c’,将d点正西方向距离d点0.1*dx处的点设为d’;步骤(4)设简化的行政区边界多边形顶点坐标集合为s,s初始状态为空集;步骤(5)判断d’和a’之间是否需要插入简化的行政区边界节点,之后进入步骤(6);步骤(6)按照步骤(5)的方法依次判断a和b,b和c,c和d之间是否需要插入简化的行政区边界节点,并将相应的节点放入集合s中;步骤(7)由集合s中的坐标表示的节点组成起点和终点都为d’的封闭多边形p,利用射线法依次判断osm数据中每一条路段的起点和终点是否在多边形p内,如果起点和终点都不在p内,则删除该路段,否则保留该路段;最终保留在osm数据中的路段组成的路网即为指定行政区内的路网。进一步的,所述步骤1中,用户在对应数据搜索引擎中查询和下载指定名称行政区的边界坐标点集合,下载的边界点坐标按逆时针顺序排列;用户下载的osm地图数据需包含指定行政区范围。进一步的,所述步骤1中,采用地图学中的统一横轴墨卡托投影方法将对应点的经纬度坐标转换为utm坐标系坐标。进一步的,所述步骤(5)包括以下子步骤:步骤(51)在行政区边界点集合sall中找到点d和点a坐标的位置,若点d坐标的位置在点a坐标位置之后,则提取sall中点a和点d之间,不包括a和d的边界点坐标,按sall中的顺序排列作为集合scal;若点d坐标的位置在点a坐标位置之前,则先将点a至sall中最后一个点的坐标提取作为集合scal,再将sall中第一个点至点d的坐标提取放置在已有集合scal中最后一个点坐标之后,行成最终的集合scal,集合scal不包括a和d坐标;设a’坐标(xa’,ya’),b’坐标(xb’,yb’);步骤(52)设scal中第一个点坐标为(xe’,ye’),该点为e’;与向量d’a’形成最大逆时针夹角(夹角最大180度)的点坐标为(xmax1,ymax1),最大夹角为θmax,初始状态下xmax1=ymax1=0,θmax=0;步骤(53)计算向量d’a’和向量d’e’的位置关系,设x1=xa’-xd’,y1=ya’-yd’,x2=xe’-xd’,y2=ye’-yd’,如果x1*y2-x2*y1≤0,则表示向量d’e’在向量d’a’的顺时针方向,转至步骤(54),如果x1*y2-x2*y1>0,则表示向量d’e’在向量d’a’的逆时针方向,根据公式(1)计算两向量的夹角θ,其中arcos为反余弦函数;如果θ>θmax1,则将θ赋值给θmax,xe’赋值给xmax1,ye’赋值给ymax1,进入步骤(54);步骤(54)如果点e’为集合scal中最后一个坐标表示的点,且θmax不为0,则进入步骤(55),如果e’是最后一个点而θmax为0,则将d’和a’坐标放入集合s中,进入步骤(6);否则设scal中现有点e’的下一个点坐标为(xe’,ye’),该坐标表示的点为新的e’,返回步骤(53);步骤(55)设scal中第一个点坐标为(xe’,ye’),该点为e’;与向量a’d’形成最大顺时针夹角(夹角最大180度)的点坐标为(xmax2,ymax2),最大夹角为θmax,初始状态下xmax2=ymax2=0,θmax=0;步骤(56)计算向量a’d’和向量a’e’的位置关系,设x1=xd’-xa’,y1=yd’-ya’,x2=xe’-xa’,y2=ye’-ya’,如果x1*y2-x2*y1≥0,则表示向量a’e’在向量a’d’的逆时针方向,转至步骤(57),如果x1*y2-x2*y1<0,则表示向量a’e’在向量a’d’的顺时针方向,根据公式(1)计算两向量的夹角θ,如果θ>θmax,则将θ赋值给θmax,xe’赋值给xmax1,ye’赋值给ymax1,进入步骤(57);步骤(57)如果点e’为集合scal中最后一个坐标表示的点,则进入步骤(58),否则设scal中现有点e’的下一个点坐标为(xe’,ye’),该坐标表示的点为新的e’,返回步骤(56);步骤(58)设(xmax1,ymax1)表示的点为t1,(xmax2,ymax2)表示的点为t2,设由d’和t1连成的直线和由a’和t2连成的直线的交点为t,将d’、t和a’坐标放入集合s中,进入步骤(6)。进一步的,所述步骤7中,射线法判断一点是否在某个多边形区域内的过程为:从待判断的点向水平方向引射线,计算射线和多边形交点的个数n,如果n是偶数或者为0则待判断点在多边形外,如果n是奇数,则在多边形内;在多边形边界上的点可以认为在多边形内,也可认为在多边形外。本发明公开了一种快速提取osm数据中指定行政区内路网的方法,与现有技术相比,本发明具有以下优点:1、利用行政区边界坐标信息自动删除用户指定的行政区外的节点和路网,减少了用户利用osm数据建立虚拟道路网络的工作量;2、对从openstreetmap数据库直接下载的行政区边界进行了扩展和简化,缩短了判断节点是否在行政区内这个过程的计算时间,同时也避免了将与边界重合的路段误删的可能。附图说明图1为本发明快速提取osm数据中指定行政区内路网方法的流程图;图2为本发明一个实施例的区域地图和边界示例图;图3为本发明步骤(5)和步骤(6)判断是否需要插入简化的行政区边界节点的流程图;图4为本发明一个实施例经过扩展和简化的行政区多边形边界示意图;图5为本发明一个实施例未提取指定行政区内路网前的路网计算机抽象示意图;图6为本发明一个实施例提取过指定行政区内路网后的路网计算机抽象示意图。具体实施方式下面结合附图与具体实施方式对本发明作进一步详细描述:本发明提供一种快速提取osm数据中指定行政区内路网的方法,其流程如图1所示。本发明以北京市西城区附近路网为实施例进行说明,该区域在openstreetmap中的地图如图2所示,红色轮廓为西城区的行政区边界。步骤(1)将osm数据中的节点和行政区边界点的经纬度坐标转换为utm坐标系坐标,后续步骤中的坐标如没有特指都认为是在utm坐标系下;设转换后按原顺序排列的行政区边界点集合为sall;本实施例中,下载的西城区边界点共382个,首位各10个经纬度坐标如下,每一个边界节点经纬度用一个中括号括起,前面为经度,后面为纬度:[116.3145861,39.8746808],[116.3150489,39.8745822],[116.3150747,39.8737599],[116.3172175,39.8746479],[116.3187638,39.8747998],[116.3191581,39.8750037],[116.3195353,39.8748326],[116.3215752,39.8747932],[116.3263151,39.8739512],[116.3306481,39.8743028],……,[116.3156318,39.8823668],[116.3155975,39.8810677],[116.3157689,39.8808375],[116.3157689,39.8800943],[116.3146204,39.8800614],[116.3146118,39.8774435],[116.3147918,39.8772857],[116.3147747,39.8767594],[116.3146632,39.8764634],[116.3145861,39.8746808]步骤(2)设行政区边界点坐标中的横坐标最小和最大值分别为xmin和xmax,横坐标中值xmid=(xmin+xmax)/2;设行政区边界点坐标中的纵坐标最小和最大值分别为ymin和ymax,纵坐标中值ymid=(ymin+ymax)/2;寻找行政区边界点坐标中横坐标值等于xmin的点作为边界最西侧点d,若有多个点横坐标等于xmin,则将这些点中纵坐标与ymid的差的绝对值最小的点作为d,若横坐标值等于xmin的点中有多个点纵坐标与ymid的差的绝对值都为最小,则选取这些点中的任意一点作为d;寻找行政区边界点坐标中横坐标值等于xmax的点作为边界最东侧点b,若有多个点横坐标等于xmax,则将这些点中纵坐标与ymid的差的绝对值最小的点作为b,若横坐标值等于xmax的点中有多个点纵坐标与ymid的差的绝对值都为最小,则选取这些点中的任意一点作为b;寻找行政区边界点坐标中纵坐标值等于ymin的点作为边界最南侧点c,若有多个点纵坐标等于ymin,则将这些点中横坐标与xmid的差的绝对值最小的点作为c,若纵坐标值等于ymin的点中有多个点横坐标与xmid的差的绝对值都为最小,则选取这些点中的任意一点作为c;寻找行政区边界点坐标中纵坐标值等于ymax的点作为边界最北侧点a,若有多个点纵坐标等于ymax,则将这些点中横坐标与xmid的差的绝对值最小的点作为a,若纵坐标值等于ymax的点中有多个点横坐标与xmid的差的绝对值都为最小,则选取这些点中的任意一点作为a;本实例中,得到a点的utm坐标为[4419338.73905706,448164.422272264],b点的utm坐标为[4424786.36753645,447730.004124204],c点的utm坐标为[4414072.93734933,4414072.93734933],d点的utm坐标为[4413260.93582004,443914.786235626];步骤(3)设点a和点c的直线距离为dy,点b和点d的直线距离为dx;将a点正北方向距离a点0.1*dy处的点设为a’,将b点正东方向距离b点0.1*dx处的点设为b’,将c点正南距离c点0.1*dy处的点设为c’,将d点正西方向距离d点0.1*dx处的点设为d’;本实例中,得到a’点的utm坐标为[4419338.73905706,449022.751099776],b’点的utm坐标为[4426000.41639785,447730.004124204],c’点的utm坐标为[4414072.93734933,440527.880554271],d’点的utm坐标为[4412046.88695864,443914.786235626];步骤(4)设简化的行政区边界多边形顶点坐标集合为s,s初始状态为空集;步骤(5)判断d’和a’之间是否需要插入简化的行政区边界节点,本步骤依次包括以下子步骤:步骤(51)在行政区边界点集合sall中找到点d和点a坐标的位置,若点d坐标的位置在点a坐标位置之后,则提取sall中点a和点d之间,不包括a和d的边界点坐标,按sall中的顺序排列作为集合scal;若点d坐标的位置在点a坐标位置之前,则先将点a至sall中最后一个点的坐标提取作为集合scal,再将sall中第一个点至点d的坐标提取放置在已有集合scal中最后一个点坐标之后,行成最终的集合scal,集合scal不包括a和d坐标;设a’坐标(xa’,ya’),b’坐标(xb’,yb’);步骤(52)设scal中第一个点坐标为(xe’,ye’),该点为e’;与向量d’a’形成最大逆时针夹角(夹角最大180度)的点坐标为(xmax1,ymax1),最大夹角为θmax,初始状态下xmax1=ymax1=0,θmax=0;步骤(53)计算向量d’a’和向量d’e’的位置关系,设x1=xd’-xa’,y1=yd’-ya’,x2=xe’-xa’,y2=ye’-ya’,如果x1*y2-x2*y1≤0,则表示向量d’e’在向量d’a’的顺时针方向,转至步骤(54),如果x1*y2-x2*y1>0,则表示向量d’e’在向量d’a’的逆时针方向,根据公式(1)计算两向量的夹角θ,其中arcos为反余弦函数;如果θ>θmax1,则将θ赋值给θmax,xe’赋值给xmax1,ye”赋值给ymax1,进入步骤(54);步骤(54)如果点e’为集合scal中最后一个坐标表示的点,且θmax不为0,则进入步骤(55),如果e’是最后一个点而θmax为0,则将d’和a’坐标放入集合s中,进入步骤(6);否则设scal中现有点e’的下一个点坐标为(xe’,ye’),该坐标表示的点为新的e’,返回步骤(53);步骤(55)设scal中第一个点坐标为(xe’,ye’),该点为e’;与向量a’d’形成最大顺时针夹角(夹角最大180度)的点坐标为(xmax2,ymax2),最大夹角为θmax,初始状态下xmax2=ymax2=0,θmax=0;步骤(56)计算向量a’d’和向量a’e’的位置关系,设x1=xd’-xa’,y1=yd’-ya’,x2=xe’-xa’,y2=ye’-ya’,如果x1*y2-x2*y1≥0,则表示向量a’e’在向量a’d’的逆时针方向,转至步骤(57),如果x1*y2-x2*y1<0,则表示向量a’e’在向量a’d’的顺时针方向,根据公式(1)计算两向量的夹角θ,如果θ>θmax,则将θ赋值给θmax,xe’赋值给xmax1,ye’赋值给ymax1,进入步骤(57);步骤(57)如果点e’为集合scal中最后一个坐标表示的点,则进入步骤(58),否则设scal中现有点e‘的下一个点坐标为(xe’,ye’),该坐标表示的点为新的e’,返回步骤(56);步骤(58)设(xmax1,ymax1)表示的点为t1,(xmax2,ymax2)表示的点为t2,设由d’和t1连成的直线和由a’和t2连成的直线的交点为t,将d’、t和a’坐标放入集合s中,进入步骤(6);步骤(6)按照步骤(5)的方法依次判断a和b,b和c,c和d之间是否需要插入简化的行政区边界节点,并将相应的节点放入集合s中;本实例中,步骤(5)的流程图如图3所示。最终的集合s中包含了7个点(收尾为点d’),如图4所示,具体坐标见表1.表1集合s中各顶点坐标;顶点横坐标纵坐标d'4412046.88695864443914.786235626t14421494.9664082442180.149614446a'4419338.73905706449022.751099776b'4426000.41639785447730.004124204t24413585.07619906448085.693259992c'4414072.93734933440527.880554271d'4412046.88695864443914.786235626步骤(7)由集合s中的坐标表示的节点组成起点和终点都为d’的封闭多边形p,利用射线法依次判断osm数据中每一条路段的起点和终点是否在多边形p内,如果起点和终点都不在p内,则删除该路段,否则保留该路段;最终保留在osm数据中的路段组成的路网即为指定行政区内的路网。本实例中,图2所示osm数据区域的未提取西城区范围的道路网络如图5所示;将该osm数据中不在以集合s中坐标为顶点的多边形p外的节点和路网删除,得到西城区内的道路网络如图6所示,大大节省了使用者手工删除多余路网的时间。以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1