网络使用的赋值器类型

需要 Network Analyst 许可。

网络中定义的每个属性都必须具有与参与网络的每个源相对应的值。 赋值器为每个源的属性指定值。 字段脚本赋值器会将网络源字段的赋值器分配给网络属性、源和方向的组合。 此外,还可使用其他类型的可用赋值器,包括常量、函数和元素脚本赋值器。

赋值器介绍如下。

赋值器描述

字段脚本

为网络属性指定值的最常见方式就是识别单个字段,该字段用于在网络数据集构建时计算网络属性。 例如,当属性值描述测量(如用米表示的每个路段的长度)时,可以使用字段赋值器。

提示:

对于具有距离单位的成本属性,使用字段脚本赋值器中的 Shape 字段可以网络属性单位返回线要素的测地线长度。 这与使用系统托管的 Shape_Length 字段不同,该字段包含每个线要素在要素类坐标系中的平面长度,容易受坐标系变形影响。

请注意,ShapeShape_Length 字段位于文件地理数据库要素类中。 对于企业级地理数据库,几何和长度字段的命名方式可能不同,具体取决于 DBMS。

可将字段赋值器修改为使用字段表达式作为值来代替单个字段。 例如,如果网络属性的单位是米,而源数据的单位是英尺,可以创建一个表达式以在构建网络数据集时将英尺转换为米。

提示:

以 VBScript 编写的字段表达式赋值器执行速度比以 Python 编写的赋值器更快。 因此,您应使用 VBScript;但是选择脚本编写语言时请牢记以下事项:

  • 大多数 ArcGIS 产品可以解释 VBScript 或 Python。
  • ArcGIS Server (Linux) 只能解释 Python。
  • 字段表达式赋值器中的脚本在构建网络数据集时进行解释。
这几点的逻辑含义如下:
  • 如果您计划使用 ArcGIS Server (Linux) 以外的 ArcGIS 产品构建网络数据集,那么您可以使用 VBScript 编写脚本。
  • 如果您计划在 ArcGIS Server (Linux) 中构建网络数据集,则必须使用 Python 编写脚本。
  • 如果您计划使用 ArcGIS Server (Linux) 之外的 ArcGIS 产品构建网络数据集,然后使用 ArcGIS Server (Linux) 求解参考构建数据集的网络分析,则可以使用 VBScript 编写脚本。

常量

可以为属性指定一个常数值。 该值可以是表示成本、描述符和等级等属性的数字,也可以是表示约束属性的“使用约束条件”或“忽略约束条件”的布尔数据类型。

函数

函数赋值器可通过对另一属性值、参数值或常量执行简单数学运算或逻辑比较来计算属性值。 对于数值属性类型,可以通过乘以、除以、加上或减去另一个网络属性、常量或参数值来得到该值。 对于布尔属性类型,其值可以通过将另一属性值与一个参数值或常量比较的表达式获得,例如:MaxHeight < VehicleHeight。

注:
无法对成本属性使用加法 + 和减法 - 运算符。

已在 ArcGIS Pro 2.3 中添加加法 + 和减法 - 运算符。 赋值器在旧版本的软件中会产生错误。

转弯类别

转弯类别赋值器用于为两个边元素之间的过渡指定默认成本值。 该成本取决于两条边之间的偏转角,以及所遍历的各条边的道路类(主要道路、次要道路或地方道路)。 还取决于转弯运动所穿过的十字路口的类别。 例如,可以使用转弯类别赋值器进行如下设定:由偏转角确定的所有左转弯在从地方道路左转到次要道路时所用的时间大于从地方道路左转到其他地方道路的时间。 还可以指定增加其他过渡的成本,例如,在两条次要道路的交叉路口处继续直行时,增加 10 秒的延迟时间。

元素脚本

可从执行 VBScript 或 Python 脚本的结果分配属性。 这样可对复杂属性进行建模。 不同于其他赋值器,元素脚本赋值器不会在构建网络时指定值。 相反,只有在网络分析需要使用某属性时(可能发生在求解时),它才会为该属性指定值。 如果某个属性的值不断变化,使用元素脚本赋值器可以确保每个网络分析的属性都得到更新。

提示:

由于元素脚本赋值器在分析时计算属性值,因此它会对分析性能产生负面影响。 如有可能,请使用其他赋值器。

以 VBScript 编写的元素脚本赋值器执行速度比以 Python 编写的赋值器更快。 因此,您应使用 VBScript;但是选择脚本编写语言时请牢记以下事项:

  • 大多数 ArcGIS 产品可以解释 VBScript 或 Python。
  • ArcGIS Server (Linux) 只能解释 Python。
  • 脚本赋值器中的脚本在求解网络分析图层时进行解释。
这几点的逻辑含义如下:
  • 如果您计划使用 ArcGIS Server (Linux) 以外的 ArcGIS 产品求解网络分析,那么您可以使用 VBScript 编写脚本。
  • 如果您计划对 ArcGIS Server (Linux) 求解分析,则必须使用 Python 编写脚本。

交通流量

流量赋值器专用于流量数据。 该类赋值器可通过历史数据或实时数据为某一天的特定时刻和一周中的某一天提供行驶时间。 它们包含回退成本属性,可以在一天中特定时刻的行驶时间不可用时提供工作日及周末的行驶时间。 流量赋值器还具有与时间无关的成本属性,当路径分析中的排序停止或访问车辆配送时,以及当分析未指定到达或出发时间时,Network Analyst 将参考该属性。

了解有关流量的详细信息

公共交通

公共交通赋值器根据计划的公共交通服务计算沿公共交通线路段的行驶时间。 返回的行驶时间包括直到下一个计划公交行程开始之前的等待时间加上沿着公交线路段从一端到另一端的行驶时间。 使用此赋值器对乘坐公共交通工具出行的人员进行建模。 其设计目的并不是为了对沿公路行驶的公共汽车的行驶时间进行建模。

公共交通赋值器只有在网络数据集的要素数据集和地理数据库包含 Network Analyst 公共交通数据模型所需的全部要素类和表时,才能用于名称为 LineVariantElements 的边源上基于时间的成本属性。

了解有关公共交通赋值器的详细信息

了解有关公共交通网络分析的详细信息

与默认值相同

每个类别都有一个默认赋值类型。 当源赋值器类型设置为与默认值相同时,则会使用设置为默认的赋值器。

相同

类别的源赋值器类型设置为相同时,则使用源要素街道(沿街道方向)使用的赋值器。

注:

当所做的更改要求网络数据集访问其源要素类时,您需要重新构建网络数据集。 例如,创建从源要素类中提取时间成本的字段赋值器时,需要重新构建网络。 更改源要素的几何形状也需要重新构建网络数据集。 不过,用户不需要使用其他类型的赋值器重新构建网络,因为这些赋值器不直接从源要素类中提取信息。