Один из важнейших этапов выполнения сетевого анализа с использованием модуля arcpy.nax - доступ к выходным данным анализа. Когда вы применяете механизм расчета при выполнении своего анализа с помощью метода solve, возвращается объект, содержащий несколько методов, которые можно использовать для получения выходных данных следующими способами:
- Сохраните результаты анализа в класс объектов методом export.
- Прочитайте результаты методом searchCursor.
- Сохраните результаты анализа в файл .zip, который можно использовать в других приложениях, например, в ArcGIS Navigator.
- Сохраните результат анализа в файл слоя или пакет слоев в целях отладки.
В этом разделе более детально описываются все эти опции, и из них вы можете выбрать подходящие вам.
Примечание:
В этом разделе в качестве примера приводится анализ Построения маршрутов, однако представленные здесь сведения можно применить к любому типу сетевого анализа.
Сохраните результаты в класс объектов методом export.
Чтобы сохранить результаты анализа на диск так, как они возвращаются механизмом расчета, воспользуйтесь методом export. Будут включены все поля и строки для назначенного выходного типа.
В следующем фрагменте кода показано, как нужно сохранять результаты анализа на диск методом export.
# Solve the analysis
result = route.solve()
# Save results to disk using the export method
output_feature_class = "C:/data/io.gdb/Routes"
result.export(arcpy.nax.RouteOutputDataType.Routes, output_feature_class)
Подробнее о методе export анализа маршрутов вы узнаете в разделе Методы документации объекта RouteResult.
Изучите полный список типов выходных данных анализа и их схемы для анализа маршрутов
Прочитайте результаты методом searchCursor
Метод searchCursor может использоваться для прямого доступа к выходным данным - строка за строкой. Это может понадобиться, если вам нужно получить только определенные поля выходных данных или вы хотите вставить результаты непосредственно в какую-либо другую систему, не сохраняя при этом всю выходную таблицу на диск.
Предположим, например, что при анализе маршрутов вам нужно получить только количество миль, пройденных по каждому маршруту, чтобы вы могли включить эту информацию в отчет. Воспользуйтесь методом searchCursor для получения поля Total_Miles для каждой строки.
В следующем фрагменте кода показано, как можно получить значения в определенных полях выходных данных методом searchCursor. В этом примере имена маршрутов, превышающих по длине 10 миль, выводятся в консоль.
# Solve the analysis
result = route.solve()
# Retrieve specific fields of interest using a searchCursor
for row in result.searchCursor(arcpy.nax.RouteOutputDataType.Routes, ["Name", "Total_Miles"]):
# Retrieve the name and mileage for each route
route_name = row[0]
route_miles = row[1]
# Print the route's name if the route's total mileage is greater than 10 miles
if route_miles > 10:
print(route_name)
Доступ к геометрии выходных данных осуществляется с использованием нескольких специальных токенов геометрии. К примеру, токен SHAPE@JSON позволяет вам получить представление JSON геометрии. Воспользуйтесь токеном SHAPE@XY для получения кортежа координат X и Y точек в системе координат, указанной в свойстве spatialReference объекта результата механизма расчета.
Подсказка:
Воспользуйтесь методом fieldNames объекта результата для получения списка полей, включенных в выходной класс анализа. Подробнее о методе fieldNames анализа маршрутов вы узнаете в разделе Методы документации объекта RouteResult.
Подробнее о методе searchCursor анализа маршрутов вы узнаете в разделе Методы документации объекта RouteResult.
Подробнее об объекте SolverResultSearchCursor
Изучите полный список типов выходных данных анализа и их схемы для анализа маршрутов
Получите файл данных маршрутов .zip методом saveRouteData
Для анализа Маршрут, Ближайший пункт обслуживания, Задача выбора маршрута транспорта можно экспортировать результат в файл данных маршрута .zip. Файл .zip можно опубликовать как слой маршрутов в ArcGIS Online или ArcGIS Enterprise с помощью инструмента Опубликовать как слои маршрутов.
Элементы слоев маршрутов можно использовать в различных приложениях, таких как ArcGIS Navigator для указания маршрутов полевым работникам; на панели Указаний направлений движения приложения Map Viewer для дальнейшей настройки маршрута, содержащегося в слое маршрута; или в ArcGIS Pro для создания нового аналитического слоя маршрута из слоя маршрута.
В следующем фрагменте кода показано, как нужно сохранять файл данных маршрута .zip методом saveRouteData и публиковать его на своем портале с помощью функции ShareAsRoute Layers.
# Solve the analysis
result = route.solve()
# Export the results to a route data .zip file
out_zip = "C:/data/RouteData.zip"
result.saveRouteData(out_zip)
# Share the route data zip file as route layers to your portal
arcpy.nax.ShareAsRouteLayers(
out_zip,
summary='Tuesday restaurant inspection routes',
tags='Tuesday',
route_name_prefix='TuesdayRestaurants',
portal_folder_name='RouteLayers',
share_with='MYGROUPS',
groups='Drivers'
)
Внимание:
Для успешного запуска метода saveRouteData для свойства allowSaveRouteData объекта механизма расчета должно быть задано значение True.
Подробнее о методе saveRouteData анализа маршрутов вы узнаете в разделе Методы документации объекта RouteResult.
Сохранение файла слоя или пакета методом saveAsLayerFile
Вы можете с помощью метода saveAsLayerFile сохранить настройки и результаты анализа в файл слоя или пакет слоев, а затем открыть и изучить полученный слой в ArcGIS Pro. Это требуется в первую очередь для отладки вашего анализа.
Вы можете сохранить либо в файл слоя .lyr для ArcGIS Desktop или ArcGIS Pro, либо в пакет слоев .lpkx, предназначенный только для ArcGIS Pro. Выходной тип зависит от расширения файла, использованного при задании параметра file_name метода. Пакет слоев содержит данные анализа, но не содержит источник сетевых данных.
Прежние версии:
У файлов с расширением .lyr отсутствует свойство режима передвижения. Отдельные настройки режима передвижения будут находиться в сохраненном слое, но название режима передвижения, используемого для анализа, будет потеряно.
В следующем фрагменте кода показано, как нужно сохранять результаты анализа в пакет слоев методом saveAsLayerFile.
# Solve the analysis
result = route.solve()
# Save the results to a layer package for debugging purposes
out_lpkx = "C:/data/RouteAnalysis.lpkx"
result.saveAsLayerFile(out_lpkx)
Примечание:
Для успешного запуска метода saveAsLayerFile для свойства allowSaveLayerFile объекта механизма расчета должно быть задано значение True.
Подробнее о методе saveAsLayerFile анализа маршрутов вы узнаете в разделе Методы документации объекта RouteResult.