Multiple data driven frames?

18844
30
10-03-2011 03:08 PM
Occasional Contributor III
I had an idea and want to see if it's possible/if anyone's done it.  Can you combine data driven pages with having multiple data frames on your layout?

Example:
-Two frames on a layout, one on left and one on right
-10 data driven pages
-It would display DDP's 1, 3, 5, 7, 9 in the left frame and DDP's 2, 4, 6, 8, 10 in the right frame, for a total of 5 sheets of paper.

I just experimented in ArcMap 10 with two data frames with DDP's turned on and it only updates one of them, the other remains static.
Reply
0 Kudos
30 Replies
New Contributor
I have had some success with creating multiple data driven pages without using Python.  I had a similar issue with needing one MXD containing multiple data frames.  The main focus of the project was linear for several miles (occasionally changing direction), it had to be at a constant scale, and the data frame had to be viewed in landscape position.  In my case, I had setup the Layout first and then setup the dataframe at the display scale I needed in my Layout.  I had to leave room for an Index to my grids showing the overall project, a legend, title, etc.  I created stripmap grids at my particular scale & used my data frame to determine the size of the grids.  I added an attribute to calculate the rotation/angle (field type had to be 'double') to be used for each of the grids.  By using the 'Data Frame Tools' toolbar I tested the rotation/angle needed to make the project look horizonal in my data frame too.  I copied the data frame and pasted the same size data frame just below the first.  Once I had all of the rotations of each of the girds come up correctly as I cycled through the page numbers, I made a copy of that feature class to use as for my 'Index' map window.  I then created two addtional feature classes from my Index feature class, one for "Odd" numbered grids and one for "Even" numbered grids.  I deleted the ones I didn't need.  So now I have 3 feature classes (one with ALL the grids called "Index", one with ONLY "Odd" grids, and one ONLY with "Even" grids).  I renamed my 'Layers' top data frame to 'Odd grids' and the bottom data frame called 'Even grids'.  I added the respective feature classes to the odd & even data frames.  I had to setup the Data Driven Pages twice, one for each data frame, and making sure I had the correct data frame 'Activated'.  Also used the 'Data Frame Properties' Tab to setup the extent.  I used the optional fields for my rotation/angle.  Unfortunately I wasn't able to use the 'Multiexport' function.  I had to click on my upper data frame ("Odd grids") go to appropriate page number; then click on the lower window ("Even grids") go to appropriate page number; then I could export my Sheet.  Sheet 1 had grids 1 & 2, Sheet 2 had grids 3 & 4, etc.
Reply
0 Kudos
New Contributor
Data Driven Pages (DDP) uses one index layer to drive extents.  If your two data frames on each page have different extents then I don't think you can do this with only DDP.

If both of your data frames have the same extent (but display different layers) you could do this.  See the following help topic:
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Customizing_your_map_extent/00s9000000...
...
Jeff


1) To to re-iterate Jeff's solution - two (or more) maps with the same extent is easy using the Data Frame Properties standard "Derive extent from another data frame's extent" feature.

2) If your two data frames on each page have different extents, perhaps you could use the Data Frame Properties "Zoom to features that intersect the other data frame's extent" feature?
New Contributor

YES! Thank you. Simple solution.

Reply
0 Kudos
New Contributor II
I'm currently working with a customer on this exact issue.  They have 320 map sheets.  Each sheet can have anywhere from 0 to 6 inset maps.  In addition to the insets, they also have 3 tabular reports.  Depending on the size and shape of the primary map, all the other items (insets and reports) get placed at different locations.  The solution we are building is to store all the page layout info (x,y, width, height, extent, etc) of each element in a table.  As we iterate through each map sheet, the appropriate info is read and the appropriate items are positioned.

This application will be posted to the Resource Center when complete.  We just started so it will take some time.

Jeff


Jeff,
Any luck developing a solution for this?  That would be very useful
Joe
Reply
0 Kudos
Esri Regular Contributor
Reply
0 Kudos
New Contributor

Hi Jeff, I was hoping to use this multiple frame script for my own mapping. I wanted to have different rotation and scale as well for various data frames. Unfortunately my modified script doesn't seem to be working (I'm pretty new to Python). I've posted the question here: https://community.esri.com/thread/255106-customizing-multiple-element-layout-manager 

Hopefully you could take a look at it? Thanks very much!

Reply
0 Kudos
New Contributor II
I'm currently working with a customer on this exact issue.  They have 320 map sheets.  Each sheet can have anywhere from 0 to 6 inset maps.  In addition to the insets, they also have 3 tabular reports.  Depending on the size and shape of the primary map, all the other items (insets and reports) get placed at different locations.  The solution we are building is to store all the page layout info (x,y, width, height, extent, etc) of each element in a table.  As we iterate through each map sheet, the appropriate info is read and the appropriate items are positioned.

This application will be posted to the Resource Center when complete.  We just started so it will take some time.

Jeff


Jeff,
Any luck with this application?  I am trying to do the exact same thing with someutility maps.
Reply
0 Kudos
New Contributor
So I have a DDP mxd with two data frames, one with vector data and the other with imagery and a raster with transparency. I have set the imagery extent to the vector data frame, this works great except when my DDP has rotation angles, the the imagery dataframe does not rotate with the vector data frame. If ESRI could only get the PDF transparency export issue figured out....
Reply
0 Kudos
New Contributor
Pretty easy Fix...

mxd = arcpy.mapping.MapDocument("MXD_PATH")

frames = arcpy.mapping.ListDataFrames(mxd)

for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
  mxd.dataDrivenPages.currentPageID = pageNum

  #Sets the rotation angle of the dependant data frame to the data frame with the DDP index layer, assuming it is first in the TOC
  frames[1].rotation = frames[0].rotation

  arcpy.mapping.ExportToPDF(mxd, "DOC_NAME"+ str(pageNum) + '.pdf')

del mxd
Reply
0 Kudos
New Contributor
So I have a DDP mxd with two data frames, one with vector data and the other with imagery and a raster with transparency. I have set the imagery extent to the vector data frame, this works great except when my DDP has rotation angles, the the imagery dataframe does not rotate with the vector data frame. If ESRI could only get the PDF transparency export issue figured out....


Pretty easy Fix...

mxd = arcpy.mapping.MapDocument("MXD_PATH")

frames = arcpy.mapping.ListDataFrames(mxd)

for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
  mxd.dataDrivenPages.currentPageID = pageNum

  ## Sets the rotation angle of the
  ## dependant data frame to the data
  ## frame with the DDP index layer,
  ## assuming it is first in the TOC 
  frames[1].rotation = frames[0].rotation

  arcpy.mapping.ExportToPDF(mxd, "DOC_NAME"+ str(pageNum) + '.pdf')

del mxd
Reply
0 Kudos