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
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
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
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.
{"cc_re__cc_re__cc_by_sa_3_0": ["        <li><a href=\"http://area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"http://careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.7.11.1706\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Geographic Information Systems Stack Exchange works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\""], "copyright__copyright__copyright": ["e, add a \"page\" attribute to its table, and set to the relevant page number.\n  3. Add a Page Definition Query to the particular layer with your newly created field.\n\nWhen the page is selected the desired layers will become visible based on the page definition query.\n\nshare|improve this answer\nadd comment\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}