计算位置 (Network Analyst)

描述

定位网络上的输入要素,并将描述这些网络位置的字段添加到输入要素中。该工具用于将网络位置信息存储为要素属性,以便快速地为网络分析的输入加载要素。

了解有关定位网络上的要素的详细信息

使用方法

  • 该工具用于计算可输入到添加位置工具的位置字段。应该对要多次输入到网络分析图层的要素应用该工具。计算完位置后,可使用添加位置工具中的使用网络位置字段代替几何参数快速地将要素作为网络位置进行加载。

  • 还可使用一组不同的搜索选项,通过该工具来对网络分析图层中未定位的网络位置进行重新计算。例如,如果路径网络分析图层中的停靠点最初是按 500 米的搜索容差进行添加的,而少数停靠点未进行定位,那么您可以使用按属性选择图层工具等来选择未定位的停靠点,然后再将停靠点子图层指定为输入要素参数值并且选择一个较大的搜索容差,重新运行该工具。

  • 如果用作网络数据集中的网络源的要素类具有有效的最新的空间索引,那么该工具的运行速度将显著提高。

语法

arcpy.na.CalculateLocations(in_point_features, in_network_dataset, {search_tolerance}, {search_criteria}, {match_type}, {source_ID_field}, {source_OID_field}, {position_field}, {side_field}, {snap_X_field}, {snap_Y_field}, {distance_field}, {snap_Z_field}, {location_field}, {exclude_restricted_elements}, {search_query}, {travel_mode})
参数说明数据类型
in_point_features

将要计算网络位置的输入要素。

对于线和面要素,由于网络位置信息存储在 BLOB 字段中(在位置范围字段参数中指定),所以仅支持地理数据库要素类。

Table View
in_network_dataset

将用于计算位置的网络数据集。

如果将网络分析图层的子图层用作输入要素,则该参数必须设置为网络分析图层所引用的网络数据集。

Network Dataset Layer
search_tolerance
(可选)

在网络上定位输入要素所使用的搜索容差。搜索容差以外的要素将保持未定位状态。该参数包括容差的值和单位。

默认值为 5000 米。

计算线或面要素的位置时,不使用该参数。

Linear Unit
search_criteria
[[Source, SnapType],...]
(可选)

计算网络位置时将搜索网络数据集中的源以及将使用几何的部分(也称为捕捉类型)。例如,如果网络数据集引用表示街道和人行道的单独要素类,则可以选择在街道上定位输入,而非人行道。

以下是每个网络源可用的捕捉类型选择:

  • SHAPE - 点将位于此网络源中元素的最近点处。
  • MIDDLE - 点将位于此网络源中元素的最近中点处。
  • END - 点将位于此网络源中元素的最近端点处。
  • NONE - 点将不位于此网络源的元素上。

针对向后兼容性,将保留 MIDDLEEND 选项。使用 SHAPE 选项在特定的网络源中查找输入;否则,请使用 NONE

计算线或面要素的位置时,即使指定了其他捕捉类型,也将仅使用 SHAPE 捕捉类型。

除通过运行融合网络工具创建的覆盖交汇点和系统交汇点外(其默认值为 NONE),其他所有网络源的默认值为 SHAPE

网络数据源为门户服务时此参数不可用。

该参数值被指定为具有嵌套列表的列表。嵌套列表由两个值组成,分别表示每个网络源的名称和捕捉类型。例如,参数值 [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] 指定搜索可定位于 Streets 源的形状,而不可定位于 Streets_ND_Junctions 源。

未包含在本列表中的任何网络源将使用其默认捕捉类型。建议将所有网络源包含在列表中并为每个网络源明确地设置捕捉类型。

对于地理数据库网络数据集,可以为网络源的每个子类型指定捕捉类型。例如,如果网络具有名为 Streets 的源,且该源具有名为 Local Streets 的子类型,请使用 ["Streets : Local Streets", "SHAPE"] 来指定地方街道的捕捉类型。

