ServiceArea

摘要

此 ArcPy 类用于执行服务区分析。

说明

通过服务区分析,您可以计算在指定时间或距离限制内可从一个或多个设施点到达的区域。

了解有关服务区分析的详细信息

语法

 ServiceArea (in_network)
参数说明数据类型
in_network

将用于网络分析的网络数据集或服务。可以使用网络数据集的目录路径、网络数据集图层对象、网络数据集图层的字符串名称或网络分析服务的门户 URL 来指定参数。网络必须包含至少一个出行模式

要使用门户 URL,您必须使用具有路径选择权限的帐户登录门户。

当对象使用 ArcGIS Online 作为 in_network 时,求解分析将消耗配额。有关详细信息,请参阅服务配额概述

String

属性

属性说明数据类型
accumulateAttributeNames
(可读写)

分析过程中要累积的成本属性的列表。 这些累积属性仅供参考;求解程序仅使用求解分析时指定的出行模式所使用的成本属性。

默认值为空列表。

String
allowSaveLayerFile
(可读写)

指定是否允许在结果对象上使用 saveAsLayerFile 方法将分析结果另存为图层文件。 值为 True 表示可以保存图层文件。 值为 False 则表示无法保存图层文件。 如果分析引用网络数据集,则默认设置为 True;如果其引用门户服务,则为 False。 如果分析引用门户服务,则允许保存图层文件可能会降低分析速度。

Boolean
defaultImpedanceCutoffs
(可读写)

要计算的服务区范围。服务区输出显示在此阻抗中断内可从起始设施点到达的区域。默认为空列表,但在求解服务区之前必须至少指定一个中断。

如果分析中所使用的出行模式使用基于时间的阻抗属性,则 defaultImpedanceCutoffs 值将以 timeUnits 属性中指定的单位进行解释。如果分析中所使用的出行模式使用基于距离的阻抗属性,则 defaultImpedanceCutoffs 值将以 distanceUnits 属性中指定的单位进行解释。如果出行模式的阻抗属性既不是基于时间,也不是基于距离,则 defaultImpedanceCutoffs 值将以阻抗属性的单位进行解释。默认设置为 [5, 10, 15]

通过指定输入数据类型为设施点的单个中断值,可以基于每个设施点覆盖这些值。

通过输入设施点中的 Breaks 字段,可以基于每个设施点覆盖 defaultImpedanceCutoffs

Double
distanceUnits
(可读写)

报告分析输出中的行驶距离时使用的单位。 无论网络数据集中成本属性的单位如何,输出都将转换为此属性中设置的单位并以该单位进行报告。 将返回该属性并将其设置为 DistanceUnits 枚举的成员。 默认为 DistanceUnits.Kilometers

Object
excludeSourcesFromPolygonGeneration
(可读写)

生成面时,系统将排除网络数据集边源的列表。了解有关从服务区面生成中排除边源的详细信息。

返回该属性并将其设置为字符串列表,其中每个列表项目都为网络边源名称。默认为空列表,这意味着不会从面生成中排除任何边源。

String
geometryAtCutoff
(可读写)

当在 defaultImpedanceCutoffs 属性中指定多个值时,将需要控制单个设施点的输出面行为。该属性将返回并被设置为 ServiceAreaPolygonCutoffGeometry 枚举的成员。默认设置为 ServiceAreaPolygonCutoffGeometry.Rings

Object
geometryAtOverlap
(可读写)

控制多个设施点中服务区输出间的相互行为。该属性将返回并被设置为 ServiceAreaOverlapGeometry 枚举的成员。默认设置为 ServiceAreaOverlapGeometry.Overlap

Object
ignoreInvalidLocations
(可读写)

指定是否忽略无效的输入位置。 值为 True 表示将忽略无效的输入位置,仅使用有效位置即可成功进行分析。 值为 False 表示不会忽略无效位置,从而导致分析失败。

旧版本:

基于运行 10.9 之前版本 ArcGIS Enterprise 的门户的路径服务将始终忽略无效的输入位置。 如果将 ignoreInvalidLocations 设置为 False 并且该服务不支持此选项,则此方法将返回 ValueError 异常。

Boolean
networkDataSource
(只读)

分析时使用的网络数据集的完整目录路径。

String
outputType
(可读写)

要为分析生成的输出类型。选择是否生成面和/或线。该属性将返回并被设置为 ServiceAreaOutputType 枚举的成员。默认设置为 ServiceAreaOutputType.Polygons

Object
overrides
(可读写)

求解网络分析问题时,指定可影响求解程序行为的其他设置。

