追加路径 (位置参考)

适用于 Location Referencing 许可。

摘要

用于将输入折线图层中的路径追加到 LRS 网络中。

注:

当目标图层为要素服务图层时,验证结果将写入 ArcGIS Server 目录中的文件。 默认情况下,此文件会在 10 分钟后自动清除,这可能不足以处理所有验证并将其写入正在运行 ArcGIS Pro 的工作站。 对于较大的数据负载,建议您将文件最长保留期限调整为至少一小时。 可以ArcGIS Server Manager 中编辑服务器目录以调整此设置。

使用情况

  • 运行此工具需要 LRS 数据集。

  • 选中考虑现有中心线参数时,该工具支持在现有中心线上追加路线。

    • 在不考虑现有中心线的情况下,该工具会在目标 LRS 数据集和目标 LRS 网络中创建中心线。
    • 在考虑现有中心线时,该工具会将目标 LRS 数据集中现有的中心线与源路线的几何形状完全匹配的路线关联起来。 如果追加到路径的中心线没有中心线 ID,则将创建中心线 ID,并添加中心线序列记录。 如果追加路径的位置存在中心线 ID,则将使用已追加路径的路径 ID 来更新现有中心线序列记录。
  • 中考虑现有中心线参数时,以下条件将导致错误且必须在源路径可被追加之前解决:

    • 追加路径要素需要中心线分割。
    • 中心线和路径的 x、y 和 z 几何形状不匹配。
    • 中心线部分匹配,例如,如果部分中心线超出 x、y 和 z 容差范围。
    • 追加路径具有与几何相匹配的一条或多条中心线,但有些位置不存在中心线。
    • 检测到重叠的中心线。
    • 没有与追加路径匹配的中心线。
    • 源路径或现有中心线拥有零长度或近似零长度,这将因为拓扑容差进程而导致几何中有间隙。 当两个点之间的距离小于或等于以下值时,聚类过程会将两个点捕捉到一起:
      1.01 * sqrt(2) * (2 * 容差 + 2 * 分辨率)
      有关聚类的详细信息,请参阅要素类基础知识
  • 输出路径将具有输入折线顶点的 x、y 和 z 值,但不会追加任何 m 值。

  • 在追加路径之前,创建将用于基础 LRS 网络要素类中的字段映射的任何新字段。

  • 输入折线要素类和目标 LRS 网络的空间参考、x,y 分辨率和 x,y 容差必须相匹配。

  • 将在本地写入一个文本文件,说明该工具已运行,并包含有关验证失败的路径的信息。 工具消息将提供文本文件的位置,该位置位于临时目录中。

  • 当选中允许部分加载路径参数时,将支持以下内容:

    • 有效的源路径将追加到目标LRS网络,即便某些源路径验证失败。
    • 该工具将提供包含验证失败的源路径的要素类。 您可以使用文本文件中的信息来修复有问题的源路径。
      注:

      要素类是临时创建,将在 ArcGIS Pro 关闭时被删除。 要复制要素类,右键单击内容窗格中的图层,然后单击数据 > 导出要素,或使用导出要素工具。

  • 此工具的输出是一个修改后的 LRS 网络,其中追加了路径并创建了中心线要素。

  • 启用冲突预防后,支持以下内容:

    • 如果要追加的路径是新的,则不会为这些路径获取锁。
    • 对于其他加载类型,例如按路径 ID 停用按路径 ID 替换,将自动获取锁(如果可用)。
    • 如果无法获取锁,则该工具将不会运行并将提供有问题的锁的文本文件。
    • 如果在默认版本中工作,则当该工具成功完成运行时,将自动释放所获取的锁。
    • 如果在授权版本中工作,则当该工具完成后,获取的锁将保持在 ON POST 的可释放状态。 您必须发布或删除该版本才能释放锁。
    • 如果在授权版本中工作并且工具进程因中断而取消,则获取的锁将保持在 Yes 的可释放状态。 锁拥有者可以释放锁。

    了解更多有关释放 ArcGIS Pipeline Referencing 锁定释放 ArcGIS Roads and Highways 锁定的信息。

    了解有关 ArcGIS Pipeline Referencing 中的冲突预防ArcGIS Roads and Highways 中的冲突预防的详细信息。

  • 如果输入折线要素类包含曲线,则将对曲线进行增密。

    了解有关 ArcGIS Pipeline Referencing 中的曲线ArcGIS Roads and Highways 中的曲线的详细信息。

  • 如果目标 LRS 网络配置为支持多字段路径 ID 的线路网络,则追加路径无需以下参数:

    • 路径名称字段
    • 线名称字段
  • 当使用加载类型参数的添加参数值追加新路径时,如果目标 LRS 网络已配置路径名称,则可以使用该路径名称追加路径。 如果路径 ID 为空,则将自动为已追加路径生成路径 ID。

  • 该工具将检查线顺序值是否大于零,并根据线中路径的流向和方向以 100 为增量进行检查。 不正确的线路顺序值将导致该工具失效。 输出文本文件将不正确的线顺序值报告为错误。 修复这些错误后,该工具将成功运行。

  • 该工具会检查配置了路径将加载到的 LRS 网络的公共设施网络。 如果找到了公共设施网络,则在路由中追加时需要考虑现有中心线,并且在地理处理窗格中会隐藏考虑现有中心线参数复选框。

    了解有关一起管理 Pipeline Referencing 和公共设施网络的更多信息

  • 如果加载类型参数设置为按路径 ID 替换按路径 ID 停用,并且源路径与目标路径具有不同的路径名称和路径 ID 值,则此工具将失败。

  • 如果针对加载类型参数指定按路径 ID 替换参数值,则任何被替换的路径都将替换路径和中心线序列记录。 将删除路径上的校准点,必须重新创建或重新加载这些校准点。

  • 如果 LRS 配置有 Address Data Management 解决方案,则默认选中考虑现有中心线参数。

