NetworkDataset

Summary

Provides read-only access to the properties of a network dataset. You can use this class to retrieve the properties and attribute values for network dataset edges, junctions, and turns, as well as other properties of the network dataset.

Syntax

NetworkDataset (in_network)
ParameterExplanationData Type
in_network

The network dataset whose properties you want to retrieve. The argument can be specified using the catalog path to the network dataset, a network dataset layer object, or the string name of the network dataset layer.

String

Properties

PropertyExplanationData Type
buildTimestamp
(Read Only)

The date and time the network dataset was most recently built.

DateTime
isBuilt
(Read Only)

Indicates whether the network dataset is built. A value of False indicates that the network dataset needs to be rebuilt to incorporate changes.

Boolean
travelModes
(Read Only)

Returns a dictionary of travel mode objects that are available on the network dataset. The dictionary keys are the names of the travel modes, and the dictionary values are the travel mode objects. This property returns the same output as the GetTravelModes function.

Dictionary

Method Overview

MethodExplanation
checkIntersectingFeatures (feature_layer, cutoff)

Returns a Boolean value indicating whether the number of edge source features from the specified network dataset that are intersected by the features within the specified feature layer is less than or equal to the specified cutoff. This is useful for restricting the number of features that can be loaded as line or polygon barriers into a network analysis problem.

This method is similar to the CheckIntersectingFeatures function.

describe ()

Returns a Describe object that contains additional properties of the network dataset. This is equivalent to using arcpy.Describe on the network dataset.

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

Returns an iterator of network dataset edge elements you can use to access the value of specific edge properties and network attributes at the time of day specified.

getDataSourceFromSourceID (source_id)

Returns the catalog path of the network dataset source feature class identified by the given source ID.

Tip:

This method is effectively instantaneous because it reads a cached value. Your code can call this method repeatedly with minimal performance impact.

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

Returns an iterator of network dataset junction elements that you can use to access the value of specific junction properties and network attributes at the time of day specified.

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

Returns an iterator of network dataset turn elements you can use to access the value of specific turn properties and network attributes.

Methods

checkIntersectingFeatures (feature_layer, cutoff)
ParameterExplanationData Type
feature_layer

A Layer object containing the features that intersect the network edge sources. Any selection set or definition query present on the layer object is honored and can be used to specify only a subset of features.

Layer
cutoff

The maximum number of intersecting features.

Integer
Return Value
Data TypeExplanation
Boolean

Returns True if the number of intersecting features is less than or equal to the cutoff value. Returns False if the number of intersecting features exceeds the cutoff value.

describe ()
Return Value
Data TypeExplanation
Object

A network dataset Describe object.

edges ({edge_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest})
ParameterExplanationData Type
edge_properties
[edge_properties,...]

A list of strings representing the network edge properties to retrieve. For a single property, you can use a string instead of a list of strings. The available properties include the following:

  • EIDThe ID of the edge.
  • SOURCEID The ID of the source feature class of the edge.
  • SOURCEOID The ObjectID of the feature within the source feature class from which this network edge is derived.
  • FROMPOSITION The distance along the source feature where this network edge starts. A network edge can represent a partial feature in the source feature class.
  • TOPOSITION The distance along the source feature where this network edge ends.
  • DIRECTION A Boolean value indicating whether the edge's direction is along the direction of digitization of the source feature. A value of True means that the edge's direction is along the direction of digitization, and a value of False means that the edge's direction is against the direction of digitization.
  • FROMJUNCTION The EID of the junction feature at the beginning of the edge.
  • TOJUNCTION The EID of the junction feature at the end of the edge.
  • ISRESTRICTEDA Boolean value indicating whether the edge is restricted for the specified travel mode.
  • COSTThe cost to traverse the edge for the specified travel mode.
  • TIMEThe time cost to traverse the edge for the specified travel mode.
  • DISTANCEThe distance cost incurred by traversing the edge for the specified travel mode.

To request the ISRESTRICTED, COST, TIME, and DISTANCE properties, you must specify a value for the travel_mode parameter.

String
attribute_names
[attribute_names,...]

The list of network dataset attribute names, such as costs or restrictions, for which to retrieve the value for each network element. If the value is time dependent, you can specify the time of day using the time_of_day parameter. For a single attribute, you can use a string instead of a list of strings.

String
time_of_day

The time of day for which to retrieve time-dependent attribute values for this network element. When no time of day value is passed, the time-neutral value will be returned.

DateTime
eids
[eids,...]

A list of EID values to include in the cursor. This allows you to return only a subset of all network elements. If no value is passed for this parameter, all network elements are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Integer
travel_mode

The travel mode to apply when requesting edge properties and attribute values. The travel mode settings may impact the returned property and attribute values, particularly if the travel mode uses nondefault values for any attribute parameters.

When no travel mode is specified, all values requested from attribute_names use their default attribute parameter values, and the ISRESTRICTED, COST, TIME, and DISTANCE properties are not available.

The travel mode should be specified as a TravelMode object. You can use one of the network's travel modes obtained using the NetworkDataset object's travelModes property or use a custom TravelMode object.

Object
area_of_interest

The spatial filter to apply when requesting edge properties and attribute values. This allows you to return only the subset of edges that intersect the specified area of interest.

The parameter should be specified as an Extent object or a Polygon object. If an Extent object is used, all edges intersecting the rectangular extent are returned. If a Polygon object is used, all edges intersecting the polygon's shape are returned. The Polygon option can be used to filter edges by country or state boundaries, for example. If a 3D polygon is used, all edges intersecting the 2D projection of the polygon are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Object
Return Value
Data TypeExplanation
Object

A NetworkDatasetEdgeCursor object that can be used to iterate over the returned edges. Each row is a tuple with the values of the items specified in the edge_properties and attribute_names parameters for that edge.

getDataSourceFromSourceID (source_id)
ParameterExplanationData Type
source_id

The network source ID for which the corresponding source feature class's catalog path will be retrieved.

Integer
Return Value
Data TypeExplanation
String

The catalog path of the network dataset source feature class.

junctions ({junction_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest})
ParameterExplanationData Type
junction_properties
[junction_properties,...]

A list of strings representing the network junction properties to retrieve. For a single property, you can use a string instead of a list of strings. The available properties include the following:

  • EIDThe ID of the junction.
  • SOURCEID The ID of the source feature class of the junction.
  • SOURCEOID The ObjectID of the feature within the source feature class from which this network junction is derived.
  • ISRESTRICTEDA Boolean value indicating whether the junction is restricted for the specified travel mode.
  • COSTThe cost to traverse the junction for the specified travel mode.
  • TIMEThe time cost to traverse the junction for the specified travel mode.
  • DISTANCEThe distance cost incurred by traversing the junction for the specified travel mode.

To request the ISRESTRICTED, COST, TIME, and DISTANCE properties, you must specify a value for the travel_mode parameter.

String
attribute_names
[attribute_names,...]

The list of network dataset attribute names, such as costs or restrictions, for which the value of each network element will be retrieved. If the value is time dependent, you can specify the time of day using the time_of_day parameter. For a single attribute, you can use a string instead of a list of strings.

String
time_of_day

The time of day that time-dependent attribute values for this network element will be retrieved. When no time of day value is passed, the time-neutral value will be returned.

DateTime
eids
[eids,...]

A list of EID values to include in the cursor. This allows you to return only a subset of all network elements. If no value is passed for this parameter, all network elements are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Integer
travel_mode

The travel mode to apply when requesting junction properties and attribute values. The travel mode settings may impact the returned property and attribute values, particularly if the travel mode uses nondefault values for any attribute parameters.

When no travel mode is specified, all values requested from attribute_names use their default attribute parameter values, and the ISRESTRICTED, COST, TIME, and DISTANCE properties are not available.

The travel mode should be specified as a TravelMode object. You can use one of the network's travel modes obtained using the NetworkDataset object's travelModes property or use a custom TravelMode object.

Object
area_of_interest

The spatial filter to apply when requesting junction properties and attribute values. This allows you to return only the subset of junctions that intersect the specified area of interest.

The parameter should be specified as an Extent object or a Polygon object. If an Extent object is used, all junctions intersecting the rectangular extent are returned. If a Polygon object is used, all junctions intersecting the polygon's shape are returned. The Polygon option can be used to filter junctions by country or state boundaries, for example. If a 3D polygon is used, all junctions intersecting the 2D projection of the polygon are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Object
Return Value
Data TypeExplanation
Object

A NetworkDatasetJunctionCursor object that can be used to iterate over the returned junctions. Each row is a tuple with the values of the items specified in the junction_properties and attribute_names parameters for that junction.

turns ({turn_properties}, {attribute_names}, {eids}, {travel_mode}, {area_of_interest})
ParameterExplanationData Type
turn_properties
[turn_properties,...]

A list of strings representing the network turn properties to retrieve. For a single property, you can use a string instead of a list of strings. The available properties include the following:

  • EIDThe ID of the turn.
  • SOURCEID The ID of the source feature class of the turn.
  • SOURCEOID The ObjectID of the feature within the source feature class from which this network turn is derived.
  • EDGEEIDS An ordered list of EID values of network edges that participate in this turn.
  • ISRESTRICTEDA Boolean value indicating whether the turn is restricted for the specified travel mode.
  • COSTThe cost to traverse the turn for the specified travel mode.
  • TIMEThe time cost to traverse the turn for the specified travel mode.
  • DISTANCEThe distance cost incurred by traversing the turn for the specified travel mode.

To request the ISRESTRICTED, COST, TIME, and DISTANCE properties, you must specify a value for the travel_mode parameter.

String
attribute_names
[attribute_names,...]

The list of network dataset attribute names, such as costs or restrictions, for which to retrieve the value for each network element. For a single attribute, you can use a string instead of a list of strings.

String
eids
[eids,...]

A list of EID values to include in the cursor. This allows you to return only a subset of all network elements. If no value is passed for this parameter, all network elements are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Integer
travel_mode

The travel mode to apply when requesting turn properties and attribute values. The travel mode settings may impact the returned property and attribute values, particularly if the travel mode uses nondefault values for any attribute parameters.

When no travel mode is specified, all values requested from attribute_names use their default attribute parameter values, and the ISRESTRICTED, COST, TIME, and DISTANCE properties are not available.

The travel mode should be specified as a TravelMode object. You can use one of the network's travel modes obtained using the NetworkDataset object's travelModes property or use a custom TravelMode object.

Object
area_of_interest

The spatial filter to apply when requesting turn properties and attribute values. This allows you to return only the subset of turns that intersect the specified area of interest.

The parameter should be specified as an Extent object or a Polygon object. If an Extent object is used, all turns intersecting the rectangular extent are returned. If a Polygon object is used, all turns intersecting the polygon's shape are returned. The Polygon option can be used to filter turns by country or state boundaries, for example. If a 3D polygon is used, all turns intersecting the 2D projection of the polygon are returned.

The eids and area_of_interest parameters cannot be used simultaneously.

Object
Return Value
Data TypeExplanation
Object

A NetworkDatasetTurnCursor object that can be used to iterate over the returned turns. Each row is a tuple with the values of the items specified in the turn_properties and attribute_names parameters for that turn.

Code sample

NetworkDataset example 1

Print the travel time for each edge in the network that is not restricted to automobiles.

# 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 example 2

Retrieve the ObjectID values of all junctions for all edges that participate in turns.

# 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 example 3

Retrieve the cost and restricted status for all network edges for the Walking Time travel mode.

# 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]}")
NetworkDataset example 4

Retrieve the ObjectID values for junctions within a specified extent.

# Retrieve the ObjectID values for junctions within a specified extent
import arcpy
arcpy.CheckOutExtension("network")

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

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

# Get the extent from the feature class
extent = arcpy.Describe(extent_fc).extent

# Retrieve the junctions that fall within the designated extent
for junction in nds.junctions(["SOURCEOID"], area_of_interest=extent):
    print(junction)
NetworkDataset example 5

Retrieve the ObjectID values for junctions within specified territories.

# Retrieve the ObjectID values for junctions within specified territories
import arcpy
arcpy.CheckOutExtension("network")

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

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

# Iterate through the polygons in the Territories feature class and retrieve
# the junctions that fall within each territory's boundary.
for row in arcpy.da.SearchCursor(territories, ["Name", "SHAPE@"]):
    print(f"Junctions in territory {row[0]}:")
    for junction in nds.junctions(["SOURCEOID"], area_of_interest=row[1]):
        print(junction[0])