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? – Michael Stimson Mar 16 '17 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. – Kegger Mar 16 '17 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. – Michael Stimson Mar 16 '17 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'. – Michael Stimson Mar 16 '17 at 4:28
  • 2
    Did you consider page definition "do not match" option? – FelixIP Mar 16 '17 at 4:32

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.

|improve this answer|||||
  • 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. – Kegger Mar 20 '17 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.

|improve this answer|||||

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

|improve this answer|||||
  • Looks like @Kegger last comment mentioned this was not an option. – artwork21 Mar 21 '17 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 '17 at 13:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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