Краткая информация
Предоставляет доступ к свойствам набора сетевых данных (только для чтения). Этот класс можно использовать для получения свойств и значений атрибутов ребер, соединений и поворотов набора сетевых данных, а также других свойств набора сетевых данных.
Синтаксис
NetworkDataset (in_network)
Параметр | Описание | Тип данных |
in_network | Набор сетевых данных, свойства которого вы хотите получить. Аргумент можно задать с помощью пути к каталогу ч набором сетевых данных, объекту слоя набора сетевых данных или строки с именем слоя набора сетевых данных. | String |
Свойства
Свойство | Описание | Тип данных |
buildTimestamp (только чтение) | Дата и время последнего построения набора сетевых данных. | DateTime |
isBuilt (только чтение) | Указывает, был ли построен набор сетевых данных. Значение False означает, что набор сетевых данных надо перестроить для сохранения изменений. | Boolean |
travelModes (только чтение) | Возвращает словарь объектов режимов передвижения, которые доступны в наборе сетевых данных. Ключи словаря – это имена режимов передвижения, а значения словаря – это объекты режимов передвижения. Это свойство возвращает такие же выходные данные, как и функция GetTravelModes. | Dictionary |
Обзор метода
Метод | Описание |
checkIntersectingFeatures (feature_layer, cutoff) | Возвращает значение Boolean, определяющее, является ли количество исходных объектов-ребер из заданного набора сетевых данных, которые пересекаются объектами в заданном векторном слое, меньшим или равным заданной предельной величине. Эта функция применяется для ограничения количества объектов, которые могут быть загружены, как линейные или полигональные барьеры в слой сетевого анализа. Этот метод схож с функцией CheckIntersectingFeatures. |
describe () | Возвращает объект Describe, содержащий дополнительные свойства набора сетевых данных. Это равнозначно использованию команды arcpy.Describe для набора сетевых данных. |
edges ({edge_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest}) | Возвращает итератор ребер набора сетевых данных, который можно использовать для доступа к значениям определенных свойств ребер и сетевых атрибутов в указанное время дня. |
getDataSourceFromSourceID (source_id) | Возвращает путь к каталогу класса объектов исходного набора сетевых данных, идентифицированного по указанному идентификатору источника. |
junctions ({junction_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest}) | Возвращает итератор соединений набора сетевых данных, который можно использовать для доступа к значениям определенных свойств соединений и сетевых атрибутов в указанное время дня. |
turns ({turn_properties}, {attribute_names}, {eids}, {travel_mode}, {area_of_interest}) | Возвращает итератор элементов поворотов набора сетевых данных, которые используются для доступа к значению определенных свойств поворота и атрибутов сети. |
Методы
checkIntersectingFeatures (feature_layer, cutoff)
Параметр | Описание | Тип данных |
feature_layer | Объект Layer с объектами, пересекающими источники ребер сети. Любой набор выделения или запрос на определения в объекте слоя учитывается и может использоваться для указания поднабора объектов. | Layer |
cutoff | Максимальное число пересекающих объектов. | Integer |
Тип данных | Описание |
Boolean | Возвращает True, если число пересекающих объектов меньше или равно значению cutoff. Возвращает False, если число пересекающих объектов превышает значение cutoff. |
edges ({edge_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest})
Параметр | Описание | Тип данных |
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:
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 |
Тип данных | Описание |
Object | Для итерирования по возвращенным ребрам может использоваться объект NetworkDatasetEdgeCursor. Каждая строка - это кортеж со значениями элементов, заданными в параметрах ребра edge_properties и attribute_names. |
getDataSourceFromSourceID (source_id)
Параметр | Описание | Тип данных |
source_id | Идентификатор сетевого источника, для которого будет получен путь к каталогу соответствующего класса пространственных объектов. | Integer |
Тип данных | Описание |
String | Путь к каталогу класса объектов исходного набора сетевых данных. |
junctions ({junction_properties}, {attribute_names}, {time_of_day}, {eids}, {travel_mode}, {area_of_interest})
Параметр | Описание | Тип данных |
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:
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 |
Тип данных | Описание |
Object | Объект NetworkDatasetJunctionCursor, который можно использовать для итерирования возвращенных соединений. Каждая строка - это кортеж со значениями элементов, заданных в параметрах junction_properties и attribute_names для этого соединения. |
turns ({turn_properties}, {attribute_names}, {eids}, {travel_mode}, {area_of_interest})
Параметр | Описание | Тип данных |
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:
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 |
Тип данных | Описание |
Object | Объект NetworkDatasetTurnCursor, который можно использовать для итерирования возвращенных поворотов. Каждая строка - это кортеж со значениями элементов, заданных в параметрах turn_properties и attribute_names для этого поворота. |
Пример кода
Выдает время в пути для каждого ребра сети, по которому не ограничено движение автомобилей.
# 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]}")
Получает значения 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]
Получает стоимость и статус запрета для всех ребер сети для режима передвижения 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]}")
Получает значения ObjectID всех соединений в пределах указанного экстента.
# 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)
Получает значения ObjectID всех соединений в пределах указанных областей.
# 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])