Quantcast
Channel: Question and Answer » arcpy
Viewing all articles
Browse latest Browse all 767

Error 000192 in Make VRP with Python scripting in ArcGIS 10.3

$
0
0

I’ve written a piece of python code in ArcGIS 10.3 for applying VRP. pretty similar to sample code in Esri resource website.

But, it gives an error: ERROR 000192: Invalid value for Time Impedance

I figured out that time attribute which has been identified in network dataset is double whereas timeAttribute in VRpsolve classe in arcpy should be string. So, when I define a constant attribute for time in my network dataset, this code works. But, I can not define a string cost value for time.

There was a similar question [here][1], but the answer doesn’t fit to my problem as I’m using version 10.3

Meanwhile, when I’m using Network Analyst toolbox with the same layers, it works. So, problem is in my python code

    import arcpy
    from arcpy import env

    try:
        arcpy.CheckOutExtension("Network")
        env.workspace = "C:\Drivers\Eli\ArcGIS\VRP\"
        env.overwriteOutput = True
        inNetworkDataset = "C:\Drivers\Eli\ArcGIS\VRP\Road_BNE_ND.nd\Road_BNE_ND"
        outNALayerName = "results_MakeVRP"
        impedanceAttribute = "Travel_Tim"
        distanceAttribute = "Length"
        timeUntis = "Minutes"
        distanceUntis = "Meters"
        inOrdersClass= "orders.shp"
        inDepotClass = "POB.shp"
        inOrders = "orders"
        inDepots = "POB"
        inRoutes = "route"
        outLayerFile = "C:/Drivers/Eli/ArcGIS/VRP/" + outNALayerName + ".lyr"
        outNALayer = arcpy.na.MakeVehicleRoutingProblemLayer(inNetworkDataset, outNALayerName,
                                                             impedanceAttribute,
                                                             distanceAttribute, timeUntis,
                                                             distanceUntis, "", 1,
                                                             UTurn_policy = "NO_UTURNS",
                                                             output_path_shape = "STRAIGHT_LINES")

        outNALayer = outNALayer.getOutput(0) 
        subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
        ordersLayerName = subLayerNames["Orders"]
        depotsLayerName = subLayerNames["Depots"]
        routesLayerName = subLayerNames["Routes"]
        candidateFields = arcpy.ListFields(inOrders)
        orderFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, ordersLayerName,
                                                           False, candidateFields)
        orderFieldMappings["TimeWindowStart1"].defaultValue = "9 AM"
        orderFieldMappings["TimeWindowEnd1"].defaultValue = "5 PM"
        orderFieldMappings["DeliveryQuantities"].mappedFieldName = "Demand"
        orderFieldMappings["MaxViolationTime1"].defaultValue = 0
        arcpy.na.AddLocations(outNALayer, ordersLayerName, inOrders, orderFieldMappings,"")

        depotFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, depotsLayerName)
        depotFieldMappings["Name"].mappedFieldName = "Name"
        depotFieldMappings["TimeWindowStart1"].defaultValue = "8 AM"
        depotFieldMappings["TimeWindowEnd1"].defaultValue = "5 PM"
        arcpy.na.AddLocations(outNALayer, depotsLayerName, inDepots, depotFieldMappings, "")

        arcpy.na.AddLocations(outNALayer, routesLayerName, inRoutes, "", "")

        arcpy.na.Solve(outNALayer)

        arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")

        print "Script completed successfully"

    except Exception as e:
        # If an error occurred, print line number and error message
        import traceback, sys
        tb = sys.exc_info()[2]
        print "An error occured on line %i" % tb.tb_lineno
        print str(e)

Viewing all articles
Browse latest Browse all 767

Trending Articles