NetworkDataset

摘要

可以提供网络数据集属性的只读访问权限。您可以使用此类检索网络数据集边、交汇点和转弯的属性和属性值,以及网络数据集本身的其他属性。

语法

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

要检索其属性的网络数据集。可以使用网络数据集的目录路径、网络数据集图层对象或网络数据集图层的字符串名称来指定参数。

String

属性

属性说明数据类型
buildTimestamp
(只读)

最近构建的网络数据集的日期和时间。

DateTime
isBuilt
(只读)

指示是否构建网络数据集。False 值表示需要重建网络数据集以合并更改。

Boolean
travelModes
(只读)

返回适用于网络数据集的出行模式对象的字典。字典关键字是出行模式的名称,字典值是出行模式对象。此属性与 GetTravelModes 函数所返回的输出相同。

Dictionary

方法概述

方法说明
checkIntersectingFeatures (feature_layer, cutoff)

返回一个布尔值,指示指定的网络数据集内与指定的要素图层中的要素相交的边源要素的数量是小于还是等于指定中断。对于可作为线障碍或面障碍加载到网络分析问题的要素,该选项有助于限制其数量。

此方法与 CheckIntersectingFeatures 函数类似。

describe ()

将返回包含网络数据集其他属性的 Describe 对象。这等同于使用网络数据集上的 arcpy.Describe

edges ({edge_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode})

返回网络数据集边元素的迭代器,您可用其在一天内的指定时间访问特定边属性和网络属性的值。

getDataSourceFromSourceID (source_id)

返回由给定源 ID 标识的网络数据集源要素类的目录路径。

junctions ({junction_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode})

返回网络数据集交汇点元素的迭代器,您可用其在一天内的指定时间访问特定交汇点属性和网络属性的值。

turns ({turn_properties}, {attribute_names}, {eids}, {travel_mode})

返回网络数据集转弯元素的迭代器,您可用其访问特定转弯属性和网络属性的值。

方法

checkIntersectingFeatures (feature_layer, cutoff)
参数说明数据类型
feature_layer

Layer 对象包含与网络边源相交的要素。支持图层对象上存在的所有选择集或定义查询,且仅可用于指定要素的某个子集。

Layer
cutoff

相交要素的最大数量。

Integer
返回值
数据类型说明
Boolean

如果相交要素的数量小于或等于 cutoff 值,则返回 True。如果相交要素的数量超出 cutoff 值,则返回 False

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

网络数据集 Describe 对象。

edges ({edge_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode})
参数说明数据类型
edge_properties
[edge_properties,...]

表示要检索的网络边属性的字符串列表。对于单个属性,可以使用一个字符串,而不使用字符串列表。可用属性如下:

  • EID边的 ID。
  • SOURCEID 边的源要素类 ID。
  • SOURCEOID 从中派生此网络边的源要素类中的要素 ObjectID。
  • FROMPOSITION 沿此网络边开始处源要素的距离。网络边可以表示源要素类中的部分要素。
  • TOPOSITION 沿此网络边结束处源要素的距离。
  • DIRECTION 布尔值,指示边的方向是否沿源要素的数字化方向。True 值意味着边的方向沿着数字化方向,而 False 值意味着边的方向与数字化方向相反。
  • FROMJUNCTION 边开始处连接要素的 EID
  • TOJUNCTION 边结束处连接要素的 EID
  • ISRESTRICTED一个布尔值,指示是否限制指定出行模式的边。
  • COST遍历指定出行模式的边的成本。
  • TIME遍历指定出行模式的边的时间成本。
  • DISTANCE遍历指定出行模式的边所产生的距离成本。

要请求 ISRESTRICTEDCOSTTIMEDISTANCE 属性,您必须为 travel_mode 参数指定一个值。

String
attribute_names
[attribute_names,...]

要为其检索每个网络元素值的网络数据集属性名称列表(例如,成本或约束条件)。如果值与时间相关,您可以使用 time_of_day 参数指定一天中的时间。对于单个属性,可以使用一个字符串,而不使用字符串列表。

String
time_of_day

用于检索此网络元素时间相关属性值的时间。如果未传递时间值,则将返回时间中立值。

DateTime
eids
[eids,...]

