计算位置 (Network Analyst)

许可等级:BasicStandardAdvanced

摘要

向包含要素网络位置的输入要素添加字段。该工具用于将网络位置信息存储为要素属性,以便快速地为网络分析图层的输入加载要素。

用法

语法

CalculateLocations_na (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})
参数说明数据类型
in_point_features

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

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

Table View
in_network_dataset

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

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

Network Dataset Layer
search_tolerance

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

计算线或面要素的位置时,不使用该参数。在这种情况下,使用 "#" 作为参数值。

Linear unit
search_criteria
[[Source, SnapType],...]

指定查找位置时将搜索网络数据集中的哪些源以及将使用几何的哪个部分(也称为捕捉类型)。

该参数值被指定为具有嵌套列表的列表。嵌套列表由两个值组成,分别表示每个网络源的名称和捕捉类型。捕捉类型通过关键字“SHAPE”、“MIDDLE”、“END”或“NONE”来指定。

  • SHAPE - 点将定位于此网络源中元素的最近点。
  • MIDDLE - 点将定位于此网络源中元素的最近的中点。
  • END - 点将定位于此网络源中元素的最近的端点。
  • NONE - 点将不会定位于此网络源中的元素。
例如,查找位置时,参数值 [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] 指定搜索可定位于 Streets 源的形状,而不可定位于 Streets_ND_Junctions 源。

要为单一网络源指定多个捕捉类型,请使用捕捉类型关键字的组合形式,用下划线将关键字分开。例如,MIDDLE_END 指定位置可以捕捉到网络源的中部或末尾。

对于地理数据库网络数据集,可以为网络源的每个子类型指定捕捉类型。

计算线或面要素的位置时,即使指定了其他捕捉类型,也将仅使用 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
(可选)

要使用计算的网络位置的 y 坐标创建或更新的字段名称。默认情况下,将创建或更新名为 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 表达式的语法略有不同。例如,如果要查询存储在文件或 ArcSDE 地理数据库中的源要素类、shapefile 或 SDC,需将字段名用双引号括起:"CFCC"。如果要查询存储在个人地理数据库中的源要素类,需将字段用方括号括起:[CFCC]

如果您不想指定特定源的查询,请使用 "#" 作为 SQL 表达式的值,或者将源名称和 SQL 表达式从参数值中排除。如果您不想指定所有网络源的查询,请使用 "#" 作为参数值。

例如,参数值 [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] 指定了 Streets 源要素类的 SQL 表达式,而没有指定 Streets_ND_Junctions 源要素类的表达式。注意:用于将字段名 CFCC 括起的双引号通过反斜杠字符进行转义,以避免 Python 解释程序出现分析错误。

Value Table

代码实例

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

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

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.CalculateLocations("Analysis/Stores","Transportation/Streets_ND",
                            "5000 Meters",[["Streets","SHAPE"],
                                           ["Streets_ND_Junctions","NONE"]])
计算位置 (CalculateLocations) 示例 2(Python 窗口)

根据网络源的子类型计算点要素的位置。

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/Paris.gdb"
arcpy.na.CalculateLocations(
    "Analysis/Warehouses","Transportation/ParisNet","5000 Meters",
    [["Streets : Highways","NONE"],["Streets : Major Roads","NONE"],
     ["Streets : Local Streets","SHAPE"],["ParisNet_Junctions", "NONE"]],
    "MATCH_TO_CLOSEST","SID","SOID","PA","SOE","SnapX","SnapY","Distance",
    "","","","")
计算位置 (CalculateLocations) 示例 3(Python 窗口)

计算面要素的位置。

import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.CalculateLocations("Basemap/Parks","Transportation/Streets_ND","",
                            [["Streets","SHAPE"],
                             ["Streets_ND_Junctions","NONE"]],
                            location_field="Locations")
计算位置 (CalculateLocations) 示例 4(独立 Python 脚本)

以下 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


#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")

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

#Set local variables
inFeatures = "Analysis/FireStations"
inNetworkDataset = "Transportation/Streets_ND"
searchTolerance = "2000 Meters"
searchCriteria = [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]]
searchQuery = [["Streets",'"FREEWAY" = 0'],["Streets_ND_Junctions",""]]

#Calculate network locations and store them in defaut field names
arcpy.na.CalculateLocations(inFeatures,inNetworkDataset,searchTolerance,
                            searchCriteria,"MATCH_TO_CLOSEST", 
                            exclude_restricted_elements="EXCLUDE",
                            search_query=searchQuery)
print "Script completed successfully."

环境

相关主题

许可信息

ArcGIS for Desktop Basic: 是
ArcGIS for Desktop Standard: 是
ArcGIS for Desktop Advanced: 是
5/10/2014