计算边属性工具用于为形状的每条边计算方向和街道邻接属性。 然后,可以根据 CGA 使用计算的边属性来驱动基于各个边属性的模型生成。

使用工具

选择形状

  1. 选择要应用该工具的形状。
    GUID-CFC3F37E-927E-4326-A589-0CF22570E6AE-web
    显示所选形状。

    该工具将针对可见街段计算每个所选形状的边属性,即无需选择街段。

    注:

    该算法目前仅适用于静态形状(请参阅形状)。 要计算动态形状的边属性,则首先需要使用图表 > 转换为静态形状将其转换为静态形状。

  2. 单击形状 > 计算边属性

    随即显示工具对话框,提供用于配置该算法的参数。 下面将详细介绍算法和参数。 对于常规用例,可以使用默认参数,然后单击应用以运行算法。

    GUID-082229F6-1E9D-403A-9DFD-2BC645879134-web
    显示“计算边属性”对话框。

检查计算的边属性

运行该工具后,将为每个所选形状分配计算的边属性。 下图说明了在运行工具后,如何使用边属性来增强所选形状的形状属性(在本例中,来自 OSM 数据源)。

以下是要计算属性的所选形状:

GUID-59B715E7-F70F-4B4D-BFF0-AEE8384E27F7-web
显示用于计算属性的所选形状。

运行工具之前的形状属性如下所示:

GUID-D7B28323-F79C-43AA-B5ED-B40B5B297119-web
显示计算边属性前的属性。

运行工具之后的形状属性如下所示:

GUID-073892E6-3615-49DE-B84D-C8A7F783E9AE-web
显示计算边属性后的属性。

如图所示,该工具将添加 3 个形状属性,其中包含每个边的值列表,从索引 0 的边开始:

  • /edgeattr/orientations – enumeration[]

    包含每个边的方向的数组。

    • front:分配给面向前方的边,通常为主要道路。
    • rear:分配给与前边相反的边。
    • side:分配给前后之间的边。
    • inner:分配给形状孔洞的一部分的边。
  • /edgeattr/streetcategories – string[]

    包含每条边(例如主要边或公路)的街道类别的数组。

    • <类别>:如果某条边面向街道,则分配给该边。
    • NULL:如果某条边未面向街道,则分配给该边。
  • /edgeattr/streetwidths – float[]

    包含每条边的街道宽度的数组。

    • <宽度>:如果某条边面向街道,则分配给该边。
    • NaN:如果某条边未面向街道,则分配给该边。

根据 CGA 使用计算的边属性

可以使用边属性函数从 CGA 访问计算的边属性。

算法和参数的说明

计算边属性的算法分为 3 个阶段:阶段 1 将计算邻接信息;阶段 2 将确定边方向;阶段 3 将创建形状的边属性。

计算邻接信息

邻接信息的计算基于相应算法,该算法根据给定范围内的当前形状边来查找最近的街道边。 该范围将由大量参数控制,如下图所示:

GUID-6AB241D2-73BC-46A1-8EA8-021A6344F2CC-web
显示邻接信息的计算。
  • 邻接搜索范围 – 搜索相邻形状和街段的绝对范围(默认值:100.0)。
  • 邻接搜索角度 – 搜索相邻形状和街段的绝对角度(默认值:15.0)。
  • 边缩进 – 与边的两个拐角的相对缩进,以边长度的百分比表示(默认值:10.0)。
  • 边公差 – 朝向形状内部的绝对偏移以增加正确处理重叠形状的公差(默认值:0.1)。

计算边方向

首先,将确定前边(如果选择允许多个前边,则确定多个前边):

  • 该算法将遍历所有边并选择面向街道的边。
  • 在面向街道的边中,选择具有最低街道类别的边。
  • 如果仅允许一个前边,并且多条边面向相同类别的街道,则将选择最长或最短的边,具体取决于前边的优先设置(前边优先)。
  • 确定前边后,该算法将计算后边。 根据后边的优先设置,将选择距离前边最远的边或者最平行于前边的边(后边优先)。
  • 其余边将指定为侧边(或者,如果它们是形状孔洞的一部分,则为内部边)。

创建边属性

如上所述,该算法取决于相邻街道的类别和宽度属性。 可以使用以下算法参数来配置将采用的街道属性:

  • 街道类别属性 – 用于从街道边获取街道类别的街道网络属性的名称。 对象属性需要为 string 类型。 如果留空,则将使用内置主或次属性。
  • 逗号分隔的街道类别列表 – 由此允许用户定义街道类别的有序列表,这些街道类别用于排序和确定前边。 例如,假设街道网络包含属性 street_category,其值为 freeway、highway 和 backroad。 然后,可以将街道类别属性设置为 category,并将街道类别列表设置为 freeway、highway 和 backroad,以确保正确使用优先级。
  • 街道宽度属性 – 用于从街道边获取街道宽度的街道网络属性的名称。 对象属性必须为 string 类型。 如果留空,则将使用内置街道宽度。

GUID-9B1CE12F-FCC0-4136-9922-DC5730899F9A-web设置算法参数。