Value Table
match_type
(可选)

指定新的网络位置将如何与网络源匹配。

  • MATCH_TO_CLOSEST新网络位置将与已在搜索条件中指定捕捉类型的所有源中的最近网络源相匹配。这是默认设置。
  • PRIORITY新网络位置将与已在搜索条件中指定捕捉类型的第一个网络源相匹配。这些源按照优先级顺序进行搜索,当在搜索容差内找到位置时,搜索停止。

计算线或面要素的位置时,不使用该参数。

Boolean
source_ID_field
(可选)

要使用计算的网络位置的源 ID 创建或更新的字段名称。默认情况下,将创建或更新名为 SourceID 的字段。

计算线或面要素的位置时,不使用该参数。

Field
source_OID_field
(可选)

要使用计算的网络位置的源 OID 创建或更新的字段名称。默认情况下,将创建或更新名为 SourceOID 的字段。

计算线或面要素的位置时,不使用该参数。

Field
position_field
(可选)

要使用计算的网络位置的延伸百分比创建或更新的字段名称。默认情况下,将创建或更新名为 PosAlong 的字段。

计算线或面要素的位置时,不使用该参数。

Field
side_field
(可选)

要使用点要素在计算的网络位置的边侧创建或更新的字段名称。默认情况下,将创建或更新名为 SideOfEdge 的字段。

计算线或面要素的位置时,不使用该参数。

Field
snap_X_field
(可选)

要使用计算的网络位置的 x 坐标创建或更新的字段名称。默认情况下,将创建或更新名为 SnapX 的字段。

计算线或面要素的位置时,不使用该参数。

Field
snap_Y_field
(可选)

要使用计算的网络位置的 у 坐标创建或更新的字段名称。默认情况下,将创建或更新名为 SnapY 的字段。

计算线或面要素的位置时,不使用该参数。

Field
distance_field
(可选)

要使用点要素与计算的网络位置的距离创建或更新的字段名称。默认情况下,将创建或更新名为 Distance 的字段。

输出字段的单位为米。

计算线或面要素的位置时,不使用该参数。

Field
snap_Z_field
(可选)

要使用计算的网络位置的 z 坐标创建或更新的字段名称。默认情况下,将创建或更新名为 SnapZ 的字段。

计算线或面要素的位置时,不使用该参数。

计算点要素的位置时,仅当输入的网络数据集支持基于网络源的 z 坐标值的连通性时,才会使用该参数。在所有其他情况下,使用 "#" 作为参数值。

Field
location_field
(可选)

要使用线或面要素的计算的网络位置的位置范围创建或更新的字段名称。默认情况下,将创建或更新名为 Locations 的字段。

仅当计算线或面要素的位置时,才使用此参数。对于输入点要素,使用 "#" 作为参数值。

Field
exclude_restricted_elements
(可选)

指定在定位输入时是否排除网络的受限部分。点不会位于在特定出行模式中被限制的元素上。如果未指定出行模式,则使用网络默认出行模式中的限制。

  • EXCLUDE网络位置仅放置在网络的可遍历部分。这样可防止将网络位置放在因限制或障碍而无法到达的元素上。使用该选项重新定位网络位置之前,请确保已向网络分析图层添加了所有限制型障碍,以便得到预期结果。这是默认设置。
  • INCLUDE网络位置将放置在网络的所有元素上。使用了该选项,如果重新定位的网络位置被放置在受限元素上,那么在求解过程中,可能无法到达这些网络位置。
Boolean
search_query
[[Source, Expression],...]
(可选)

定义将搜索限制在源要素类的要素子集内的查询。这在不想查找可能不适合分析的要素时很有用。例如,您可以使用查询来排除具有特定道路类的所有要素。

可以为网络数据集的每个源要素类指定一个单独的 SQL 表达式。默认情况下任何源都不使用查询。

网络数据源为门户服务时此参数不可用。

