I work in Oil and Gas and trying to label leases is a huge pain. In most cases there are multiple polygons of the exact same size and shape stacked on each other with records that represent different lessees.

The number of lessees per section is unlimited.

How can i label these polys so that they look like the annotation in the picture below. Optimally the labels would be sorted on the date field as well. This label is also an expression containing the Net Acres and the Expiration Date. enter image description here

2 Answers 2


I think you have a number of options here:

  1. You could offset the labels of each layer so they appear stacked as shown (a very easy and slightly simplistic option).
  2. You could do a spatial join to a create a 'labels layer' and then create a multi-line label based on the joined fields (a little more refined)
  3. create a labels layer as above but then create an additional field with an algorithm that orders the labels by date with a known separator, which you use to create a multi-line label (an improvement on 2).

To add the other element (area etc) you can add the layer a second time and then include the area label with its own offset (above the centroid). Yes you could do this all from one layer but its a pain to layout. Adding a duplicate layer to your map makes life simple and gives you more control over fonts and positioning etc. You can give it a null style (so it is effectively invisible and you only see the labels).

So in your example above, I might be tempted to have 3 layers. The first has a label showing the Area and % values offset above the centroid in bold with a larger font. Next I would have another copy of the layer with the labels on the centroid and whatever those letters in grey with the broad white outline are. Then I would have my 'labels layer' created as described above with the labels offset below the centroid and a smaller font etc. Only one of the layers would have a style that is visible (i.e. set the pen width of the outline to nothing and have no fill for the polygon for the invisible ones).

  • 1. the polys are all in one feature and labels cannot be simply be stacked. Ive spent hours messing with Maplex options, and there seems to be no way to anchor the label to one spot, and have not have the underlying labels draw directly on top of each other. 2. I want to have a label that is still connected to the database. Spatial joins break the connection to the data that i need to have "live" labels. This data could change at any time, and i want the label to be accurate without have to rebuild a bunch of layers.
    – Casey P.
    Jan 10, 2014 at 19:35

If the polygons are always the same shape/size, just different lessees, then a normalized table referencing with a one to many - one polygon to many lessees would be ideal. Then I would look into labeling based on looping through related records, which leads to this ESRI KB article. There is a script posted there to label based on related features.

My second solution is far from ideal: some sort of spatial join to create an 'invisible' layer that is only used to label features.

  • I like Mappa's answer.
    – Barrett
    Jan 10, 2014 at 16:01
  • Yes, the polys are always the same shape and size. They overlap because different lessees own different mineral rights on the same property.
    – Casey P.
    Jan 10, 2014 at 21:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.