Estoy tratando de crear un script que me permita establecer varios puntos de partida en una red. Luego realizar un rastreo ascendente y exportar las líneas seleccionadas a una nueva clase de características. Sin embargo, no importa lo que intente, sigo copiando toda la clase de características y no puedo llegar a los archivos seleccionados desde el rastreo.
Esto tiene que ser una aplicación independiente
Esto es lo que tengo hasta ahora:
import arcpy
import os
def get_source_id(network, network_layer):
d = arcpy.Describe(network_layer)
fc_name = d.name
d = arcpy.Describe(network)
for s in d.sources:
if s.name == fc_name:
return s.sourceID
arcpy.AddError(
'Could not determine network source ID for ' + network_layer.name)
raise arcpy.ExecuteError
def point_to_flag(shape_xy, spatial_ref, source_id, global_id):
flag_fc = arcpy.CreateFeatureclass_management(
out_path=r"C:\Users\jconshick.BARTON\Desktop\TemporaryProject\ArcHydroTemplate.gdb\Layers",
out_name='flag',
geometry_type='POINT',
has_m='ENABLED',
has_z='ENABLED',
spatial_reference=spatial_ref)[0]
flag_fc = arcpy.management.AddField(flag_fc, 'SOURCEID', 'LONG')[0]
flag_fc = arcpy.management.AddField(flag_fc, 'FEATUREGLOBALID', 'GUID')[0]
fields = ['SHAPE@XY', 'SOURCEID', 'FEATUREGLOBALID']
with arcpy.da.InsertCursor(flag_fc, fields) as cursor:
cursor.insertRow((shape_xy, source_id, global_id))
return flag_fc
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"C:\Users\jconshick.BARTON\Desktop\TemporaryProject\ArcHydroTemplate.gdb\Layers"
network = "AHStormwater_New"
junction_layer = "PipeOutlet"
pipes = "pipe"
test = "Test6"
Trace_Results_Aggregated_Points = "Trace_Results_Aggregated_Points"
Trace_Results_Aggregated_Lines = "Trace_Results_Aggregated_Lines"
grpLyr = "Test"
spatial_ref = arcpy.Describe(junction_layer).spatialReference
source_id = get_source_id(network, junction_layer)
with arcpy.da.SearchCursor(junction_layer, ['SHAPE@XY', 'GLOBALID']) as cursor:
for i, row in enumerate(cursor):
flag = point_to_flag(row[0], spatial_ref, source_id, row[1])
arcpy.tn.Trace(in_trace_network=network,
trace_type='UPSTREAM',
starting_points=flag,
validate_consistency="DO_NOT_VALIDATE_CONSISTENCY",
result_types="NETWORK_LAYERS",
out_network_layer=grpLyr)[0]
print (grpLyr)
arcpy.CopyFeatures_management(pipes, "Test3")
print (arcpy.GetCount_management("Test3"))