该参数值被指定为嵌套列表的列表。嵌套列表由两个值组成,分别表示所有网络源的名称和 SQL 表达式。有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

未包含在本列表中的任何网络源都不会应用查询。同样,指定为空字符串的表达式也将解释为无查询。

例如,参数值 [["Streets", "\"CFCC\" = 'A15'"], ["Streets_ND_Junctions", ""]] 指定对 Streets 源要素类的查询,以仅在 CFCC 字段值为 A15 的街道上定位输入。Streets_ND_Junctions 源要素类未应用任何查询。

Value Table
travel_mode
(可选)

要在分析中使用的出行模式名称。

如果选择了一个出行模式,那么将在计算位置字段时进行出行模式设置(例如限制和阻抗属性)。例如,如果距离输入点之一最近的网络边缘禁止卡车通行,且您的出行模式设置的是卡车模式,则计算位置会把点定位到下一个最近的不禁止卡车的网络边缘。

可用出行模式取决于 in_network_dataset 参数值。

如果将网络分析图层的子图层用作输入要素,则出行模式参数必须设置为网络分析图层的行驶模式。

String

派生输出

名称说明数据类型
out_point_feature_class

更新后的输入要素。

表视图

代码示例

计算位置 (CalculateLocations) 示例 1(Python 窗口)

仅使用所需参数计算点要素的位置。

stores = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals/Analysis/Stores"
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.CalculateLocations(stores, network, "5000 Meters",
                            [["Streets", "SHAPE"],
                            ["Streets_ND_Junctions", "NONE"]])
计算位置 (CalculateLocations) 示例 2(Python 窗口)

计算街道要素上点要素的位置(不包括其他网络源)。

warehouses = "C:/Data/Paris.gdb/Analysis/Warehouses"
network = "C:/Data/Paris.gdb/Transportation/ParisMultimodal_ND"
arcpy.na.CalculateLocations(warehouses, network, "5000 Meters",
    [["Metro_Lines", "NONE"], ["Streets", "SHAPE"],
    ["Transfer_Stations", "NONE"], ["Metro_Entrances", "NONE"],
    ["Metro_Stations", "NONE"], ["ParisMultimodal_ND_Junctions", "NONE"]],
    "MATCH_TO_CLOSEST", "SID", "SOID", "PA", "SOE", "SnapX", "SnapY",
    "Distance")
计算位置 (CalculateLocations) 示例 3(Python 窗口)

计算面要素的位置

parks = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals/Basemap/Parks"
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.CalculateLocations(parks, network, "", [["Streets", "SHAPE"],
                            ["Streets_ND_Junctions", "NONE"]],
                            location_field="Locations")
CalculateLocations 示例 4(独立脚本)

以下 Python 脚本演示了如何在独立脚本中使用 CalculateLocations 工具。

# Name: CalculateLocations_ex04.py
# Description: Calculate network locations for fire stations. Make sure that the
#              fire stations are not located on the freeways.
# Requirements: Network Analyst Extension

#Import system modules
import arcpy
from arcpy import env

try:
    #Set environment settings
    env.workspace = "C:/Data/SanFrancisco.gdb"

    #Set local variables
    in_features = "Analysis/FireStations"
    network = "Transportation/Streets_ND"
    search_tolerance = "2000 Meters"
    search_criteria = [["Streets", "SHAPE"], ["Streets_ND_Junctions", "NONE"]]
    search_query = [["Streets", '"FREEWAY" = 0'], ["Streets_ND_Junctions", ""]]

    #Calculate network locations and store them in defaut field names
    arcpy.na.CalculateLocations(in_features, network, search_tolerance,
                                search_criteria, "MATCH_TO_CLOSEST",
                                exclude_restricted_elements="EXCLUDE",
                                search_query=search_query)

    print("Script completed successfully.")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print(("An error occurred on line %i" % tb.tb_lineno))
    print((str(e)))

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题