HI,
I have a script that runs perfectly fine using variables for the inputs. As soon as I turn them to parameters, I am running into a "RUN TIME ERROR" with no details. I cannot for the life of me figure out the issue. Any suggestions? The
Thanks!
Andrew
import arcpy as ap
import numpy as np
import os
# set environmental variables
ws=ap.GetParameterAsText(0)
gdb = ap.GetParameterAsText(1)
scratch = ap.GetParameterAsText(2)
# Set default geodatabase as workspace
ap.env.workspace = gdb
# Allow files to be overwritten by python code
ap.env.overwriteOutput = True
# Analysis Files
pc = ap.GetParameterAsText(5)
nds = ap.GetParameterAsText(3)
nd_layer_name = "NetworkDataSet"
Output_FD = ap.GetParameterAsText(7)
Imp = ap.GetParameterAsText(6)
Impedance = []
for x in Imp.split(';'):
Impedance.append(float(x))
ap.AddMessage(x)
ap.AddMessage(Impedance)
### School Network Service Area ###
# Create a network dataset layer and get hte desired travel mode
ap.nax.MakeNetworkDatasetLayer(nds,nd_layer_name)
nd_travel_modes = ap.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes[ap.GetParameterAsText(4)]
ap.AddMessage("Create network dataset")
# Instantiate a ServiceArea solver object
service_area = ap.nax.ServiceArea(nd_layer_name)
search_query=[['RoadsNetwork',"'STREET' IS NOT NULL And 'STREET' <> ''"]]
search_criteria=[['RoadsNetwork','SHAPE'],['NetworkDataSet_Junctions','NONE']]
search_tolerance = 500
# Set properties
service_area.distanceUnits = ap.nax.DistanceUnits.Meters
service_area.travelMode = travel_mode
service_area.outputType = ap.nax.ServiceAreaOutputType.Polygons
service_area.geometryAtOverlap = ap.nax.ServiceAreaOverlapGeometry.Overlap
service_area.searchQuery=search_query
service_area.searchTolerance=search_tolerance
service_area.searchToleranceUnits = ap.nax.DistanceUnits.Meters
service_area.polygonBufferDistanceUnits=ap.nax.DistanceUnits.Meters
service_area.polygonBufferDistance=50
service_area.polygonDetail=ap.nax.ServiceAreaPolygonDetail.High
for n in Impedance:
ap.AddMessage(n)
service_area.defaultImpedanceCutoffs = [n]
fd = str(n)+'m'
fm_fac = service_area.fieldMappings(ap.nax.ServiceAreaInputDataType.Facilities,True)
fm_fac["Name"].mappedFieldName = 'PCODE'
ap.AddMessage("Create a network Service Area {} network analysis layer".format(fd))
# Load Inputs
service_area.load(ap.nax.ServiceAreaInputDataType.Facilities, pc,field_mappings=fm_fac, append=False)
ap.AddMessage("Facilities loaded!")
# Solve the analysis
result = service_area.solve()
ap.AddMessage("Create a network Service Area {} network analysis layer".format(fd))
ap.AddMessage(result)
expresult = os.path.join(Output_FD,"RoadNtwkBuf_"+fd)
# Export Feature Class
result.export(ap.nax.ServiceAreaOutputDataType.Polygons, expresult)
for field in ap.ListFields(expresult):
ap.AddMessage(field.name)
if field.required == False:
if field.name not in ['Name','ToBreak']:
ap.management.DeleteField(expresult,'{}'.format(field.name))
ap.management.AlterField(expresult,'Name','PCODE',clear_field_alias = "CLEAR_ALIAS")
ap.management.AlterField(expresult,'ToBreak','BufferSize',clear_field_alias = "CLEAR_ALIAS")
ap.management.CalculateField(expresult,'PCODE','!PCODE![0:6]')
ap.AddMessage('Calculated service area for {}-m service area buffer'.format(n))
Traceback (most recent call last):
File "...\Scripts\01_NetworkBuffers.py", line 78, in <module>
result.export(ap.nax.ServiceAreaOutputDataType.Polygons, expresult)
RuntimeError
Failed to execute (NetworkBuffers).
