Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Is it possible to utilise the Data Driven Pages (DDP) tool in ArcMap or ArcPy to create a set of maps with the same extent but showing different layers?

To clarify I regularly make large sets of maps for projects all in the same location often with the same baselayers but modified to focus on different aspects for the relevant section of a report such as monitoring locations, land-use, key features etc. which all require separate .mxds to be created and maintained.

A DDP type system would allow me to utilise the dynamic text and ensure a standard template / output throughout, it would also make life a lot easier when updating a general figure number or comment as a report is written in one .mxd rather than multiple for a client.

I'm using ArcMap 10.1, but having read through the ArcGIS DDP online help I assume this would have to be done with ArcPy as I've been unable to figure out how to do it within ArcMap. I'm aware that QGIS has the Atlas Plugin, although I'm not as familiar with its capabilities but would happily use it as an alternative.

share|improve this question
1  
I think what you are looking for is scripting your map document changes in Python by using the arcpy.mapping toolset. See the reference to building complete map books, and more specifically within the document, "Simple reference series map book". –  RyanDalton Apr 23 '13 at 15:52
add comment

2 Answers

up vote 3 down vote accepted

Here's my thinking in pseudocode: you'd get your MapDocument, then ListDataFrames, then ListLayers. Then you should be able to iterate through the Layers, toggle the Layer's Visibility property on, ExportToPDF (or whatever), then toggle Visibility off again, and move on to the next Layer. If you want to leave certain layers on as base layers, maybe you could group the ones you want to change for each map and only toggle visibility for those by testing for IsGroupLayer=True? Maybe someone else has an actual code example...

share|improve this answer
    
I never did find a built in Arc solution to this, but a colleague has now developed a python script for the process that follows the basic structure you suggest. The script uses groups to create a new page in the pdf and can be combined with DDP to create a mapbook with a set of maps for multiple sites. –  MAJ742 Mar 19 at 11:47
add comment

A code free method

When you turn on data driven pages you can specify a definition query that is dependant on the page number. Simply use that query to hide all features from layers that you do not want to show.

  1. Setup your map frames to be in the same location, but with a field for page number. Setup Data driven pages with the page number as the name field.
  2. If you want a layer to be turned on for a particular page, add a "page" attribute to its table, and set to the relevant page number.
  3. Add a Page Definition Query to the particular layer with your newly created field.

When the page is selected the desired layers will become visible based on the page definition query.

share|improve this answer
1  
I think that page definition queries work well in some cases, but the issue is that you have to add the relevant page number to each attribute in the data table and you can't show the same feature on multiple pages as you can only reference one page at a time –  MAJ742 Apr 23 '13 at 21:31
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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