参数

标注说明数据类型
源路径

从中派生路径的输入。 输入可以是折线要素类、shapefile、要素服务或 LRS 网络要素类。

Feature Layer
LRS 网络

路径将加载到的目标 LRS 网络。

Feature Layer
路径 ID 字段

输入折线要素类中的字段,将映射至 LRS 网络的路径 ID 字段。 字段类型必须与目标 LRS 网络的 RouteID 字段类型相匹配,并且必须是字符串或 GUID 字段类型。 如果其为文本字符串,则字段长度必须小于或等于目标 RouteID 字段的长度。

Field
路径名称字段

输入折线要素类中的字段,将映射至 LRS 网络的路径名称字段。 该字段必须是字符串字段,并且字段长度必须小于或等于目标路径名称字段的长度。

Field
开始日期字段
(可选)

输入折线要素类中的日期字段,将映射至 LRS 网络的起始日期字段。 如果该字段未映射,则将为所有追加路径提供一个表示开始时间的空值。

Field
结束日期字段
(可选)

输入折线要素类中的日期字段,将映射至 LRS 网络的结束日期字段。 如果未映射该字段,则将为所有追加路径提供一个表示结束时间的空值。

Field
线 ID 字段
(可选)

输入折线要素类中的字段,将映射至 LRS 网络的线路 ID 字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。 字段类型和长度必须与中心线序列表的路径 ID 字段相匹配。

Field
线名称字段
(可选)

输入折线要素类中的字符串字段,将映射至 LRS 网络的线路名称字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。

Field
线顺序字段
(可选)

输入折线要素类中的长整型字段,将映射至 LRS 网络的线路顺序字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。

了解更多有关 Pipeline Referencing 中的线网络和线顺序Roads and Highways 中的线网络和线顺序

Field
字段映射
(可选)

控制源路径字段中的属性信息如何传输到输入 LRS 网络。 无法将字段添加到目标 LRS 网络或从目标 LRS 网络中删除,因为源路径的数据已追加到具有预定义模式的现有 LRS 网络。 虽然您可以为每个输出字段设置合并规则,但该工具会忽略这些规则。

Field Mappings
加载类型
(可选)

指定如何将具有相同路径 ID 的测量或时间叠加的追加路径加载到网络要素类中。

  • 添加追加路径将加载到目标 LRS 网络。 如果源路径中的任何路径 ID 已存在于具有相同时间的目标 LRS 网络中,则其将作为重复路径写入输出日志,并且在完成加载过程之前,必须对其进行更正或将其过滤掉。 这是默认设置。
  • 按 ID 停用路径会将已追加路径加载到目标 LRS 网络中,并且将停用目标 LRS 网络中与已追加路径具有相同路径 ID 和时间重叠的任何路径。 如果追加路径覆盖了具有相同路径 ID 的目标路径,则该目标路径将被删除。
  • 按 ID 替换路径会将已追加路径加载到目标 LRS 网络中,并且将删除目标 LRS 网络中与已追加路径具有相同路径 ID 的任何路径。
String
加载字段
(可选)

指定将用于加载路径的字段。

  • 路径 ID将使用路径 ID 字段加载路径。 这是默认设置。
  • 路径名称将使用路径名称字段加载路径。 当加载类型参数设置为添加时,此选项仅适用于在 LRS 网络中配置了路径名称的网络。
