Function outputs?

962
3
09-24-2020 11:27 AM
BenCoakley1
New Contributor

What can you do with the output of functions in a trace?  Do they show up anywhere besides the Messages window?

I'm particularly interested in a model builder use - I'd like to iterate through a set of features, run a trace on each of them, and store the results of the function in an attribute.

Tags (1)
0 Kudos
3 Replies
by Anonymous User
Not applicable

Hi Ben,

Currently, the function results are only in the messages. You could use the GetMessages—ArcGIS Pro | Documentation to get the function result and store the value in an attribute. 

Best,

Supriya

BenCoakley1
New Contributor

I'm still working on this, trying various approaches.  First, I can confirm that the function outputs don't show up in the Python results either:

result=arcpy.Trace_tn(in_trace_network=tnet, trace_type="UPSTREAM", starting_points='mhsel', barriers=tntb, result_types="SELECTION", selection_type="NEW_SELECTION", functions=[["ADD", "Shape length"]])
print(result)

just returns

Trace_Results_Aggregated_Points

But I'm also having a hard time figuring out how to work with the results of a trace in Python.  In the above code, I've specified that the result type should be a SELECTION, but the Results variable shows aggregated points.  And if I work with the feature classes that make up the trace network after performing the trace, there doesn't seem to be an active selection.

Here's a look at more of the code:

# -*- coding: utf-8 -*-

import arcpy

arcpy.env.workspace = "C:\\Path\\clean trace network.gdb"
arcpy.env.overwriteOutput = True 

mhfc = "C:\\Path\\clean trace network.gdb\\sewer_trace\\Manholes"
scfc = "C:\\Path\\clean trace network.gdb\\sewer_trace\\ServiceConnections"
gmfc = "C:\\Path\\clean trace network.gdb\\sewer_trace\\GravityMains"
llfc = "C:\\Path\\clean trace network.gdb\\sewer_trace\\Laterals"

mhfields = ['NAME', 'SHAPE@']

tnet = "C:\\Path\\clean trace network.gdb\\sewer_trace\\sewer_tn"
tntb = "C:\\Path\\clean trace network.gdb\\TN_Temp_Barriers"


print('Beginning')
result = arcpy.GetCount_management(mhfc)
print(' Manhole count: ', result[0])
result = arcpy.GetCount_management(scfc)
print(' Service Connection count: ', result[0])
result = arcpy.GetCount_management(gmfc)
print(' Gravity Main count: ', result[0])
result = arcpy.GetCount_management(llfc)
print(' Lateral Line count: ', result[0])


with arcpy.da.SearchCursor(mhfc, mhfields) as cursor:
    for row in cursor:
        print(row[0])
        querystring = "NAME = '"+row[0]+"'"
        print(querystring)
        arcpy.MakeFeatureLayer_management(mhfc, 'mhsel', querystring)
        result = arcpy.GetCount_management('mhsel')
        print(' Selected manholes in filter: ', result[0])
        result=arcpy.Trace_tn(in_trace_network=tnet, trace_type="UPSTREAM", starting_points='mhsel', barriers=tntb, result_types="SELECTION", selection_type="NEW_SELECTION", functions=[["ADD", "Shape length"]])
        print(result)
        result = arcpy.GetCount_management(mhfc)
        print(' Manhole count: ', result[0])
        result = arcpy.GetCount_management(scfc)
        print(' Service Connection count: ', result[0])
        result = arcpy.GetCount_management(gmfc)
        print(' Gravity Main count: ', result[0])
        result = arcpy.GetCount_management(llfc)
        print(' Lateral Line count: ', result[0])

This gives results like:

Beginning
 Manhole count: 1853
 Service Connection count: 2815
 Gravity Main count: 1810
 Lateral Line count: 2815
Manhole1
NAME = 'Manhole1'
 Selected manholes in filter: 1
Trace_Results_Aggregated_Points
 Manhole count: 1853
 Service Connection count: 2815
 Gravity Main count: 1810
 Lateral Line count: 2815
Manhole2
NAME = 'Manhole2'
 Selected manholes in filter: 1
Trace_Results_Aggregated_Points
 Manhole count: 1853
 Service Connection count: 2815
 Gravity Main count: 1810
 Lateral Line count: 2815
Manhole3
NAME = 'Manhole3'
 Selected manholes in filter: 1
Trace_Results_Aggregated_Points
 Manhole count: 1853
 Service Connection count: 2815
 Gravity Main count: 1810
 Lateral Line count: 2815

That is, the number of features in the results doesn't change.

(I also tried a slightly different approach for the trace, using the SHAPE@ field of the cursor as the starting points, but the results were similar.)

Running the trace manually in ArcGIS Pro for Manhol1 shows 29 selected manholes, 22 selected service connections, 29 selected gravity mains, and 22 selected laterals.

What am I missing here?

0 Kudos
GKmieliauskas
Esri Regular Contributor

Hi Ben,

Have you succeeded with trace results? 

From ArcGIS  Pro trace selects features what I need  but from python I don't know how to make the same selection.

0 Kudos