# encoding: utf-8
import arcpy
from arcpy import env
try:
# Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
# Set environment settings
env.workspace = "d:/OD2.gdb"
env.overwriteOutput = True
# Set local variables
inNetworkDataset =r"d:\dl\osm\km_ND.nd"
outNALayerName = "BestRoute"
impedanceAttribute = "Length"
fcs = arcpy.ListFeatureClasses()
for outStops in fcs:
try:
outNALayer = arcpy.na.MakeRouteLayer(inNetworkDataset, outNALayerName,impedanceAttribute)
outNALayer = outNALayer.getOutput(0)
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
stopsLayerName = subLayerNames["Stops"]
arcpy.na.AddLocations(outNALayer, stopsLayerName, outStops, "", "5000 Meters",)
arcpy.na.Solve(outNALayer, "SKIP")
routelayer = arcpy.mapping.ListLayers(outNALayer)
arcpy.CopyFeatures_management(routelayer[3], r"d:\short2.gdb"+"\\"+"result"+outStops)
except Exception as e:
print outStops
print "cw"
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)
这里面存在最短路径解算不出来的情况(arcmap中野解算不出来),可能原因是拓扑错误,代码顺序基本对应arcmap操作,只是代码只找到了先生成OD点shp的方式,arcmap可以直接添加点。