必须在 JavaScript 对象表示法 (JSON) 中指定此参数的值。 例如,有效值的格式如下:{"overrideSetting1" : "value1", "overrideSetting2" : "value2"}。 覆盖设置名称始终以双引号括起。 该值可以是数字、布尔值或字符串。

此参数的默认值为无值,表示不覆盖任何求解程序设置。

覆盖是高级设置,应仅在谨慎分析应用设置前后得到的结果之后使用。 要获取每个求解程序支持的覆盖设置及其可接受值的列表,请联系 Esri 技术支持。

String
polygonBufferDistance
(可读写)

服务区面修剪距离。 面修剪距离是附近没有其他可到达道路时,服务区面将从道路延伸的距离,类似于线缓冲大小。 这在网络稀疏且不需要服务区覆盖大片不含要素的区域时十分有用。

polygonBufferDistanceUnits 属性中指定缓冲距离值的单位。默认值为 100。

Double
polygonBufferDistanceUnits
(可读写)

polygonBufferDistance 属性的单位。该属性将返回并被设置为 DistanceUnits 枚举的成员。默认设置为 DistanceUnits.Meters

Object
polygonDetail
(可读写)

指定输出面所需的细节层次。了解有关面的细节层次的详细信息 该属性将返回并被设置为 ServiceAreaPolygonDetail 枚举的成员。默认设置为 ServiceAreaPolygonDetail.Standard

Object
searchQuery
(可读写)

当在网络中定位输入时,指定查询以将搜索范围限制在源要素类的要素子集内。 这在不想查找可能不适合网络位置的要素时很有用。 例如,如果正在加载面的质心,但不想定位在地方道路上,则可定义一个仅搜索主要道路的查询。

了解有关在网络中定位输入的详细信息

该参数值被指定为具有嵌套列表的列表。 嵌套列表由两个值组成,分别表示所有网络源的名称和 SQL 表达式。 对于不同的网络源要素类类型,SQL 表达式的语法略有不同。 例如,如果要查询存储在文件或企业级地理数据库中的源要素类、shapefile 或 SDC,则需将字段名用双引号括起:"CFCC"。 如果要查询存储在个人地理数据库中的源要素类,则需将字段用方括号括起:[CFCC]

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

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

默认情况下不使用查询。

List
searchTolerance
(可读写)

在网络上定位输入要素所需的最大搜索距离。 返回该属性并将其设置为双精度,然后通过 searchToleranceUnits 属性访问该值的单位。 默认值为 5000。

了解有关在网络中定位输入的详细信息

Double
searchToleranceUnits
(可读写)

searchTolerance 属性的单位。 将返回该属性并将其设置为 DistanceUnits 枚举的成员。 默认为 DistanceUnits.Meters

Object
timeOfDay
(可读写)

要用于分析的时间。 默认值为 None,表示分析将为时间中立。

DateTime
timeUnits
(可读写)

报告分析输出中的行驶时间时使用的单位。 无论网络数据集中成本属性的单位如何,输出都将转换为使用在此属性中设置的单位并以该单位进行报告。 将返回该属性并将其设置为 TimeUnits 枚举的成员。 默认为 TimeUnits.Minutes

Object
timeZone
(可读写)

指示 timeOfDay 属性中所指定的时间是否解释为输入位置的本地时间或协调世界时间 (UTC)。 将返回该属性并将其设置为 TimeZoneUsage 枚举的成员,且仅在 timeOfDay 属性不为 None 时可用。 默认为 TimeZoneUsage.LocalTimeAtLocations

Object
travelDirection
(可读写)

相对设施点的行进方向。该属性将返回并被设置为 TravelDirection 枚举的成员。默认设置为 TravelDirection.FromFacility

如果行进方向是 TravelDirection.FromFacility,则 timeOfDay 将表示从设施点的出发时间。如果行进方向是 TravelDirection.ToFacility,则 timeOfDay 将表示到达设施点的时间。

Object
travelMode
(可读写)

要用于分析的出行模式。

将返回该值并将其设置为 arcpy.nax.TravelMode 对象,但也可以使用出行模式的字符串名称或包含出行模式的有效 JSON 表示的字符串进行设置。 默认为用于分析的网络数据集上定义的默认出行模式。

了解有关出行模式的详细信息

Object

方法概述

方法说明
addFields (input_type, field_description)

将自定义字段添加到指定的输入类。 这些字段将包含在通过 fieldMappings 方法创建的字段映射字典中,也可与 insertCursor 方法配合使用。

count (input_type)

返回为输入类型添加的行数。

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})

生成将输入类型名称字段映射到 arcpy.nax.NAClassFieldMap 对象的 NAClassFieldMappings 字典,以允许您将字段从输入数据映射到求解程序属性。 字典可以用作 load 方法 field_mappings 参数的输入。

