计算边属性工具用于为形状的每条边计算方向和街道邻接属性。 然后,可以根据 CGA 使用计算的边属性来驱动基于各个边属性的模型生成。
使用工具
选择形状
- 选择要应用该工具的形状。
该工具将针对可见街段计算每个所选形状的边属性,即无需选择街段。
注:
该算法目前仅适用于静态形状(请参阅形状)。 要计算动态形状的边属性,则首先需要使用图表 > 转换为静态形状将其转换为静态形状。
- 单击形状 > 计算边属性。
随即显示工具对话框,提供用于配置该算法的参数。 下面将详细介绍算法和参数。 对于常规用例,可以使用默认参数,然后单击应用以运行算法。
检查计算的边属性
运行该工具后,将为每个所选形状分配计算的边属性。 下图说明了在运行工具后,如何使用边属性来增强所选形状的形状属性(在本例中,来自 OSM 数据源)。
以下是要计算属性的所选形状:
运行工具之前的形状属性如下所示:
运行工具之后的形状属性如下所示:
如图所示,该工具将添加 3 个形状属性,其中包含每个边的值列表,从索引 0 的边开始:
- /edgeattr/orientations - enumeration[]
包含每个边的方向的数组。
- front:分配给面向前方的边,通常为主要道路。
- rear:分配给与前边相反的边。
- side:分配给前后之间的边。
- inner:分配给形状孔洞的一部分的边。
- /edgeattr/streetcategories - string[]
包含每条边(例如主要边或公路)的街道类别的数组。
- <类别>:如果某条边面向街道,则分配给该边。
- NULL:如果某条边未面向街道,则分配给该边。
- /edgeattr/streetwidths - float[]
包含每条边的街道宽度的数组。
- <宽度>:如果某条边面向街道,则分配给该边。
- NaN:如果某条边未面向街道,则分配给该边。
根据 CGA 使用计算的边属性
可以使用边属性函数从 CGA 访问计算的边属性。
算法和参数的说明
计算边属性的算法分为 3 个阶段:阶段 1 将计算邻接信息;阶段 2 将确定边方向;阶段 3 将创建形状的边属性。
计算邻接信息
邻接信息的计算基于相应算法,该算法根据给定范围内的当前形状边来查找最近的街道边。 该范围将由大量参数控制,如下图所示:
- 邻接搜索范围 - 搜索相邻形状和街段的绝对范围(默认值:100.0)。
- 邻接搜索角度 - 搜索相邻形状和街段的绝对角度(默认值:15.0)。
- 边缩进 - 与边的两个拐角的相对缩进,以边长度的百分比表示(默认值:10.0)。
- 边公差 - 朝向形状内部的绝对偏移以增加正确处理重叠形状的公差(默认值:0.1)。
计算边方向
首先,将确定前边(如果选择允许多个前边,则确定多个前边):
- 该算法将遍历所有边并选择面向街道的边。
- 在面向街道的边中,选择具有最低街道类别的边。
- 如果仅允许一个前边,并且多条边面向相同类别的街道,则将选择最长或最短的边,具体取决于前边的优先设置(前边优先)。
- 确定前边后,该算法将计算后边。 根据后边的优先设置,将选择距离前边最远的边或者最平行于前边的边(后边优先)。
- 其余边将指定为侧边(或者,如果它们是形状孔洞的一部分,则为内部边)。
创建边属性
如上所述,该算法取决于相邻街道的类别和宽度属性。 可以使用以下算法参数来配置将采用的街道属性:
- 街道类别属性 - 用于从街道边获取街道类别的街道网络属性的名称。 对象属性需要为 string 类型。 如果留空,则将使用内置主或次属性。
- 逗号分隔的街道类别列表 - 由此允许用户定义街道类别的有序列表,这些街道类别用于排序和确定前边。 例如,假设街道网络包含属性 street_category,其值为 freeway、highway 和 backroad。 然后,可以将街道类别属性设置为 category,并将街道类别列表设置为 freeway、highway 和 backroad,以确保正确使用优先级。
- 街道宽度属性 - 用于从街道边获取街道宽度的街道网络属性的名称。 对象属性必须为 string 类型。 如果留空,则将使用内置街道宽度。