//-------------------------
// Example OSM Tag Mapping
streetscale = 1 // street width scale factor
width = getFloatObjectAttr("width", false)
lanes = getFloatObjectAttr("lanes", false)
attr streetWidth = // street width dependeding on available attributes
case width > 0 : width * streetscale
case lanes > 0 : lanes * 3.5 * streetscale
else : streetWidthByClass * streetscale * oneway
class = getStringObjectAttr("highway", false)
streetWidthByClass =
case class == "primary" : 8
case class == "secondary" : 7
case class == "tertiary" : 6
case class == "motorway" : 12
case class == "trunk" : 11
case class == "road" : 6
case class == "residential" : 5
case class == "footway" : 2
case class == "cycleway" : 2
case class == "steps" : 2
else : 4
oneway = // oneway width correction
case getStringObjectAttr("oneway", false) == "yes" : 0.5
else : 1
sidewalkscale = 1 // sidewalk width scale factor
sidewalkWidth =
case class == "primary" : 2
case class == "secondary" : 2
case class == "tertiary" : 2
case class == "residential" : 2
else : 0
attr sidewalkWidthLeft = sidewalkWidth * sidewalkscale
attr sidewalkWidthRight = sidewalkWidth * sidewalkscale
数据冲突
导入的 OSM 数据通常不是很清晰,并导致冲突(例如,街道重叠)。 开放的或红色虚线表示未连接的路段或街道重叠,可能会导致无效的街区。 有许多方法可以解决此类冲突:
使用具有不同参数的清理图形工具。
在导入对话框的公路图层中选择较少的街道。
将街道和人行道的宽度设置为较低的值(导致重叠的街道减少)。
导入后,通过合并或删除附近的十字路口或平行街道来手动清理街道网络。
以下屏幕截图显示了清理前后未连接图形节点的示例:
注:
OSM 街道数据通常包含高程数据(属性级别),但可能有错误。 如果激活了运行生成桥梁工具选项,CityEngine 会自动找出可行的解决方案。