Sort feature drawing order by date or other field

09-20-2019 01:17 PM
Status: In Product Plan
Labels (1)
New Contributor II

Hierarchy or Order of Symbology in a layer is useful to reduce create multiple layers, improves the performance, reduce the data maintenance support,  present historical information on a map like layers. There are multiple uses for business and more business users will be happy with this capability in ArcMap, ArcGIS Online and  Portal for ArcGIS.


In ArcMap/ArcGIS Pro, it is already possible to control drawing order using What is symbol level drawing?—Help | ArcGIS Desktop / Symbol layer drawing—ArcGIS Pro | ArcGIS Desktop.

For the desktop part of the idea, can you explain how what you're requesting is different from symbol layer drawing?  We would need more details to even be able to understand what is being requested.



Thank you Kory for contact me on this, I would setup a meeting place if you

need more details. We have data in AGOL, the issue with the single

polygon/line layer we have different PV generation values approximately 6

values and the symbols defined on this layer using PV generation

attributes. In our data we have more than 2 PV generation values polygons

at same location, but users want to see the particular value of polygons on

top and remaining underneath of that based on the hierarchy of PV

generation values.



Kory Kramer    I would like to elaborate on this; It would be extremally useful to understand the way in which symbols within a layer (multiple values) are drawn by default - the main reason is drawing performance!  Using the Symbol Layer Drawing introduces an EXTREME performance penalty. The drawing performance functionality is only useful in cartographic applications where drawing performance isn't an issue. 

Where this becomes a problem is when publishing dynamic feature services to a Portal. The performance hit is so massive, the only known crude workaround is to split up the layer into multiple layers with definition queries and order them in the desired order within a layer group.  Unfortunately managing so many layers and potentially pop-ups becomes very cumbersome. 

If we knew what order symbols are drawn in Pro (without turning on the drawing order) we could potentially control this behaviour by creating a SQL View with a coded column (prefixed with a drawing order value) and then by adding this to the map drawing default drawing order would place the "coded" values in a specific order. However after running some tests I concluded that symbols are drawn in a random order and it the value in the attribute field is ignored. Ideally, if the default drawing order was the same order in which symbols are loaded into symbol classes pane - they are sorted in there, that would be best. Unfortunately, to force the symbols to actually draw in this order you have to turn the "drawing order" on - which, as I mentioned,  introduces a significant performance hit and depending on the number of symbols can slow things down exponentially. (from seconds to minutes)


Hi Jakub - there is an explanation in Symbol layer drawing—ArcGIS Pro | Documentation 

"Within each layer, the features draw in the order they are returned from the database. Even when a layer has more than one symbol class, such as different road types classified with unique values symbology, the features still draw in order regardless of their symbol class. (An exception to this is a layer drawn with proportional or graduated symbology, where features with larger symbols draw below those with smaller symbols.)"  

So you're ultimately asking to know (or control) the order that features are returned from the database I think.  If the above explanation doesn't help since you've said you have already done some testing, let me know and I can see if we can find out any more details about what affects the order features are returned from the database.


I would suggest that the rendering of features on map based on single or multiple fields using ascending or descending order, that would help us to manage symbology in order of display on map instead of creating multiple layers. In my case I have a polygon layer, at same location there are multiple polygons with different values and need to display in order of values changing every time. if you setup a meeting, I would like to demonstrate the examples working for one of the utility clients.


I'm not sure if this is the same thing or not but I would really like a way to control the order that features are drawn within the same layer but I would like it based on an attribute so for instance I could use the area field to make sure smaller polygons are drawn on top of larger polygons.  It could be another option in the Symbology pane in the same vein as the options to 'Vary symbology by attribute' options.Screenshot 2020-11-30 153115.png


Status changed to: In Product Plan

Add the capability to sort the order that features are drawn based on a field. Feature already exists in ArcGIS Online, but does not exist in ArcGIS Pro, and is not honored when a hosted layer with this option enabled is added to ArcGIS Pro.Functionality cannot be replicated using symbol level drawing.


@willbruce_KarukTribeDNR we merged your idea into this existing one. Please be sure to add your vote (though maybe votes don't matter so much at this point because as Tanu has indicated, this one is already In Product Plan - being worked on as we speak!)


To more accurately show confluences of rivers symbolized by their drainage, I want rivers with higher flows to draw above those with lower flows while using unclassed color symbology. No matter what I do in terms of reversing values & color schemes, the map still draws with lower values above higher values. This looks pretty bad. The symbol layer drawing option is entirely disabled for unclassed color symbology, and there seems to be no way to tell the software the order in which different features within the layer should be drawn.




In both cases, the lower values draw on top of higher ones. Even if I flip-flop my colors so that 150 is darker, the darker then draws on top.

Knowing that it seems to draw lower numbers above, I settled on using the Arcade expression <1/$feature.FIELD> to get things looking better, but my values are nonsensical and I had trouble getting the max/min where I wanted them - seems to be some kind of limit with the tiny numbers. Even if it did work well, it would work for symbology only and not a legend. It would be much nicer to have an option to set the drawing order.

Eventually I got it looking alright with that expression, with line weight also varying by attribute now: