Select to view content in your preferred language

Symbolization of Non-Null Fields within Polygon Layer

151
3
Jump to solution
Friday
OliverEmily
New Contributor

I am working on a map of different types of transportation plans in Virginia localities (324 records) and I have hit a roadblock in the most efficient way to display the data. The layer I have created is a polygon layer of locality boundaries and the additional features/attribute fields I would like to display are:

  • planning district in which each locality resides -- currently symbolized with different fill color for each PDC of which there are 21. 

want to display each of these fields as a unique point symbol in each locality for which the respective field is non-null

  • Bicycle Plans
  • Multimodal Plans
  • Active Transportation Plans
  • Pedestrian Plans
  • Trail Plans
  • Other

I plan to provide a legend for the symbolized attributes as well as configure pop-ups for each locality with specific data from the attribute table.

So far, I have come up with the following methods for symbology: 

  1. Add a graphics layer and create points manually -- unique symbology respective to each of the above fields.
  2. Create individual layers for each plan type and symbolize by single symbol, unique to each layer/plan type -- layers created from Plans by Locality using select by attribute where respective field values are not null.

    1. I would have to offset the symbology of each layer to avoid obscurity

    2. Ideally, I would like to contain this data in a single layer but am not opposed to a layer package if necessary as I am unsure of the feasibility in having unique point symbols within a polygon layer.

Other considerations:

Using ArcPro Version 2.9

The data in this layer originated from a standalone attribute table/csv which I joined to a polygon feature layer of Virginia localities. There may be a workaround to displaying the attribute data spatially, but I am unsure of how to do this without compromising the connection between the localities and the plans which cover them.

0 Kudos
1 Solution

Accepted Solutions
AlfredBaldenweck
MVP Regular Contributor

Oof, let's try making this a bit easier for you.

We're going to use attribute-driven symbology to make this work.

  1. Symbolize by single symbol
    AlfredBaldenweck_0-1748029255594.png
  2. Go to edit that symbol
  3. Hit the hamburger menu in the upper right of the Symbology Pane and turn on the "Allow SYmbol Property connections"
    AlfredBaldenweck_1-1748029356838.png
  4. There will now be little GDB icons next to different things in your symbol layer properties 
    AlfredBaldenweck_2-1748029405317.png
  5. Go to the wrench tab and add a new marker symbol
    AlfredBaldenweck_3-1748029448118.png
  6. Switch back to the layers tab and change the symbol to an appropriate one. I chose a motorcycle for the bike field, for example
    AlfredBaldenweck_4-1748029497759.png
  7. Next to the "Size" parameter, hit the GDB icon
  8. Hit the Green X button
    AlfredBaldenweck_5-1748029544365.png
  9. Input the following code (change the field to match your field names)
if ($feature.Bike_Plans== null){
    return 0
}
  1. Note: You can also try if(!IsEmpty($feature.Bike_Plans))... instead.
  • Hit OK and OK Again
  • Apply your symbology
    AlfredBaldenweck_6-1748029836814.png

So, what we did was say "If this field is empty, make the symbol size 0". When the field is not empty, it will match whatever size you normally have in the size field.

Taking this, we can go back to the wrench tab and duplicate this symbol layer

AlfredBaldenweck_7-1748029926433.png

and change the symbol and the field we're checking each time.

AlfredBaldenweck_8-1748029994513.pngAlfredBaldenweck_9-1748030010346.png

And then we get this as the output

AlfredBaldenweck_10-1748030559491.png

Be careful if doing random points to change the seed value each time, and change the spacing in general, or else they all end up on top of each other.

Now.

This is going to look awful in your legend.

AlfredBaldenweck_11-1748030635957.png

 

There are other ways to do this, but I'd suggest making a dummy point feature class with a name field and 5 points.

  1. Update the name field so each point matches your symbol classes
  2. And change the heading to say like "Planned Use"
    AlfredBaldenweck_13-1748031004721.png
  3. Now, duplicate the polygon layer and turn off all the points
    AlfredBaldenweck_14-1748031062520.png
  4. In your Layout, change your legend's properties so that the "Layer visibility" box is unchecked
    AlfredBaldenweck_15-1748031122373.png
  5. Turn off or remove the layer with the symbology from your legend
    AlfredBaldenweck_18-1748031249052.png
  6. You now have an OK-looking legend.
    AlfredBaldenweck_19-1748031288370.png

     

Hope this helps!

 

 

View solution in original post

3 Replies
AlfredBaldenweck
MVP Regular Contributor

Oof, let's try making this a bit easier for you.

We're going to use attribute-driven symbology to make this work.

  1. Symbolize by single symbol
    AlfredBaldenweck_0-1748029255594.png
  2. Go to edit that symbol
  3. Hit the hamburger menu in the upper right of the Symbology Pane and turn on the "Allow SYmbol Property connections"
    AlfredBaldenweck_1-1748029356838.png
  4. There will now be little GDB icons next to different things in your symbol layer properties 
    AlfredBaldenweck_2-1748029405317.png
  5. Go to the wrench tab and add a new marker symbol
    AlfredBaldenweck_3-1748029448118.png
  6. Switch back to the layers tab and change the symbol to an appropriate one. I chose a motorcycle for the bike field, for example
    AlfredBaldenweck_4-1748029497759.png
  7. Next to the "Size" parameter, hit the GDB icon
  8. Hit the Green X button
    AlfredBaldenweck_5-1748029544365.png
  9. Input the following code (change the field to match your field names)
if ($feature.Bike_Plans== null){
    return 0
}
  1. Note: You can also try if(!IsEmpty($feature.Bike_Plans))... instead.
  • Hit OK and OK Again
  • Apply your symbology
    AlfredBaldenweck_6-1748029836814.png

So, what we did was say "If this field is empty, make the symbol size 0". When the field is not empty, it will match whatever size you normally have in the size field.

Taking this, we can go back to the wrench tab and duplicate this symbol layer

AlfredBaldenweck_7-1748029926433.png

and change the symbol and the field we're checking each time.

AlfredBaldenweck_8-1748029994513.pngAlfredBaldenweck_9-1748030010346.png

And then we get this as the output

AlfredBaldenweck_10-1748030559491.png

Be careful if doing random points to change the seed value each time, and change the spacing in general, or else they all end up on top of each other.

Now.

This is going to look awful in your legend.

AlfredBaldenweck_11-1748030635957.png

 

There are other ways to do this, but I'd suggest making a dummy point feature class with a name field and 5 points.

  1. Update the name field so each point matches your symbol classes
  2. And change the heading to say like "Planned Use"
    AlfredBaldenweck_13-1748031004721.png
  3. Now, duplicate the polygon layer and turn off all the points
    AlfredBaldenweck_14-1748031062520.png
  4. In your Layout, change your legend's properties so that the "Layer visibility" box is unchecked
    AlfredBaldenweck_15-1748031122373.png
  5. Turn off or remove the layer with the symbology from your legend
    AlfredBaldenweck_18-1748031249052.png
  6. You now have an OK-looking legend.
    AlfredBaldenweck_19-1748031288370.png

     

Hope this helps!

 

 

OliverEmily
New Contributor

This is amazing! Thank you so much for working through my chaos haha, I figured I was making this a bit too difficult for myself. 

AlfredBaldenweck
MVP Regular Contributor

It's one of my favorite capabilities in Pro. You can do a lot of cool stuff with it.

0 Kudos