[GIS] Normalizing values in single Field (from table) in ArcGIS for Desktop

arcgis-desktopfield-calculatormodelbuildertable

have encountered a problem, in Field Calculator.

The situation : I have a polygon feature with a table, comprised of a single Field ("Field1"). There are 675 records in this field. The minimum value is 0.24, and the maximum value is 2546.

What I want to do: Add a new field ("Field2"), in which I want to generate the normalized values in "Field1". By normalization, I am referring to re-scaling all the values, from 0 to 1.

What functions / expression can I use in Field Calculator, to obtain these normalized values?

Best Answer

Using Python would open up some more elegant solutions, but you can do this entirely in ModelBuilder with the use of a couple of temporary tables. The model would look something like this (note that you can right-click on any process step and rename it):

enter image description here

  1. The Add Field operation adds a new column called [Normalized_Value] to your existing polygon table.
  2. A pair of Sort operations create two new tables, one with your [Field1] sorted in ascending order, and the other sorted in descending order.
  3. A pair of Get Field Value operations get the first row (the minimum and maximum values) of [Field1] and assign them to %Min_Value% and %Max_Value%, respectively. The values are available for use automatically as soon as these steps have run.
  4. The min and max values are then used in the Calculate Field operation to calculate [Normalized_Value]: (([Field1] - %Min_Value%) / (%Max_Value% - %Min_Value%))
  5. (Optional) You may wish to add steps to delete the temporary tables.
Related Question