0

The aim is to perform a multicriteria-analysis in which I use 3 columns in a dataset (dataset) and 3 weight settings, each one relating to one column. A new column (MCA) equals the result of the multicriteria-analysis. ArcPy is the opted method to achieve this. Imagine that I have the following weight settings for every column (being columnA, columnB, and columnC).

#parameter settings
weight_columnA = 0.3
weight_columnB = 0.4
weight_columnC = 0.2
Total_weight = weight_columnA + weight_columnB + weight_columnC

Now a 'fixed' calculation would be feasible:

arcpy.management.CalculateField("dataset", "MCA", "(!columnA! * 0.3) +( !columnB! * 0.4) + (!columnC! * 0.2)/0.9", "PYTHON3", '', "TEXT", "NO_ENFORCE_DOMAINS")

However, the weight settings should be easy to change, based on the user needs, so that a more dynamic approach should be realized. To encourage this dynamic approach, I would like to insert the defined weight variables into my formula. However, this does not work via this way:

arcpy.management.CalculateField("dataset", "MCA", "(!columnA! * weight_columnA) +( !columnB! * weight_columnB) + (!columnC! * weight_columnC)/Total_weight", "PYTHON3", '', "TEXT", "NO_ENFORCE_DOMAINS")

Also, inserting str() (e.g. str(weight_columnA) before the variables does not work.

What is a workaround so that the defined variables (i.e. weights) can be implemented successfully into the field calculator, using ArcPy?

asked Jan 9, 2023 at 10:50
1
  • The documentation contains examples of how to reference fields and use Python. Commented Jan 9, 2023 at 12:24

1 Answer 1

0

A solution is to use the format() function:

arcpy.management.CalculateField("dataset", "MCA", "(!columnA! * {}) +( !columnB! * {}) + (!columnC! * {})/{}".format(weight_columnA, weight_columnB, weight_columnC, Total_weight), "PYTHON3", '', "TEXT", "NO_ENFORCE_DOMAINS")
answered Jan 9, 2023 at 12:41

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.