String
考虑现有中心线
(可选)

指定是否使用现有中心线追加路线。

  • 选中 - 将使用现有中心线追加路径,并且不会创建新的中心线。
  • 未选中 - 将为追加的路线创建新的中心线。 这是默认设置。

Boolean
允许部分加载路径
(可选)

指定是否即便某些路径验证失败,依然追加有效路径。

  • 选中 - 即使某些路径验证失败,依然追加有效路径。
  • 未选中 - 如果某些路径验证失败,将不追加路径 这是默认设置。

Boolean

派生输出

标注说明数据类型
LRS 网络

更新的 LRS 网络要素图层。

Feature Layer
输出结果文件

详细说明工具所做更改的文本文件。

Text File
已跳过路径

包含验证失败的源路径的要素类。

Feature Class

arcpy.locref.AppendRoutes(source_routes, in_lrs_network, route_id_field, route_name_field, {from_date_field}, {to_date_field}, {line_id_field}, {line_name_field}, {line_order_field}, {field_map}, {load_type}, {load_field}, {consider_existing_centerlines}, {allow_partial_loading})
名称说明数据类型
source_routes

从中派生路径的输入。 输入可以是折线要素类、shapefile、要素服务或 LRS 网络要素类。

Feature Layer
in_lrs_network

路径将加载到的目标 LRS 网络。

Feature Layer
route_id_field

输入折线要素类中的字段,将映射至 LRS 网络的路径 ID 字段。 字段类型必须与目标 LRS 网络的 RouteID 字段类型相匹配,并且必须是字符串或 GUID 字段类型。 如果其为文本字符串,则字段长度必须小于或等于目标 RouteID 字段的长度。

Field
route_name_field

输入折线要素类中的字段,将映射至 LRS 网络的路径名称字段。 该字段必须是字符串字段,并且字段长度必须小于或等于目标路径名称字段的长度。

Field
from_date_field
(可选)

输入折线要素类中的日期字段,将映射至 LRS 网络的起始日期字段。 如果该字段未映射,则将为所有追加路径提供一个表示开始时间的空值。

Field
to_date_field
(可选)

输入折线要素类中的日期字段,将映射至 LRS 网络的结束日期字段。 如果未映射该字段,则将为所有追加路径提供一个表示结束时间的空值。

Field
line_id_field
(可选)

输入折线要素类中的字段,将映射至 LRS 网络的线路 ID 字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。 字段类型和长度必须与中心线序列表的路径 ID 字段相匹配。

Field
line_name_field
(可选)

输入折线要素类中的字符串字段,将映射至 LRS 网络的线路名称字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。

Field
line_order_field
(可选)

输入折线要素类中的长整型字段,将映射至 LRS 网络的线路顺序字段。 此参数仅在目标 LRS 网络是 LRS 线网络时使用。

了解更多有关 Pipeline Referencing 中的线网络和线顺序Roads and Highways 中的线网络和线顺序

Field
field_map
(可选)

控制源路径字段中的属性信息如何传输到输入 LRS 网络。 无法将字段添加到目标 LRS 网络或从目标 LRS 网络中删除,因为源路径的数据已追加到具有预定义模式的现有 LRS 网络(字段属性)。 虽然您可以为每个输出字段设置合并规则,但该工具会忽略这些规则。 您可使用 ArcPyFieldMappings 类来定义此参数。

Field Mappings
load_type
(可选)

指定如何将具有相同路径 ID 的测量或时间叠加的追加路径加载到网络要素类中。

  • ADD追加路径将加载到目标 LRS 网络。 如果源路径中的任何路径 ID 已存在于具有相同时间的目标 LRS 网络中,则其将作为重复路径写入输出日志,并且在完成加载过程之前,必须对其进行更正或将其过滤掉。 这是默认设置。
  • RETIRE_BY_ROUTE_ID会将已追加路径加载到目标 LRS 网络中,并且将停用目标 LRS 网络中与已追加路径具有相同路径 ID 和时间重叠的任何路径。 如果追加路径覆盖了具有相同路径 ID 的目标路径,则该目标路径将被删除。
  • REPLACE_BY_ROUTE_ID会将已追加路径加载到目标 LRS 网络中,并且将删除目标 LRS 网络中与已追加路径具有相同路径 ID 的任何路径。
String
load_field
(可选)

指定将用于加载路径的字段。

  • ROUTE_ID将使用路径 ID 字段加载路径。 这是默认设置。
  • ROUTE_NAME将使用路径名称字段加载路径。 当 load_type 参数设置为 ADD 时,此选项仅适用于在 LRS 网络中配置了路径名称的网络。
