Suite

Comment extraire des informations de temps d'une analyse d'itinéraire


J'ai un script en Python qui résout un problème d'analyse d'itinéraire très simple (moyen optimal pour des arrêts donnés). J'ai trouvé dans la documentation que l'on peut attribuer une date de début pour l'analyse et obtenir des informations temporelles associées à sa couche de sortie. Si tout est fait via l'interface ArcMap, les informations sont affichées dans une fenêtre séparée. Malheureusement, je n'ai pas pu accéder à ces informations dans mon script (à l'aide du débogueur) et la couche de sortie ne semble pas avoir ces informations, donc je suppose qu'elles doivent être extraites d'une manière ou d'une autre.

Est-ce que quelqu'un sait comment faire ça?


Afin de pouvoir profiter de l'heure de la date de début, vous devez activer les données de trafic pour l'ensemble de données réseau (pour utiliser les profils de vitesse de TomTom/Navteq par exemple).

Pour en savoir plus sur les données de trafic dans Network Analyst. Plus d'infos sur na module dans arcpy (dont certains sont utilisés ici).

Voici le code que j'utilise pour exporter l'itinéraire vers une nouvelle classe d'entités après avoir résolu l'itinéraire :

def solveroute() : #Configurer l'environnement arcpy.CheckOutExtension("network") #Configurer les variables networkDataset = r"C:Program Files (x86)ArcGISArcTutorNetwork AnalystTutorialSanFrancisco.gdbTransportation Streets_ND" stops = r"C:GISTemp	est.gdbStopsSandiego" fastRoute = r"C:GISTemp	est.gdbTimedRoute" #Créer une nouvelle couche d'itinéraire en utilisant le temps de trajet comme impédance pour déterminer le plus rapide route routeLayer = arcpy.na.MakeRouteLayer(networkDataset, "StopsRoute", "Minutes",accumulate_attribute_name=["TravelTime","Meters"],start_date_time="12/30/1899").getOutput(0) #Obtenir le réseau noms de classes d'analyse de la couche de route naClasses = arcpy.na.GetNAClassNames(routeLayer) #Obtenir la sous-couche de routes de la couche de route routesSublayer = arcpy.mapping.ListLayers(routeLayer, naClasses["Routes"])[0] #Load arrête arcpy .na.AddLocations(routeLayer, naClasses["Stops"], stops) #Résoudre la couche d'itinéraire arcpy.na.Solve(routeLayer) #Copier l'itinéraire en tant que classe d'entités si arcpy.Exists(fastestRoute): arcpy.Del ete_management(fastestRoute) #print int(arcpy.GetCount_management(routesSublayer).getOutput(0)) arcpy.management.CopyFeatures(routesSublayer, fastRoute) solveroute()

Cela me donne une fonction d'itinéraire (Polyline M) enregistrée sur le disque avec tous les attributs pertinents (y compris l'heure de début/fin) :