Support more customization for label weights. Primary requests at this time:
- Blocking/tiered weighting defined between specific label classes, not only universally (ie, layer A blocks labels from layer B, but not layer C)
- Weights based on entire feature layers, in addition to specific label classes
- Also support weights for group layers
- (There is a workaround for this already, so it's just a Quality Of Life concept)
Example scenario
- Fire hydrants, labeled by ID
- Streets, labeled by street name
- Parcels, color-coded and not labeled
- Buildings (polygons on parcels), labeled by street number
- Points of interest, with labels on features where OWNER = "PUBLIC"
Goals for labeling:
- No labels can overlap any POI
- Street labels cannot overlap parcels
- Building labels must be on buildings, but should not overrun them
- Fire hydrants may overlap anything besides POI, but should prefer overlapping parcels/buildings over streets
- POI may overlap anything, but should prefer overlapping streets/buildings over parcels
Given the current label weight configuration, not all of these goals can be achieved easily.
- To prevent street labels overlapping parcels, parcel weight must be set to 1000 (blocking)
- If parcels are blocking, buildings cannot be labeled unless they are set to "never remove"
- If buildings are set to "never remove," they may be forced to overrun their boundaries
- For hydrants to prefer overlapping parcels/buildings before streets, streets must have a higher weight than parcels and buildings. For POIs to prefer overlapping streets/buildings before parcels, parcels must have a higher weight than streets and buildings.
- If parcels are already blocking, preferring to overlap streets is not possible
- We cannot have parcels weighted higher than streets and streets weighted higher than parcels - one must be universally preferred over the other
- To prevent any labels overlapping POIs, the weight is set to 1000 (blocking)
- This only affects those with OWNER = "PUBLIC," due to the class definition on the sole label class
- To block all POIs, you must create a second label class with no definition and no labeling
Proposed solution:
- Set label weights/blocking criteria per layer, layer group, or group of label classes
- Configuration for this example:
- All features
- POI
- Streets and buildings weight = 1
- Parcels weight = 2
- Hydrants
- Parcels and buildings weight = 1
- Streets weight = 2
With this solution:
- All POI block all labels
- Streets cannot overlap parcels
- Buildings can overlap parcels, but still respect their other restrictions (ie no overrun)
- Hydrants can overlap streets, but prefer to avoid them
- POIs can overlap parcels, but prefer to avoid them