PreScan快速入门到精通第十二讲之PreScan导入OpenStreet Map格式地图
作为手动创建整个道路网络的替代方案,PreScan允许用户导入一个道路网络。
从外部开放街道地图(.OSM)文件中导出网络。这可以通过选择导出的XML选项来完成。
当导入OSM文件时,在此文件中定义的 "高速公路 "将被转换为路段,并放置在相对于实验的GPS坐标的适当位置的当前实验中,
当要导入的网络远离当前实验原点时,会发出警告。用户可以选择取消导入。如果网络被导入,则导入过程可能需要(相当多的)时间,而且由于四舍五入的影响,创建的路段可能会减少。
并非所有的公路都会被导入,请看下面的支持元素概述。
所有的道路都将在没有任何高度信息的情况下导入,因此其位置的z级将是始终为零。
PreScan也会像之前在路网形成中描述的那样,将所有的路段自动粘合在一起,尽管有时由于几何条件的限制,可能无法将所有的路段正确地连接或匹配。如果导入者在OSM文件中找到了路段之间的连接,但却无法在路段之间建立连接,那么它将在导入过程结束时报告。
因此,在导入网络后可能仍然需要手动调整(见示例),这也是因为某些道路网络的信息不存在于osm-file中,或者被导入者不支持。
导入一个以上的文件,或者在实验中导入一个已经包含部分道路网络的文件也是可能的。随后导入的每一个网络都将根据其相对于全球定位系统的位置进行定位。实验的起源地自动导入,但必须手动连接到已经建立的网络上。
支持元素:
道路
PreScan导入的唯一的道路监控元素是被标记为 "高速公路 "的 "道路",并且具有以下值之一:
高速公路
高速公路链接
支路
支路链接
初级公路
初级公路链接
次级公路
次级公路链接
街道
住宅
生活街
服务区
途径
行人
赛道
虽然各种 "链接 "将被导入,但目前PreScan无法将其转换为匝道进出口。
不支持更详细描述 "高速公路 "的任何物理和法律属性,但:
junction = roundabout
oneway = <value>
maxspeed = <value>
所有导入的 "高速公路 "都会有一个宽度和车道数,根据首选项的设置,除了 "单行道 "的街道只有一条车道。
只有当 "值 "被指定为一个整数时,"最大速度 "才会被导入。这个 "值 "被认为是以公里/小时为单位定义的,在OSM中是默认的。
最大速度 "值也将被导出到轨迹文件中,用于PreScan编译表。
对于每个支持 "maxspeed "值的 "高速公路",可以在相关道路旁边生成荷兰式的限速交通标志。
交通标识(用户定义)
PreScan也可以导入交通标志。有两类,根据最大速度标签放置的交通标志(见上面的注释)和用户定义的交通标志。
在OSM中,交通标志被定义为节点中的 "traffic_sign "标签。节点有属性'lat'和'lon'来定义它的位置。可以添加一个可选的标记'ele'来定义节点的标高。带 traffic_sign'键的标记的值定义了交通标志的类型;这个值是基于提议的特征 Traffic sign。
支持的 traffic_sign 标签指的是现有的标识牌:作为有数值的标识牌使用。
要触发OSM导入器读取交通标志,必须使用 "support=pole "标签。
用户定义的交通标志由一个杆子和一块牌子组成。它们的OSM定义如下:
Pole
如上所述,Pole的位置是由节点的位置来定义的。
进一步的Pole属性可以定义如下表所示:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Plates板材
如上文所述,板块的类型,即板块的形状和纹理,是通过traffic_sign标签定义的。进一步的板块属性可以定义,如下表所示:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当在 plate_width 值列表中省略或使用默认值时,使用减号来表示省略/默认值。
板块按照 traffic_sign 标记中使用的顺序安装在立柱上。第一块板子将位于立柱的顶部,板子的顶部与立柱的顶部相匹配。一个直径为80厘米的板子安装在2.2米的杆子上,因此,板子的中心位置将位于离地面1.8米处。随后的每块板子都将直接安装在前一个板子下面。
Prescan板被分组在TrafficSign的Plates属性中。
例子:
道路
观察下图中的等高线图和相同位置的OpenStreetMap。
在PreScan中导入由此图生成的osm-file,在一个空的实验中导入。结果如下图所示。
实验的全局布点设置为导入地图的GPS位置,除(单行道)环岛外,所有道路的宽度都是一样的。
如果导入的面积大于750x750平方米,PreScan会发出警告。
可以设置继承路径,但是如果导入的路线图很复杂,解析器会抱怨该路径与路线图不一致。它将建议将路径转换为自由路径。这不会影响仿真。
修缮导入的路网
导入样板网后,有些路段似乎是无效的,表现为红色。
交叉段的一个常见问题是一个或多个路段的两端不合适。通常情况下,可以通过指定一个较小的圆角半径很容易解决,但有时需要一个更精细的解决方案,就像本例中的情况一样。在这里,我们需要拉伸其中一个路端。这也就意味着要缩短哪个端点与这个交叉道路端点相连的路段,所以首先我们需要将这个路段与交叉道路端点断开。接下来,将该交叉道路的一端拉长,最后将该路段的端点再次与该交叉道路的端点断开。如果将路段与交叉口的起始点连接到交叉口,那么这个操作就会比较复杂一些,但操作的方式还是一样的。
柔性路段有一个常见的问题,就是路段中的一个或多个弯道过于尖锐。这种无效点的位置用圆圈表示。
解决这类问题的方法在 "修复环形路网中的问题 "一题中已经说明了。这里使用的例子取自这里导入的示例文件,请看导入的网络右侧的交叉口上方的问题。
交通标志
几个交通标志的例子及其解释:
例子1
本例中,将在北纬52.217,东经5.183,高2.2米,直径10厘米,标高210.56米的灰色柱子上,设置一块德式90公里/小时的限速牌,宽70厘米,厚1厘米,朝向北偏58.4度。
请注意,"traffic_sign "标签的值为"GE:z274[90]",与德国《法规标志》中的交通标志牌名称为"z274[90]"的交通标志牌相匹配.
例子2
<node id='10698251' lat='52.217' lon='5.183' visible='true'> <tag k='support' v='pole' /> <tag k='pole_height' v='2'/> <tag k='pole_ori' v='58.4'/> <tag k="traffic_sign" v="NL:J2,OB401[500]" /> <tag k="plate_height" v="-,0.25" /> </node> |
本例中,将在海平面上形成一个灰色的柱子,北纬52.217,东经5.183,高2.0米,直径10厘米,有两块荷兰式的牌子,朝向为北纬58.4度。顶板为右转警示牌,宽70厘米,厚1厘米。底板为指示转弯距离500米的辅助标志,宽45厘米,高25厘米,厚1厘米。
<node id='10698251' lat='52.217' lon='5.183' visible='true'> <tag k='support' v='pole' /> <tag k='pole_height' v='3.43' /> <tag k='pole_dia' v='0.116' /> <tag k='pole_ori' v='58.4' /> <tag k="traffic_sign" v="US:w2-1,r2-1[50],r3-4" /> </node> |
实例3
本例将在海平面上形成一个白杆,北纬52.217,东经5.183,高3.43米,直径11.6厘米(4英寸),有三块美式牌,方向为北纬58.4度。顶板为十字路口警示牌,宽1.07米,厚1厘米。中牌为50英里/小时限速标志,宽61厘米,高76厘米。底牌为禁止调头标志,61厘米见方,厚1厘米。
添加的交通标志节点的id必须是唯一的,因此检查新创建的节点的id可能存在。