1

I'm working in Pycharm Python IDLE under ArcPy, to later work on setting up a toolbox in ArcGIS Desktop 10.7.

I have a large script running in Python that works fine without parameters. Now, I want to create a tool for ArcGIS Desktop 10.7, and have this problem configuring Script Properties. I can't make appear in the next window -'Parameter Properties' > 'Property' = 'Obtained From'-, tables or layers that has been calculated during my tool process, and become like intermediate variables.

I need to recalculate fields in several layers from intermediate data (i need one field from that data), but doesn't appears in the mentioned property like a value, only appears input layers that already get in my hard disk before running process. When I run my tool from ArcMap, in field calculator doesn't appear because, obviously the referenced layer still not processed. But same situation in ModelBuilder it's allowed or better preconfigured.

Do I need to edit my Python code, or is it a configuration problem from 'Script Properties' from ArcMap?

Pair of images, from my script tool, and same situation in ModelBuilder:

  1. My script tool, line blue, that three layers are inputs. Don't show any intermediate data.

enter image description here

  1. Here, what I need to get, those layers with blue symbol processing, but translated in Python and in the script tool

enter image description here

  1. Because in image 2 appears the info from previous layer (loaded fields)

enter image description here

PolyGeo
65.5k29 gold badges115 silver badges349 bronze badges
asked Nov 22, 2021 at 16:31

2 Answers 2

1

When you wire up a script to a tool interface, the interface will have no knowledge of any layers created by the code itself, unless its an output parameter you have specified. As you are creating these layers in your code I would suggest you edit your code to utilise them as it is not possible to access something that does not yet exist.

So to answer your question I would say this is a configuration problem and you need to adapt your code.

answered Nov 23, 2021 at 14:26
0
-1

After @Hornbydd’s answer, I have created the necessary variables as parameters. In the layer that I need to manipulate, and which is obtained from an intermediate process of the code (and therefore it has not yet been created), I need to create a new field and then edit it using calculate field. To do this, I have used the arcpy.SetParameterAsText function, but it seems that I have not done it correctly. I give you a piece of my code (do not pay attention to the indices of the parameterized variables, they are surely wrong numbered, but I have it controlled):

# Proceso: FEATURE VERTICES TO POINTS
input_features_2 = out #this one, comes from another previous process 
#output_feature_class_3 = my_gdb + "\\my_layer"
output_feature_class_3 = arcpy.SetParameterAsText(9, my_gdb + "\\my_layer")
vertices_shp = arcpy.FeatureVerticesToPoints_management(input_features_2,
 output_feature_class_3,
 "BOTH_ENDS")
# Proceso: ADD FIELD (1)
input_table_1 = output_feature_class_3 
field_name_1 = "ORIGEN"
field_precision_1 = arcpy.GetParameterAsText(7) 
field_list_1 = arcpy.ListFields(input_table_1)
existe_1 = 0
for field in field_list_1:
 if field.name == field_name_1:
 existe_1 = 1
if existe_1 == 1:
 print "El campo " + field_name_1 + " existe y no es posible añadirlo"
else:
 vertices_shp_2 = arcpy.AddField_management(input_table_1,
 field_name_1,
 "TEXT",
 "",
 "",
 field_precision_1, 
 "",
 "NULLABLE")
 
# Proceso: CALCULATE FIELD (1)
vertices_prueba = output_feature_class_3`enter code here`
expression_sq1_1 = arcpy.GetParameterAsText(10) 
#expression_sq1_1 = "!Name![0:13]"
vertices_shp_4 = arcpy.CalculateField_management(vertices_prueba, 
 "ORIGEN",
 expression_sq1_1,
 "PYTHON_9.3")

In this code, basically I suggest you to pay attention in variable 'output_feature_class_3', it's the one I need to set up and in that way that makes me bring the fields of that layer and makes them appear in the field calculator.

PolyGeo
65.5k29 gold badges115 silver badges349 bronze badges
answered Nov 23, 2021 at 16:23
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.