[GIS] ArcMap Symbology: Assign Color by one attribute, symbol by other attribute

arcgis-10.2arcgis-desktoparcmapsymbology

I've got a question concerning the symbology in ArcMap.

I want to use the Unique values/Many fields option to assign unique values based on three attribute fields. To symbolize the first attribute field, I would like to use a color, the second and third attribute field shall use a symbol. Obviously, this can easily be done manually, but as I have nearly 1000 unique values, I was wondering whether there is a possibility to assign the color first, and then the symbols to each same combination, without having to click every item individually.

I hope I have been clear about what I want to do.

I am running ArcGIS 10.2 Basic, and do not know much, or rather nothing, about python.

Edit:

The answers so far do not seem to work properly for me. Therefore, I will try to be more clear with what I need.

I have got a point-shape with 3 fields and 988 features. I want to make a layer of this to apply to different shapes afterwards.

So here is what I want:

  • Every unique value (13 unique values) of the first field to have the same color
  • Every unique value (4 unique values) of the second field to have the same symbol
  • Every unique value (18 unique values) of the third field to have the same symbol
  • The different symbols for the second and third field must not superpose each other

I do know how to realise this manually, but I do not want to choose and click every single one of 988 features in the symbology window, especially as they cannot be sorted by the second or third field.

Example

Is there any possibility to automatically assign colours to the values of one field and symbols to the values of another field?

Best Answer

You could definitely do as Johns describes and create an additional field to be your symbol field based on the other three attributes. This could be done by using the field calculator with VB or python. Set the parser as Python, Click "Show Codeblock" For example:

Using if and else statements you can populate your new symbology field with integers or text. Based on this text, you can set your symbology

def symbology (field1, field2, field3):
 #if your 1st field is equal to "sometext" and field 2 is equal to 0.25 populate symbology field with one
  if (field1 == "sometext" and field2 == 0.25):
    return 1
  elif (field1 == "PINE" and field3 > 10):
    return 2
   #if none of the above conditions are met, return 3
  else:
    return 3

under your new field = write:

symbology(!field1!, !field2!, !field3!)

As an additional note, make sure none of your if/else conditions overlap or your won't get the correct values!

Hope this helps