Skip to main content

Network Analyst Solver

汇总

Network Analyst Solver 对象提供特定于网络分析求解器的分析属性。

讨论

所有网络分析求解程序共有的属性(如 impedance )可通过描述网络分析图层直接确定。 但部分属性(如 UseTimeWindows )仅由特定求解器支持,如此例中的路径求解器。 Network Analyst Solver 对象上的可用属性取决于网络分析图层所引用的求解器。 使用 solverName 属性确定网络分析图层正在引用的求解器,并使用下面的链接确定对象上的可用属性。

代码示例

网络分析求解器属性示例

显示 Network Analyst Solver 对象中的属性。

# Name: NALayerSolverProperties_ex01.py
# Description: Lists all the solver specific properties that can be
#              derived by describing a network analysis layer.

import arcpy

# ============
# Helper functions
# ============
def printRoute(justify=35):
    '''Displays information about a Route layer'''
    arcpy.AddMessage("---- Route properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Find Best Sequence?",
                                   props.findBestSequence))
    arcpy.AddMessage(" %*s: %s" % (justify, "OrderingType",
                                   props.orderingType))
    arcpy.AddMessage(" %*s: %s" % (justify, "Use Time Windows?",
                                   props.useTimeWindows))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output Route Shape",
                                   props.routesShape))
    arcpy.AddMessage(" %*s: %s" % (justify, "Start Time", props.startTime))

def printClosestFac(justify=35):
    '''Displays information about a Closest Facility layer'''
    arcpy.AddMessage("---- Closest Facilty properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Travel Direction",
                                   props.travelDirection))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default Target Facility Count",
                                   props.defaultTargetFacilityCount))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default Cutoff",
                                   props.defaultCutoff))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output Route Shape",
                                   props.cfRoutesShape))

def printServiceArea(justify=35):
    '''Displays information about a Service Area layer'''
    arcpy.AddMessage("---- Service Area properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Travel Direction",
                                   props.travelDirection))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default breaks",
                                   props.defaultBreaks))
    # Polygon info
    arcpy.AddMessage(" ")
    arcpy.AddMessage(" %*s: %s" % (justify, "Polygon Type?",
                                   props.serviceAreaPolygons))
    arcpy.AddMessage(" %*s: %s" % (justify, "Overlap Type",
                                   props.serviceAreaPolygonType))
    arcpy.AddMessage(" %*s: %s" % (justify, "Multiple Facilities Options?",
                                   props.mergeSimilarRanges))
    arcpy.AddMessage(" %*s: %s" % (justify, "Excluded sources",
                                   props.exclusionSources))
    arcpy.AddMessage(" %*s: %s" % (justify, "Trim Polygons?",
                                   props.trimPolygons))
    arcpy.AddMessage(" %*s: %s" % (justify, "Trim Distance?",
                                   props.trimDistance))
    # Line info
    arcpy.AddMessage(" ")
    arcpy.AddMessage(" %*s: %s" % (justify, "Line overlap type",
                                   props.serviceAreaLinesType))
    arcpy.AddMessage(" %*s: %s" % (justify, "Split lines at breaks?",
                                   props.splitLinesAtBreaks))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output line shape",
                                   props.serviceAreaLines))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output line shape",
                                   props.includeNetworkSourceFields))

def printODMatrix(justify=40):
    '''Displays information about an OD Cost Matrix layer.'''
    arcpy.AddMessage("---- OD Cost Matrix properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default Target Destination Count",
                                   props.defaultTargetDestinationCount))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default Cutoff",
                                   props.defaultCutoff))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output Route Shape",
                                   props.odLinesShape))

def printVRP(justify=35):
    '''Displays information about a Vehicle routing problem layer'''
    arcpy.AddMessage("---- Vehicle Routing Problem properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Default Date",
                                   props.defaultDate))
    arcpy.AddMessage(" %*s: %s" % (justify, "Capacity Count",
                                   props.capacityCount))
    arcpy.AddMessage(" %*s: %s" % (justify, "Time Field Units",
                                   props.timeFieldUnits))
    arcpy.AddMessage(" %*s: %s" % (justify, "Distance Field Units",
                                   props.distanceFieldUnits))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output Route Shape",
                                   props.vrpRoutesShape))
    arcpy.AddMessage(" %*s: %s"%(justify,"Time window violation penalty factor",
                                   props.timeWindowViolationPenaltyFactor))
    arcpy.AddMessage(" %*s: %s"%(justify,"Penalty factor value",
                                   props.timeWindowViolationPenaltyFactorValue))
    arcpy.AddMessage(" %*s: %s" % (justify,"Excess transit time penalty factor",
                                   props.excessTransitTimePenaltyFactor))
    arcpy.AddMessage(" %*s: %s" % (justify,"Penalty factor value",
                                   props.excessTransitTimePenaltyFactorValue))

def printLocationAllocation(justify=35):
    '''Displays information about a Location-Allocation layer'''
    arcpy.AddMessage("---- Location-Allocation properties:")
    props = desc.solverProperties
    arcpy.AddMessage(" %*s: %s" % (justify, "Layer Name?" , desc.nameString))
    arcpy.AddMessage(" %*s: %s" % (justify, "Travel from" ,
                                   props.travelDirection))
    arcpy.AddMessage(" %*s: %s" % (justify, "Location-allocation problem type",
                                   props.problemType))
    arcpy.AddMessage(" %*s: %s" % (justify, "Number of facilities to find",
                                   props.defaultTargetFacilityCount))
    arcpy.AddMessage(" %*s: %s" % (justify, "Impedance cutoff",
                                   props.defaultCutoff))
    arcpy.AddMessage(" %*s: %s" % (justify, "Impedance transformation",
                                   props.impedanceTransformation))
    arcpy.AddMessage(" %*s: %s" % (justify, "Impedance parameter",
                                   props.impedanceParameter))
    arcpy.AddMessage(" %*s: %s" % (justify, "Target market share",
                                   props.targetMarketShare))
    arcpy.AddMessage(" %*s: %s" % (justify, "Output path shape",
                                   props.laLinesShape))

# ============
# main module
# ============

# Get the arguments..
in_layer = "C:/Data/Route.lyr"
justify = 35

#Describe the layer file and get the solver name
desc = arcpy.Describe(in_layer)
solvername = desc.solvername

# Branch on type of solver (Route, Closest Facility, etc)
if solvername.lower() == "route solver":
    printRoute(justify)
elif solvername.lower() == "closest facility solver":
    printClosestFac(justify)
elif solvername.lower() == "service area solver":
    printServiceArea(justify)
elif solvername.lower() == "od cost matrix solver":
    printODMatrix(justify)
elif solvername.lower() == "vehicle routing problem solver":
    printVRP(justify)
elif solvername.lower() == "location-allocation solver":
    printLocationAllocation(justify)
else:
    arcpy.AddError("Unknown solver: %s" % solvername)

arcpy.AddMessage(" ")
arcpy.AddMessage("==== End description ====")
arcpy.AddMessage(" ")