Batch Map Production using Data Driven Pages

I have recently been working with a customer to create plans for all their sites which are batch produced, but tailored to include all the information relevant to that site.  In trying to meet the needs of the client, I have learned a lot about the capabilities of Data Driven Pages (some of which were new at 10.1) and also how using Python can take the process even further.

To explain some of the useful features in Data Driven Pages, I have created a sample project showing incident plans for a series of fictitious events.  For each event I wanted to produce a map showing all the planning elements for that event along with some textual information relevant to that site.  Below, you can see two plans for neighbouring events in Nottingham.  As you can see each page only shows the features for the specific event along with relevant text. (Click on image for larger view)

Here’s how I created each of the elements which I have circled in the corresponding colour in the maps above:

1. Creating a page for each event - Data Driven Pages

Using the Data Driven toolbar, I set up data driven pages based on the event location layer (a polygon showing the extent of the event) and used the Event ID as the unique page name.

More info on Data Driven Pages:


2. Only showing features relating to that event [Circled in Purple] - Page Definition Queries

Once you have enabled Data Driven Pages, any layer within that data frame can have a definition set whereby only features relating to that page are shown.  This requires each feature in the other layers to share a common ID with the layer used to create the pages.  In my scenario, each point, line and area is tagged with an Event_ID which relates to the Event polygon.

More info on Page Definition Queries:


3. Showing Text relating to Map project [Circled in Orange] - Dynamic Text

Dynamic Text (available from the Insert menu whilst in layout mode), allows you to include text on a map layout that changes based on the current properties of the map document and data frame.  In my scenario, I have used these settings to add the username, file path and date to the final maps.

More info on Dynamic Text:


4. Showing Text relating to current event [Circled in Red] - Data Driven Dynamic Text

New at 10.1, is the ability to add text to the map by reading any attributes of the layer used for Dynamic Driven Pages.  This option is also found by choosing Insert>Dynamic Text from within the layout mode.  In my scenario, this allowed me to add information such as the Event Name, start and end dates as well as contact details.

Note: it is not possible to add text based on attributes of any other layers.  This can be achieved using code – see later example.

More info on Data Driven Dynamic Text:


5. Only showing Legend Items in current map [Circled in Blue] - Dynamic Legends

Again, a new feature at 10.1 is the ability to limit the list of items in your legend to only include those items visible within the current map extent.  This option is found by opening the Legend Properties and selecting the Items tab.  Items can be limited to either the current map extent (bounding box) or the extent of the current map page feature (polygon).  In my scenario, I have used this option to limit my legend to only list the items relevant for the chosen event.

More information on Dynamic Legends:


In conclusion, these options enable you to create some very rich batch maps, but there may be occasions when the functions don’t go quite far enough. With the client I’m working with, I wanted to also include attributes from other layers in my layout.  At present this can only be achieved using python, but there are some excellent resources to help you get started.  For example the MapBookWithGraphicTables_10_v1 project (available from includes sample scripts to dynamically add additional tables to a layout based on the current Data Driven Page.