String
consider_existing_centerlines
(可选)

指定是否使用现有中心线追加路线。

  • CONSIDER将使用现有中心线追加路径,并且不会创建新的中心线。
  • DO_NOT_CONSIDER将为追加的路线创建新的中心线。 这是默认设置。
Boolean
allow_partial_loading
(可选)

指定是否即便某些路径验证失败,依然追加有效路径。

  • ALLOW即便某些路径验证失败,依然追加有效路径。
  • DO_NOT_ALLOW如果某些路径验证失败,将不追加路径。 这是默认设置。
Boolean

派生输出

名称说明数据类型
out_lrs_network

更新的 LRS 网络要素图层。

Feature Layer
out_details_file

详细说明工具所做更改的文本文件。

Text File
out_skipped_routes

包含验证失败的源路径的要素类。

Feature Class

代码示例

AppendRoutes 示例 1(Python 窗口)

以下脚本演示了如何在 Python 窗口中使用 AppendRoutes 函数将路径追加到现有 LRS 网络,由此替换出现重叠的相应路径。

# Name: AppendRoutes_ex1.py
# Description: Append routes into an existing LRS Network, replacing routes where an overlap occurs.
# Requires: ArcGIS Location Referencing

# Set current workspace
arcpy.env.workspace= r"C:\DOT.gdb"

# Set tool variables
source_routes = r"C:\Data\Input.gdb\RoutestoAppend"
in_lrs_network = r"C:\Data\DOT.gdb\LRS\StateRoutes"
route_id_field = "RouteId"
route_name_field = None
from_date_field = "FromDate"
to_date_field = "ToDate"
line_id_field = None
line_name_field = None
line_order_field = None
field_map = None
load_type = "REPLACE_BY_ROUTE_ID"
load_field = None
consider_existing_centerlines = "DO_NOT_CONSIDER"
allow_partial_loading = "DO_NOT_ALLOW"

# Run the tool
arcpy.locref.AppendRoutes(source_routes, in_lrs_network, route_id_field, route_name_field, from_date_field,
                          to_date_field, line_id_field, line_name_field, line_order_field, field_map, load_type,
                          load_field, consider_existing_centerlines, allow_partial_loading)
AppendRoutes 示例 2(独立脚本)

以下独立脚本演示了考虑现有中心线时如何使用 AppendRoutes 函数。

# Name: AppendRoutes_ex2.py
# Description: Appending new routes into an existing LRS network using Route Name in python stand alone script. Existing centerlines are considered.
# Requires: ArcGIS Location Referencing

# Import arcpy module
import arcpy

# Check out license
arcpy.CheckOutExtension("LocationReferencing")


# Set tool variables:
source_routes = r"C:\Data\Input.gdb\RoutestoAppend"
in_lrs_network = r"C:\Data\pipelinereferencing.gdb\LRS\EngineeringNetwork"
route_id_field = "RouteId"
route_name_field = "RouteName"
from_date_field = "FromDate"
to_date_field = "ToDate"
line_id_field = "LineId"
line_name_field = "LineName"
line_order_field = "LineOrder"
field_map = None
load_type = "ADD"
load_field = "RouteName"
consider_existing_centerlines = "CONSIDER"
allow_partial_loading = "DO_NOT_ALLOW"


# Process: Append Routes
arcpy.locref.AppendRoutes(source_routes, in_lrs_network, route_id_field, route_name_field, from_date_field, to_date_field, line_id_field, line_name_field,
                          line_order_field, field_map, load_type, load_field, consider_existing_centerlines, allow_partial_loading)

# Check in license
arcpy.CheckInExtension('LocationReferencing')
AppendRoutes 示例 3(独立脚本)

以下独立脚本演示了如何将 AppendRoutes 函数用于用户生成的路径 ID 网络。

# Name: AppendRoutes_ex3.py
# Description: Append records into an existing usergenerated routeId network feature class in a stand-alone script.
# Source fields: RS and RN, Target fields: RouteSystem and RouteNumber
# Requires: ArcGIS Location Referencing 

# Import arcpy module
import arcpy

# Check out license
arcpy.CheckOutExtension("LocationReferencing")

# Local variables:
source_routes = r"C:\Data\DOT.gdb\LRS\RoutestoAppend"
in_lrs_network = r"C:\Data\DOT.gdb\LRS\StateRoutes"
route_id_field = "RouteId"
route_name_field = None
from_date_field = "FromDate"
to_date_field = "ToDate"
line_id_field = None
line_name_field = None
line_order_field = None
load_type = "ADD"
load_field = None
consider_existing_centerlines = "DO_NOT_CONSIDER"
allow_partial_loading = "DO_NOT_ALLOW"

