I'm working with a scripted Mapbook in ArcMap; There are several pages that require an inset map to show detail of a cluster of points in the main data frame. The cluster of points comes from one layer that has labels turned on. Only labels for features that are not in the inset data-frame should be turned on.

In the example below, only the label for SD01 would show in the lower-right, as it does not fall within the inset data frame.

Image showing inset data-frame (left) and part of the main data-frame with labels in both frames

My initial thoughts are to script a select-by-location (selecting points within the inset data-frame extent), building a query based off of the selection results, and applying that query as a label definition query in the main data frame. This seems overly complicated for the task at hand.

  • You could convert the labels to annotation in the map and delete the ones you don't want, as annotation features with a definition query or place an invisible feature over the area with a high feature weight (not guaranteed to work). None of those seem suitable for a map book. Are you using Maplex or the Esri standard label engine? Mar 16, 2017 at 4:15
  • Not sure annotation would work here, perhaps I should have explained further. With this mapbook, each page in the data driven pages gets exported 8 different times, with a different layer turned on (e.g. a 10 page mapbook actually produces 80 PDFs). If I convert the labels to annotation, they would show up on the other 7 figures.
    – Keggering
    Mar 16, 2017 at 4:19
  • That's correct, except with feature linked annotation. Your initial thought has some merit.. the field to show/noshow labels would work with the map book definition query but you might need to do that manually. This map book is of the same area with different layers you say, not the same layers and a grid of areas.. I haven't had much to do with the Esri map book but have extensively used DS MapBook from which it's descended and your idea would work amicably in that package. You could put an invisible polygon with high feature weight over the area you want to mask labels if that doesn't work. Mar 16, 2017 at 4:24
  • 2
    This link talks about label weights resources.arcgis.com/en/help/main/10.2/index.html#//… if you have a polygon with a high feature weight but low label weight the label will be omitted.. this does work best with the maplex label engine but beware if you have leaders the engine may place the labels outside the polygon and lead the text in to the features, especially if you have selected to 'never remove label'. Mar 16, 2017 at 4:28
  • 2
    Did you consider page definition "do not match" option?
    – FelixIP
    Mar 16, 2017 at 4:32

3 Answers 3


Create an individual polygon feature class that matches the extent of each inset. Turn it on, but give it null symbology. Turn on the Maplex label engine in the data frame properties. Go into the properties of the polygon feature class, choose the Labels tab, click Placement & Properties button, choose Conflict Resolution tab, and set Feature Weight > 0. That should exclude labels from that area.

  • After setting the Interior and Boundary Feature Weight to 999, this helped to slightly reduce the number of labels, but it does not force the exclusion of all labels within the polygon. I can further refine it by unselcting the "Never Remove" option in the the point feature class, but that in turn removes labels for points that need to be labeled throughout the mapbook. If there's another option in the label properties that would help, I would be happy to try it.
    – Keggering
    Mar 20, 2017 at 20:58

I would suggest going the SQL label route, here are the steps:

  1. Create a new text field (labelField) in the layer that you want to exclude labels in the insets
  2. Select all features within insets and populate new field with value "do not label", then reverse selection and populate the other records as "label me"
  3. Within the Layer>Properties>Label tab build a SQL query on the new label field that only shows "label me" features e.g. labelField = "label me"

This will only show labels outside the insets.


You don't say what version of arcmap/Mapbook you are using.
In the definition query tab of the layer there is a new button (when data driven pages is enabled). Page definition allows you to turn/off other data by having a field containing the page name (your choice for which field matches) or doesn't match. page def

  • Looks like @Kegger last comment mentioned this was not an option.
    – artwork21
    Mar 21, 2017 at 12:57
  • I have found with match/don't match it's always a solution. You just have to get creative. Like copy layer use sql to label items on every page. Or use dynamic data text. Then limit the page def query by opposite sql.
    – Brad Nesom
    Mar 21, 2017 at 13:16

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.