def runTool(step1LinesFC, SQLDbase, linesFC, day, start_time, end_time): try: # ------ Get input parameters and set things up. ----- BBB_SharedFunctions.CheckArcVersion(min_version_pro="1.2") try: # If it was a feature layer, it will have a data source property step1LinesFC = step1LinesFC.dataSource except: # Otherwise, assume it was a catalog path and use as is pass # GTFS SQL dbase - must be created ahead of time. BBB_SharedFunctions.ConnectToSQLDatabase(SQLDbase) Specific, day = BBB_SharedFunctions.CheckSpecificDate(day) start_sec, end_sec = BBB_SharedFunctions.ConvertTimeWindowToSeconds( start_time, end_time) # Does the user want to count arrivals or departures at the stops? DepOrArr = "departure_time" # ----- Prepare output file ----- try: arcpy.management.Copy(step1LinesFC, linesFC) except: arcpy.AddError( "Error copying template lines feature class to output %s," % linesFC) raise # ----- Query the GTFS data to count the trips on each line segment ----- try: arcpy.AddMessage( "Calculating the number of transit trips available during the time window..." ) # Get a dictionary of {line_key: [[trip_id, start_time, end_time]]} for our time window linetimedict = BBB_SharedFunctions.CountTripsOnLines( day, start_sec, end_sec, DepOrArr, Specific) except: arcpy.AddError( "Error counting arrivals or departures at during time window.") raise # ----- Write to output ----- try: arcpy.AddMessage("Writing output data...") combine_corridors = "route_id" not in [ f.name for f in arcpy.ListFields(linesFC) ] triproute_dict = None if not combine_corridors: triproute_dict = BBB_SharedFunctions.MakeTripRouteDict() arcpy.management.AddField(linesFC, "NumTrips", "SHORT") arcpy.management.AddField(linesFC, "NumTripsPerHr", "DOUBLE") arcpy.management.AddField(linesFC, "MaxWaitTime", "SHORT") arcpy.management.AddField(linesFC, "AvgHeadway", "SHORT") with arcpy.da.UpdateCursor(linesFC, [ "pair_id", "NumTrips", "NumTripsPerHr", "MaxWaitTime", "AvgHeadway" ]) as ucursor: for row in ucursor: NumTrips, NumTripsPerHr, MaxWaitTime, AvgHeadway = \ BBB_SharedFunctions.RetrieveStatsForLines( str(row[0]), linetimedict, start_sec, end_sec, combine_corridors, triproute_dict) row[1] = NumTrips row[2] = NumTripsPerHr row[3] = MaxWaitTime row[4] = AvgHeadway ucursor.updateRow(row) except: arcpy.AddError("Error writing to output.") raise arcpy.AddMessage("Finished!") arcpy.AddMessage("Your output is located at " + linesFC) except BBB_SharedFunctions.CustomError: arcpy.AddError("Failed to count trips on lines.") pass except: arcpy.AddError("Failed to count trips on lines.") raise
try: arcpy.management.Copy(step1LinesFC, linesFC) except: arcpy.AddError( "Error copying template lines feature class to output %s," % linesFC) raise # ----- Query the GTFS data to count the trips on each line segment ----- try: arcpy.AddMessage( "Calculating the number of transit trips available during the time window..." ) # Get a dictionary of {line_key: [[trip_id, start_time, end_time]]} for our time window linetimedict = BBB_SharedFunctions.CountTripsOnLines( day, start_sec, end_sec, DepOrArr, Specific) except: arcpy.AddError( "Error counting arrivals or departures at during time window.") raise # ----- Write to output ----- try: arcpy.AddMessage("Writing output data...") combine_corridors = "route_id" not in [ f.name for f in arcpy.ListFields(linesFC) ] arcpy.management.AddField(linesFC, "NumTrips", "SHORT")