fieldNames (input_type, {use_location_fields})

获取指定输入类型支持的字段名称列表。

insertCursor (input_type, field_names, {append})

在指定的输入类型上建立写入光标。 此游标可用于将行直接添加到输入。

load (input_type, features, {field_mappings}, {append}, {max_features})

设置用于分析的输入要素。

solve ()

使用在 ServiceArea 对象上设置的属性和已加载的输入执行服务区分析。

方法

addFields (input_type, field_description)
参数说明数据类型
input_type

The type of input to which the fields should be added.

应使用 ServiceAreaInputDataType 枚举设置此参数。

Object
field_description
[field_description,...]

The fields and their properties that will be added to the input class. The value should be constructed as a list of lists with each row containing the following items:

  • Field name—The name of the field that will be added to the input class.
  • Field type—The type of the new field.
  • Field alias—The alternate display name given to the field name.
  • Field length—The length of the field being added. This sets the maximum number of allowable characters for each record of the field. This option is only applicable to fields of type text; the default length is 255.
  • Default value—The default value of the field.
  • Field domain—The geodatabase domain that will be assigned to the field.

Available field types are as follows:

  • TEXT—Any string of characters.
  • FLOAT—Fractional numbers between -3.4E38 and 1.2E38.
  • DOUBLE—Fractional numbers between -2.2E308 and 1.8E308.
  • SHORT—Whole numbers between -32,768 and 32,767.
  • LONG—Whole numbers between -2,147,483,648 and 2,147,483,647.
  • DATE—Date or time.

The method will return an error if the field already exists in the table or if any of the field properties are invalid.

List
count (input_type)
参数说明数据类型
input_type

用于计数的输入要素类型。

应使用 ServiceAreaInputDataType 枚举设置此参数。

Object
返回值
数据类型说明
Integer

行数。

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})
参数说明数据类型
input_type

The type of input for which the field mappings are returned.

应使用 ServiceAreaInputDataType 枚举设置此参数。

See descriptions of the fields available for each input type

Object
use_location_fields

Indicates whether network location fields should be included in the returned field mappings dictionary. Network location fields describe the point on the network where an object is located. You can use network location fields to more precisely control how your analysis inputs locate on the network and to save time when calling the solve method because the solver will not have to calculate the location fields from the geometry of the inputs. You can calculate location fields for a feature class using the Calculate Locations tool.

Learn more about network location fields and how inputs are located on the network

When this argument is set to True, the returned field mappings dictionary will contain network location fields. The default is False; the field mapping dictionary will not include network location fields.

(默认值为 False)

Boolean
list_candidate_fields
[list_candidate_fields,...]

Use this parameter to map additional, non-default fields from your input data into your analysis inputs. For example, if your input feature class contains a field named MyField, and you want this field to be included in your analysis inputs, pass the MyField field object to the list_candidate_fields parameter. MyField will be included in the returned field mapping dictionary and automatically mapped. When you call the load method using these field mappings, MyField will be included in the analysis inputs along with all the default fields. In many cases, these extra fields will be passed to the analysis output as well.

The parameter should be specified as a list of arcpy.Field objects, which can be obtained from a given feature class or table using the arcpy.ListFields function.

Learn more about best practices for setting up analysis inputs

(默认值为 None)

Field
返回值
数据类型说明
Dictionary

如果 NAClassFieldMappings 字典中的键为字段名称和值,则其为 arcpy.nax.NAClassFieldMap 对象。

fieldNames (input_type, {use_location_fields})
参数说明数据类型
input_type

返回其支持的字段名称的输入类型。

应使用 ServiceAreaInputDataType 枚举设置此参数。

See descriptions of the fields available for each input type

Object
use_location_fields

指示网络位置字段是否包含在返回的字段名称列表中。网络位置字段可描述网络中对象所在的点。您可以使用网络位置字段更精确地控制分析输入在网络上的定位方式,并且由于求解程序不必从输入的几何计算位置字段,因此在调用 solve 方法时可以节省时间。您可以使用计算位置工具计算要素类的位置字段。

了解有关网络位置字段以及如何在网络中定位输入的详细信息

当此参数设置为 True 时,返回的字段名称列表将包含网络位置字段。默认为 False;字段名称列表不包括网络位置字段。

(默认值为 False)

Boolean
返回值
数据类型说明
String

指定输入类型支持的字段名称列表。

insertCursor (input_type, field_names, {append})
参数说明数据类型
input_type

The type of input into which the cursor can be used to insert rows.

应使用 ServiceAreaInputDataType 枚举设置此参数。

Object
field_names
[field_names,...]

A list of field names of the input type whose values you want to set when inserting rows using the cursor. You can get the names of the fields supported by an input type by using the fieldNames method.

