Quiero realizar el OD Matrix Cost en bucle para cada grupo de ubicaciones dentro de una clase de característica.
Como salida, quiero una clase de característica de líneas por grupo.
import arcpy
arcpy.env.overwriteOutput = True
def execute():
network_dataset = arcpy.GetParameter(0)
impedenace_attribute = arcpy.GetParameter(1)
locations_fc = arcpy.GetParameter(2)
sort_field = arcpy.GetParameter(3)
group_by_field = arcpy.GetParameter(4)
output_workspace = arcpy.GetParameter(5)
arcpy.env.workspace = output_workspace
calculate_OD(network_dataset, impedenace_attribute, locations_fc, group_by_field, sort_field, output_workspace)
def calculate_OD(network_dataset, impedenace_attribute, locations_fc, group_by_field, sort_field, output_workspace):
group_by_list = sorted(set((row[0] for row in arcpy.da.SearchCursor(locations_fc, group_by_field))))
OD_Layer = arcpy.MakeODCostMatrixLayer_na(network_dataset, "OD_Matrix_Layer", impedenace_attribute)
OD_Layer = OD_Layer.getOutput(0)
for group in group_by_list:
expression = u"{} = '{}'".format(group_by_field, group)
group_layer = arcpy.MakeFeatureLayer_management(locations_fc, "locations_{}".format(group), where_clause=expression)
group_fc = arcpy.CopyFeatures_management(group_layer, "OD_locations_{}".format(group))
subLayerNames = arcpy.na.GetNAClassNames(OD_Layer)
originsLayerName = subLayerNames["Origins"]
arcpy.na.AddLocations(OD_Layer, originsLayerName, group_fc, sort_field=sort_field, append="CLEAR")
destinationLayerName = subLayerNames["Destinations"]
arcpy.na.AddLocations(OD_Layer, destinationLayerName, group_fc, sort_field=sort_field, append="CLEAR")
arcpy.na.Solve(OD_Layer,"HALT")
#save output in feature class (this generate the error below)
arcpy.CopyFeatures_management(OD_Layer, "OD_output_{}".format(group))
execute()
Sin embargo, tengo un problema al copiar la subcapa ODLines a una nueva clase de característica.
ExecuteError: Fallo en la ejecución. Los parámetros no son válidos. ERROR 000840: El valor no es una capa de características. ERROR 000840: El valor no es no es una Capa de Catálogo Raster.