预先计算的网络位置

要成功执行网络分析,分析输入必须位于用于分析的网络上。 计算大量输入的网络位置是一个非常耗时的过程。 如果您计划对于使用相同网络数据集和分析设置的多个分析使用相同的输入数据,则可以通过预先计算网络位置来节省处理时间。

使用计算位置工具预先计算网络位置

使用计算位置工具预先计算网络位置。 此工具计算输入要素类的网络位置并将信息存储在添加到要素类的网络位置字段中。 当要素类用作网络分析的输入时,可以使用这些字段。

警告:

计算位置工具不能使用网络分析服务 URL 作为输入网络。 无法直接为服务预先计算网络位置。

无法为 ArcGIS Online 服务预先计算和使用网络位置,因为服务使用的网络数据经常更新,客户无法访问。 但是,如果您有权访问发布服务时使用的网络数据集,则可以使用 ArcGIS Enterprise 路由服务预先计算和使用网络位置进行分析。 您可以使用本地计算机上的此网络数据集作为计算位置工具的输入,以预先计算网络位置。 工具计算的网络位置字段可用于引用服务的分析。

预先计算的网络位置字段的有效性

预先计算的位置字段仅对计算位置字段的网络数据集和出行模式有效。 如果您计划将这些点与其他网络或出行模式配合使用,请重新计算位置字段。 此外,如果您编辑并重新构建网络数据集,则当编辑内容影响输入的定位方式时,请重新计算所有存储的位置字段。

在分析中使用预先计算的网络位置

预先计算的网络位置字段通过字段映射传输到输入分析子图层或类。 工作流取决于您使用的是网络分析图层还是 Network Analyst Python 模块,并在下面的小节中进行了描述。

在为分析映射网络位置字段时,将仅映射 SourceIDSourceOIDPosAlongSideOfEdge 字段。 SnapXSnapYSnapZDistanceToNetworkInMeters 字段是信息性字段,无需为分析指定位置。

为基于图层的网络分析工作流使用预先计算的网络位置

如果使用网络分析图层执行分析,则在使用添加位置工具将输入添加到分析图层时,可以映射预先计算的位置字段。 要执行此操作,请使用字段映射参数将网络位置字段从输入要素映射到网络位置属性。 如果您使用工具对话框,请将字段映射参数设置为使用网络位置字段以启用映射。

使用 Network Analyst 模块为基于 Python 的工作流使用预先计算的网络位置

使用 Network Analyst 模块在 Python 中执行分析时,可以在使用 loadinsertCursor 方法添加输入时使用网络位置字段。 使用 insertCursor 方法,可以像其他任何字段一样指定网络位置字段。 对于使用 load 方法的工作流,您可以使用 fieldMappings 方法将网络位置字段从输入映射到输入类中的字段,将 use_location_fields 参数设置为 True。 一旦创建了具有网络位置字段的字段映射,就可以在 load 方法的 field_mappings 参数中使用。

设置分析输入中更详细地描述了这些过程,包括代码示例。

预先计算的网络位置并在求解时自动重新定位

默认情况下,解决分析时会检查现有网络位置字段,以确保它们有效且可访问。 在以下情况下,单个输入可能会在求解时自动重新计算其网络位置字段:

  • 输入没有网络位置字段,或者位置字段无效或不完整。
  • 输入的 Status 字段表明它没有位于、没有到达或没有位于最近的可能网络位置上。
  • 输入位于受用于分析的出行模式限制的网络元素上。
  • 输入被障碍物阻挡。

此外,对于网络分析图层,如果自上次求解网络分析图层后网络数据集已重建或图层属性页面上的定位设置已更改,则所有输入将在求解时自动重新定位。 在这种情况下,所有预先计算的网络位置都将被更新和覆盖。

在许多情况下,这种自动重定位是所需的行为,尤其是存在障碍的情况下,在预先计算网络位置时不会使用这些障碍。 在这种情况下,为网络分析图层或 Python 求解程序对象配置与预先计算网络位置时使用的相同定位设置非常重要。 受障碍影响的输入将被重新定位以避开障碍,并且由于应用相同的定位设置而因不同原因重新定位的其他输入的位置字段不会改变。

尽管在某些情况下自动重新定位行为很有价值,但在其他情况下您可能希望关闭此选项。 特别是,如果您在分析中未使用障碍,则此行为的价值最小。 如果使用预先计算网络位置时使用的相同定位设置配置分析,则自动重新定位行为会再次找到相同的网络位置。 通过跳过自动重新定位步骤,您还可能会体验到微小的性能改进。

使用基于图层的工作流执行网络分析时,您可以使用添加位置工具中的允许在求解时自动重新定位参数或使用网络分析图层的属性页面来调整此设置。 当使用 Network Analyst 模块在 Python 中执行分析时,您可以使用 allowAutoRelocate 属性调整此设置。

无论设置的值如何,任何没有网络位置字段或不完整位置字段的输入都将在求解时使用为分析配置的定位设置进行定位。 同样,如果重新构建网络数据集或更改其他定位设置,则假定现有位置字段无效,并且无论设置的值如何,都会在求解时重新计算所有位置。