See descriptions of the fields available for each input type

In addition to regular fields, you can also set the geometry of the input using one of the following geometry tokens:

  • SHAPE@XY一组要素的质心 x,y 坐标。
  • SHAPE@XYZ一组要素的质心 x,y,z 坐标。
  • SHAPE@JSON表示几何的 Esri JSON 字符串。
  • SHAPE@WKBOGC 几何的熟知二进制 (WKB) 表示。 用于以可移植的方式将几何值表示为连续的字节流。
  • SHAPE@WKTOGC 几何的熟知文本 (WKT) 表示。 用于以可移植的方式将几何值表示为文本字符串。
  • SHAPE@要素的几何对象。

The SHAPE@XY and SHAPE@XYZ tokens are only supported for point-based input types. When using the SHAPE@XY and SHAPE@XYZ tokens, the x-, y-, and z-values should be specified in the spatial reference of the network data source being used in the analysis.

String
append

Specifies whether the features being inserted should be appended to the existing set of features for the input type. A value of True indicates that the new features should be appended; the existing features will be preserved. This is the default. A value of False indicates that any existing features for the input type should be deleted and replaced with the features currently being inserted.

(默认值为 True)

Boolean
返回值
数据类型说明
Object

可用于写入要素的 SolverInsertCursor 对象。

load (input_type, features, {field_mappings}, {append}, {max_features})
参数说明数据类型
input_type

The type of input feature to load.

应使用 ServiceAreaInputDataType 枚举设置此参数。

Object
features

The input features to load. This parameter accepts the following input types:

  • Catalog path to a feature class or a table
  • Layer object
  • String representing the name of a layer
  • FeatureSet or RecordSet object

For layer inputs, only selected features will be loaded. If a layer has a definition query, only the subset of features visible with the definition query will be loaded. The method also honors the Extent geoprocessing environment; only features in the specified extent will be loaded.

String
field_mappings

An NAClassFieldMappings dictionary that maps the field names of the input type to arcpy.nax.NAClassFieldMap objects representing the mapping of fields from the input features. Valid input for this parameter can be constructed using the fieldMappings method.

If field mappings are not specified, all fields from the input features that have the same name as the supported fields for the input type will be mapped.

(默认值为 None)

Dictionary
append

Indicates whether the features being loaded should be appended to the existing set of features for the input type. A value of True indicates that the new features should be appended; the existing features will be preserved. This is useful if you want to load inputs from multiple feature classes or tables to use in a single analysis. This is the default. A value of False indicates that any existing features for the input type should be deleted and replaced with the features currently being loaded.

(默认值为 True)

Boolean
max_features

The maximum number of features that can be loaded into the input type. This is useful if you are creating a tool or service and want an error returned if the size of the input exceeds the available resources. The load method will return an arcpy.nax.LimitError if the number of input features exceeds the max_features limit.

If a value is not specified, no limit is enforced for the count of the input features.

(默认值为 None)

Integer
solve ()
返回值
数据类型说明
Object

arcpy.nax.ServiceAreaResult 对象可用于访问输出和求解程序消息。

代码示例

ServiceArea 示例

执行服务区分析。

# An example showing how to perform service area analysis using a feature class for input facilities.
import arcpy
arcpy.CheckOutExtension("network")

nds = "C:/data/NorthAmerica.gdb/Routing/Routing_ND"
nd_layer_name = "Routing_ND"
input_facilities = "C:/data/io.gdb/Facilities"
output_polygons = "C:/data/io.gdb/ServiceAreaPolygons"

# Create a network dataset layer and get the desired travel mode for analysis
arcpy.nax.MakeNetworkDatasetLayer(nds, nd_layer_name)
nd_travel_modes = arcpy.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes["Driving Time"]

# Instantiate a ServiceArea solver object
service_area = arcpy.nax.ServiceArea(nd_layer_name)
# Set properties
service_area.timeUnits = arcpy.nax.TimeUnits.Minutes
service_area.defaultImpedanceCutoffs = [5, 10, 15]
service_area.travelMode = travel_mode
service_area.outputType = arcpy.nax.ServiceAreaOutputType.Polygons
service_area.geometryAtOverlap = arcpy.nax.ServiceAreaOverlapGeometry.Split
# Load inputs
service_area.load(arcpy.nax.ServiceAreaInputDataType.Facilities, input_facilities)
# Solve the analysis
result = service_area.solve()

# Export the results to a feature class
if result.solveSucceeded:
    result.export(arcpy.nax.ServiceAreaOutputDataType.Polygons, output_polygons)
else:
    print("Solve failed")
    print(result.solverMessages(arcpy.nax.MessageSeverity.All))