游标中包含的 EID 值的列表。这仅允许返回所有网络元素的子集。如果未针对此参数传递任何值,则会返回所有网络元素。

Integer
travel_mode

要在请求边属性和属性值时应用的出行模式。出行模式设置可能会影响返回的属性和属性值,特别是出行模式对任何属性参数使用非默认值时。

如果未指定任何出行模式,则从 attribute_names 请求的所有值将使用其默认属性参数值,并且 ISRESTRICTEDCOSTTIMEDISTANCE 属性不可用。

出行模式应指定为 TravelMode 对象。您可以使用通过 NetworkDataset 对象的 travelModes 属性获得的网络出行模式之一,或使用自定义 TravelMode 对象。

Object
返回值
数据类型说明
Object

用于迭代所返回的边的 NetworkDatasetEdgeCursor 对象。每行均是一组该边 edge_propertiesattribute_names 参数中指定项目的值。

getDataSourceFromSourceID (source_id)
参数说明数据类型
source_id

将检索相应源要素类目录路径的网络源 ID。

Integer
返回值
数据类型说明
String

网络数据集源要素类的目录路径。

junctions ({junction_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode})
参数说明数据类型
junction_properties
[junction_properties,...]

表示要检索的网络交汇点属性的字符串列表。对于单个属性,可以使用一个字符串,而不使用字符串列表。可用属性如下:

  • EID交汇点的 ID。
  • SOURCEID 交汇点的源要素类 ID。
  • SOURCEOID 从中派生此网络交汇点的源要素类中的要素 ObjectID。
  • ISRESTRICTED一个布尔值,指示是否限制指定出行模式的交汇点。
  • COST遍历指定出行模式的交汇点的成本。
  • TIME遍历指定出行模式的交汇点的时间成本。
  • DISTANCE遍历指定出行模式的交汇点的距离成本。

要请求 ISRESTRICTEDCOSTTIMEDISTANCE 属性,您必须为 travel_mode 参数指定一个值。

String
attribute_names
[attribute_names,...]

网络数据集属性名称列表(例如成本或限制),将为其检索每个网络元素的值。如果值与时间相关,您可以使用 time_of_day 参数指定一天中的时间。对于单个属性,可以使用一个字符串,而不使用字符串列表。

String
time_of_day

将检索此网络元素时间相关属性值的时间。如果未传递时间值,则将返回时间中立值。

DateTime
eids
[eids,...]

游标中包含的 EID 值的列表。这仅允许返回所有网络元素的子集。如果未针对此参数传递任何值,则会返回所有网络元素。

Integer
travel_mode

要在请求交汇点属性和属性值时应用的出行模式。出行模式设置可能会影响返回的属性和属性值,特别是出行模式对任何属性参数使用非默认值时。

如果未指定任何出行模式,则从 attribute_names 请求的所有值将使用其默认属性参数值,并且 ISRESTRICTEDCOSTTIMEDISTANCE 属性不可用。

出行模式应指定为 TravelMode 对象。您可以使用通过 NetworkDataset 对象的 travelModes 属性获得的网络出行模式之一,或使用自定义 TravelMode 对象。

Object
返回值
数据类型说明
Object

用于迭代所返回交汇点的 NetworkDatasetJunctionCursor 对象。每行均是一组该交汇点 junction_propertiesattribute_names 参数中指定项目的值。

turns ({turn_properties}, {attribute_names}, {eids}, {travel_mode})
参数说明数据类型
turn_properties
[turn_properties,...]

表示要检索的网络转弯属性的字符串列表。对于单个属性,可以使用一个字符串,而不使用字符串列表。可用属性如下:

  • EID转弯的 ID。
  • SOURCEID 转弯的源要素类 ID。
  • SOURCEOID 从中派生此网络转弯的源要素类中的要素 ObjectID。
  • EDGEEIDS 参与本转弯的网络边 EID 值的有序列表。
  • ISRESTRICTED此布尔值用于指示是否针对指定的出行模式限制转弯。
  • COST在指定出行模式下遍历转弯的成本。
  • TIME在指定出行模式下遍历转弯的时间成本。
  • DISTANCE在指定出行模式下转弯所产生的距离成本。