# Define field mappings object
fieldMappings = arcpy.FieldMappings()  

# Add input fields
fldmap1 = arcpy.FieldMap()
fldmap1.addInputField(source_routes, "RS")

fldmap2 = arcpy.FieldMap()
fldmap2.addInputField(source_routes, "RN")

# Set output fields
fld1 = fldmap1.outputField  
fld1.name = "RouteSystem"
fld1.aliasName = "RouteSystem"
fldmap1.outputField = fld1

fld2 = fldmap2.outputField  
fld2.name = "RouteNumber"
fld2.aliasName = "RouteNumber"
fldmap2.outputField = fld2

# Add output fields to field mappings object
fieldMappings.addFieldMap(fldmap1)
fieldMappings.addFieldMap(fldmap2)

# Run Append Routes
arcpy.locref.AppendRoutes(source_routes, in_lrs_network, route_id_field, route_name_field, from_date_field, to_date_field,
                          line_id_field, line_name_field, line_order_field, fieldMappings, load_type, load_field,
                          consider_existing_centerlines, allow_partial_loading)


# Check in license
arcpy.CheckInExtension('LocationReferencing')
AppendRoutes 示例 4(独立脚本)

以下独立脚本演示了如何在要素服务中使用 AppendRoutes 函数。

# Name: AppendRoutes_Pro_Ex4.py
# Description: Append routes using a feature service in a stand-alone script. It is recommended to work in a named version and post it into the default version.
# Requires: ArcGIS Location Referencing

# Import arcpy module.
import arcpy

# Check out any necessary licenses.
arcpy.CheckOutExtension("LocationReferencing")

# Set tool variables.
source_routes = r"C:\LocationReferencing\LR.gdb\LRS\routes"
route_id_field = "ROUTEID"
route_name_field = "ROUTENAME"
from_date_field = "FROMDATE"
to_date_field = "TODATE"
line_id_field = "LINEID"
line_name_field = "LINENAME"
line_order_field = "ORDERID"
field_mapping = r'CREATIONUSER "Creation User" true true false 50 Text 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,CREATIONUSER,0,50;DATECREATED "Date Created" true true false 8 Date 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,DATECREATED,-1,-1;DATEMODIFIED "Date Modified" true true false 8 Date 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,DATEMODIFIED,-1,-1;LASTUSER "Last User" true true false 50 Text 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,LASTUSER,0,50;EVENTSOURCE "Event Source" true true false 50 Text 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,EVENTSOURCE,0,50;LEGACYID "Legacy ID" true true false 38 Text 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,LEGACYID,0,38;ENGFROMM "ENGFROMM" true true false 0 Double 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,ENGFROMM,-1,-1;ENGTOM "ENGTOM" true true false 0 Double 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,ENGTOM,-1,-1;OBJECTSTATUS "Object Status" true true false 20 Text 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,OBJECTSTATUS,0,20;CONTINFROMM "Continuous from Measure" true true false 0 Double 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,CONTINFROMM,-1,-1;CONTINTOM "Continuous to Measure" true true false 0 Double 0 0,First,#,C:\LocationReferencing\LR.gdb\LRS\routes,CONTINTOM,-1,-1'
load_type = "REPLACE_BY_ROUTE_ID"
load_field = None
consider_existing_centerlines = "DO_NOT_CONSIDER"
allow_partial_loading = "DO_NOT_ALLOW"

## Target Route is in feature service. Signing in portal is required to access the feature service.
arcpy.SignInToPortal('https://yourdomain.com/portal', 'username', 'password')

## Map the target route network from the feature service.Here, 18 corresponds to the target route network.
in_lrs_network = r"https://yourdomain.com/server/rest/services/FeatureServiceName/FeatureServer/18"

# Run Append Routes
arcpy.locref.AppendRoutes(source_routes, in_lrs_network, route_id_field, route_name_field, from_date_field, to_date_field, line_id_field, line_name_field,
                          line_order_field, field_mapping, load_type, load_field, consider_existing_centerlines, allow_partial_loading)

# Check in licenses
arcpy.CheckInExtension('LocationReferencing')

许可信息

  • Basic: 需要 ArcGIS Location Referencing(ArcGIS Pipeline Referencing 或 ArcGIS Roads and Highways)
  • Standard: 需要 ArcGIS Location Referencing(ArcGIS Pipeline Referencing 或 ArcGIS Roads and Highways)
  • Advanced: 需要 ArcGIS Location Referencing(ArcGIS Pipeline Referencing 或 ArcGIS Roads and Highways)

相关主题