使用方法
该工具用于计算可输入到添加位置工具的位置字段。应该对要多次输入到网络分析图层的要素应用该工具。计算完位置后,可使用添加位置工具中的使用网络位置字段代替几何参数快速地将要素作为网络位置进行加载。
还可使用一组不同的搜索选项,通过该工具来对网络分析图层中未定位的网络位置进行重新计算。例如,如果路径网络分析图层中的停靠点最初是按 500 米的搜索容差进行添加的,而少数停靠点未进行定位,那么您可以使用按属性选择图层工具等来选择未定位的停靠点,然后再将停靠点子图层指定为输入要素并且选择一个较大的搜索容差,重新运行该工具。
如果用作网络数据集中的网络源的要素类具有有效的最新的空间索引,那么该工具的运行速度将显著提高。
语法
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 来指定。
要为单一网络源指定多个捕捉类型,请使用捕捉类型关键字的组合形式,用下划线将关键字分开。例如,MIDDLE_END 指定位置可以捕捉到网络源的中部或末尾。 对于地理数据库网络数据集,可以为网络源 (["Streets : Local Streets","SHAPE"]) 的每个子类型指定捕捉类型。 计算线或面要素的位置时,即使指定了其他捕捉类型,也将仅使用 SHAPE 捕捉类型。 未包含在本列表中的任何网络源将使用其默认捕捉类型。最可靠的做法是将所有网络源包含在列表中并为每个网络源明确地设置捕捉类型。 除系统交汇点外的所有网络源的默认值均为 NONE,系统交汇点的默认值为 SHAPE。 | Value Table |
match_type (可选) |
计算线或面要素的位置时,不使用该参数。 | 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 (可选) | 指定在定位输入时是否排除网络的受限部分。点不会位于在特定出行模式中被限制的元素上。如果未指定出行模式,则使用网络默认出行模式中的限制。
| Boolean |
search_query [[Source, Expression],...] (可选) | 定义将搜索限制在源要素类的要素子集内的查询。这在不想查找可能不适合网络位置的要素时很有用。例如,如果正在加载面的质心,但不想定位在地方道路上,则可定义一个仅搜索主要道路的查询。 该参数值被指定为具有嵌套列表的列表。嵌套列表由两个值组成,分别表示所有网络源的名称和 SQL 表达式。对于不同的网络源要素类类型,SQL 表达式的语法略有不同。例如,如果要查询存储在文件或企业级地理数据库中的源要素类、shapefile 或 SDC,需将字段名用双引号括起:"CFCC"。如果要查询存储在个人地理数据库中的源要素类,需将字段用方括号括起:[CFCC]。 如果您不想指定特定源的查询,请使用 "#" 作为 SQL 表达式的值,或者将源名称和 SQL 表达式从参数值中排除。如果您不想指定所有网络源的查询,请使用 "#" 作为参数值。 例如,参数值 [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] 指定了 Streets 源要素类的 SQL 表达式,而没有指定 Streets_ND_Junctions 源要素类的表达式。注意:用于括字段名 CFCC 的双引号通过反斜杠字符进行转义,以避免 Python 解释程序出现分析错误。 默认情况下不使用查询。 | Value Table |
travel_mode (可选) | 要在分析中使用的出行模式名称。 如果选择了一个出行模式,那么将在计算位置字段时进行出行模式设置(例如限制和阻抗属性)。例如,如果距离输入点之一最近的网络边缘禁止卡车通行,且您的出行模式设置的是卡车模式,则计算位置会把点定位到下一个最近的不禁止卡车的网络边缘。 可用出行模式取决于 in_network_dataset 参数值。 如果将网络分析图层的子图层用作输入要素,则出行模式参数必须设置为网络分析图层的行驶模式。 | String |
派生输出
名称 | 说明 | 数据类型 |
out_point_feature_class | 更新的输入要素 | 表视图 |
代码示例
仅使用所需参数计算点要素的位置。
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"]])
计算街道要素上点要素的位置(不包括其他网络源)。
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")
计算面要素的位置
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")
以下 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: 是