要请求 ISRESTRICTEDCOSTTIMEDISTANCE 属性,您必须为 travel_mode 参数指定一个值。

String
attribute_names
[attribute_names,...]

要为其检索每个网络元素值的网络数据集属性名称列表(例如,成本或约束条件)。对于单个属性,可以使用一个字符串,而不使用字符串列表。

String
eids
[eids,...]

游标中包含的 EID 值的列表。这仅允许返回所有网络元素的子集。如果未针对此参数传递任何值,则会返回所有网络元素。

Integer
travel_mode

请求转弯属性和属性值时应用的出行模式。出行模式设置可能会影响返回的属性和属性值,特别是出行模式对任何属性参数使用非默认值时。

如果未指定任何出行模式,则从 attribute_names 请求的所有值将使用其默认属性参数值,并且 ISRESTRICTEDCOSTTIMEDISTANCE 属性不可用。

出行模式应指定为 TravelMode 对象。您可以使用通过 NetworkDataset 对象的 travelModes 属性获得的网络出行模式之一,或使用自定义 TravelMode 对象。

Object
返回值
数据类型说明
Object

用于迭代所返回转弯的 NetworkDatasetTurnCursor 对象。每行均是一组该转弯 turn_propertiesattribute_names 参数中指定项目的值。

代码示例

NetworkDataset 示例 1

打印网络中每个边的行驶时间不仅限于汽车。

# Print the travel time for each edge in the network that is not restricted to automobiles
import datetime
import arcpy
arcpy.CheckOutExtension("network")

nds_path = r"E:\TutorialData\Network Analyst\Tutorial\SanDiego.gdb\Transportation\Streets_ND"

# Initialize the NetworkDataset object
nds = arcpy.nax.NetworkDataset(nds_path)

# Print network dataset build information
print(f"Network dataset is built: {nds.isBuilt}")
print(f"Most recent build time: {nds.buildTimestamp}")

# Iterate through all the edges in the network and get the TravelTime cost attribute
# value for a specific time of day. Only print the value if the edge is not restricted
# to automobiles
edges = nds.edges("EID", ["TravelTime", "Driving an Automobile"], datetime.datetime(2019, 4, 19, 8, 0, 0))
for edge in edges:
    if not edge[2]:
        print(f"TravelTime for EID {edge[0]}: {edge[1]}")
NetworkDataset 示例 2

检索参与转弯的所有边上所有交汇点的 ObjectID 值。

# Retrieve the ObjectIDs of all junctions for all edges that participate in turns
import arcpy
arcpy.CheckOutExtension("network")

nds_path = r"E:\TutorialData\Network Analyst\Tutorial\SanDiego.gdb\Transportation\Streets_ND"

# Initialize the NetworkDataset object
nds = arcpy.nax.NetworkDataset(nds_path)

# Iterate through all turns in the network and get the edges that participate
turns = nds.turns(["SOURCEOID", "EDGEEIDS"])
for turn in turns:
    # For the edges in the turn, get the from and to junctions
    edges = nds.edges(["SOURCEOID", "FROMJUNCTION", "TOJUNCTION"], eids=turn[1])
    for edge in edges:
        # For the from and to junction, get the SOURCEOID
        junctions = nds.junctions("SOURCEOID", eids=[edge[1], edge[2]])
        junctionOIDs = [j[0] for j in junctions]
NetworkDataset 示例 3

检索 Walking Time 出行模式的所有网络边的成本和限制状态

# Retrieve the cost and restricted status for all network edges for the Walking Time travel mode
import arcpy
arcpy.CheckOutExtension("network")

nds_path = r"E:\TutorialData\Network Analyst\Tutorial\SanDiego.gdb\Transportation\Streets_ND"

# Initialize the NetworkDataset object
nds = arcpy.nax.NetworkDataset(nds_path)

# Iterate through all the edges in the network and print the cost to traverse it with the Walking Time travel mode and
# whether or not the edge is restricted.
for edge in nds.edges(["EID", "COST", "ISRESTRICTED"], travel_mode=nds.travelModes["Walking Time"]):
    print(f"EID {edge[0]} -- COST: {edge[1]}; RESTRICTED: {edge[2]}")