<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Two data frames with different extents in one layout in Mapping Questions</title>
    <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215897#M2293</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hmmm.&amp;nbsp; So if you add two North arrows (one for each data frame), they don't rotate?&amp;nbsp; Make sure the appropriate data frame is active when you insert each North Arrow.&amp;nbsp; Each North Arrow must be associated with a data frame.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Jeff&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 18 Jun 2012 13:58:35 GMT</pubDate>
    <dc:creator>JeffBarrette</dc:creator>
    <dc:date>2012-06-18T13:58:35Z</dc:date>
    <item>
      <title>Two data frames with different extents in one layout</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215894#M2290</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm working on a project where I'm trying to print out a series of maps that just follow a power line.&amp;nbsp; The project will probably end up with about 150 11 x 17 inch maps.&amp;nbsp; I've placed two data frames, one above the other (landscape) so I can save paper and space.&amp;nbsp; I've used the strip grid generator for the data driven page to follow and used even/odd pages to drive the data frames.&amp;nbsp; So far I've been doing what Donna Erskine suggested on this &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://forums.arcgis.com/threads/40832-Multiple-data-driven-frames?highlight=data+frames+page+arcpy" rel="nofollow" target="_blank"&gt;thread&lt;/A&gt;&lt;SPAN&gt; (which is talking about the same thing I'm trying to solve).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Jeff Barrette's code suggestions inspired me to attempt to loop the one data frame code into two data frames.&amp;nbsp; However, this attempt ended in abysmal failure.&amp;nbsp; Every iteration seemed to confirm my suspicions that I know nothing about arcpy.mapping and data frames.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the code at the point where I gave up:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;# Experimental 2 dataframe pdf export&amp;nbsp; import arcpy from arcpy import env&amp;nbsp; document = r'C:\Users\Desktop\MapDocuments\Grids Tabloid v1.mxd'&amp;nbsp; mxd = arcpy.mapping.MapDocument(document) dataframe = arcpy.mapping.ListDataFrames(mxd)&amp;nbsp; lyr = arcpy.mapping.ListLayers(mxd, "*Grid*")[0] result = arcpy.GetCount_management(lyr) print 'Number of features in ' + str(lyr) + str(result)&amp;nbsp;&amp;nbsp; print '\nStarting to loop through grids...\n' i = 0 while i &amp;lt; result: &amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Printing PDF 0' + str(i) &amp;nbsp;&amp;nbsp;&amp;nbsp; j = 0 &amp;nbsp;&amp;nbsp;&amp;nbsp; for frame in dataframe: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if j == 0: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df = dataframe&lt;J&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Data frame0: ' + str(df) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif j == 1: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df2 = dataframe&lt;J&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Data frame1: ' + str(df2) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Something\'s wrong' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyr = arcpy.mapping.ListLayers(mxd, "*Grid*")&lt;J&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Grid layers: ' + str(lyr) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rows = arcpy.SearchCursor(lyr.dataSource) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k = 0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if k == i and j == 0: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'in df arena' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newDFExtent = row.getValue("Shape").extent &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.extent = newDFExtent &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print df.rotation, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(&lt;K&gt;) + ' has value from df 1!' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif k == i and j == 1: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'in df2 arena' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newDFExtent2 = row.getValue("Shape").extent &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df2.extent = newDFExtent2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print df2.rotation &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(&lt;K&gt;) + ' has value from df 2!' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif k &amp;lt;&amp;gt; i: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(&lt;K&gt;) + ' is NO value...' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k += 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j += 1&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.ExportToPDF(mxd, r'C:\Users\Desktop\PDFs\TestPDF ' \ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + str(0) + str(i) + '.pdf') &amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Printed PDF 0' + str(i) + '\n' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i += 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del mxd&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There's a lot of junk code in there so I could tell where the program was, and what it was or wasn't doing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The psuedo code goes like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;Find the number of grids in the strip map&amp;nbsp; Identify the data frames&amp;nbsp; Break out the layers that have 'grid' in their names&amp;nbsp; Loop through the grid in the data frame&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; and set the different extents and rotations for each data driven data frame&amp;nbsp; Export the page to a PDF&amp;nbsp; Go to the next page&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The PDF output did not display different extents or rotations.&amp;nbsp; I think from some of the other discussions that 10.1 might provide tools for this.&amp;nbsp; I'll be done with this project by then.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any suggestions?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2012 05:51:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215894#M2290</guid>
      <dc:creator>K_Clark</dc:creator>
      <dc:date>2012-05-24T05:51:12Z</dc:date>
    </item>
    <item>
      <title>Re: Renamed to: Strip maps with two extents on the same page</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215895#M2291</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;If I understand this correctly, you are building a map series where each page has 2 extents that represent different segments along a strip map.&amp;nbsp; For example, one extent is all the odd numbered strip map extents and the other extent represents the even extents.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I had done this for a customer a while back.&amp;nbsp; My strategy was to use two MXDs.&amp;nbsp; Below is the code I wrote.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the DDP extent for each page from the DDP1.mxd to drive the extents in the NoDDP.mxd.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy, os path = os.getcwd()&amp;nbsp; mxd1 = arcpy.mapping.MapDocument(path + r"\DDP1.mxd")&amp;nbsp; #DDP enabled MXD mxd1df1 = arcpy.mapping.ListDataFrames(mxd1, "Top")[0]&amp;nbsp;&amp;nbsp;&amp;nbsp; #Reference the DF that DDP is based on&amp;nbsp; mxd2 = arcpy.mapping.MapDocument(path + r"\NoDDP.mxd")&amp;nbsp; #DDP is not enabled&amp;nbsp; mxd2df1 = arcpy.mapping.ListDataFrames(mxd2, "Top")[0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Top panel mxd2df2 = arcpy.mapping.ListDataFrames(mxd2, "Bottom")[0]&amp;nbsp; #Bottom panel mxd2panelAtxt = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "PanelA")[0] mxd2panelBtxt = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "PanelB")[0] mxd2pages = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "pages")[0]&amp;nbsp; if os.path.exists(path + "\MapBook.pdf"): &amp;nbsp; os.remove(path + "\MapBook.pdf") pdfDoc = arcpy.mapping.PDFDocumentCreate(path + "\MapBook.pdf")&amp;nbsp; totalPageCount = mxd1.dataDrivenPages.pageCount&amp;nbsp;&amp;nbsp; #get the total pages from DDP1.mxd (and use those extents on the NoDDP.mxd page = 1&amp;nbsp; while page &amp;lt;= totalPageCount: &amp;nbsp; mxd1.dataDrivenPages.currentPageID = page&amp;nbsp;&amp;nbsp; #this will be all odd pages (get the extent info) &amp;nbsp; panelAExt = mxd1df1.extent &amp;nbsp; panelARot = mxd1df1.rotation &amp;nbsp; panelAtxt = mxd1.dataDrivenPages.pageRow.Name&amp;nbsp;&amp;nbsp; &amp;nbsp; page = page + 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #iterate the page number &amp;nbsp; mxd1.dataDrivenPages.currentPageID = page&amp;nbsp; #this will be all even pages &amp;nbsp; panelBExt = mxd1df1.extent &amp;nbsp; panelBRot = mxd1df1.rotation &amp;nbsp; panelBtxt = mxd1.dataDrivenPages.pageRow.Name &amp;nbsp; page = page + 1 &amp;nbsp; if page &amp;gt; totalPageCount + 2: &amp;nbsp;&amp;nbsp;&amp;nbsp; break &amp;nbsp; mxd2df1.extent = panelAExt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Now update the NoDDP mxd based on extents preserved from DDP1.mxd &amp;nbsp; mxd2df1.scale = 2400 &amp;nbsp; mxd2df1.rotation = panelARot &amp;nbsp; mxd2panelAtxt.text = panelAtxt &amp;nbsp; mxd2df2.extent = panelBExt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Do it again for the second panel &amp;nbsp; mxd2df2.scale = 2400 &amp;nbsp; mxd2df2.rotation = panelBRot &amp;nbsp; mxd2panelBtxt.text = panelBtxt &amp;nbsp; mxd2pages.text = "Page " + str(page/2) + " of " + str(totalPageCount/2) &amp;nbsp; arcpy.mapping.ExportToPDF(mxd2, path + r"\Sheet" + str(page-2) + ".pdf") &amp;nbsp; pdfDoc.appendPages(path + r"\Sheet" + str(page-2) + ".pdf") &amp;nbsp; os.remove(path + r"\Sheet" + str(page-2) + ".pdf")&amp;nbsp; pdfDoc.saveAndClose() del mxd1, mxd2, pdfDoc&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 May 2012 14:39:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215895#M2291</guid>
      <dc:creator>JeffBarrette</dc:creator>
      <dc:date>2012-05-30T14:39:30Z</dc:date>
    </item>
    <item>
      <title>Strip maps with two extents on the same page</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215896#M2292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks so much for posting the code, Jeff!&amp;nbsp; Using the one DDP mxd to drive the other is a great idea.&amp;nbsp; And it worked.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In setting up these two mxds to test this out, I had to figure out the ELEMENTS and how they were referenced, which I hadn't done before.&amp;nbsp; I also had to add a 'Name' field in the strip-grid attribute table so the &lt;/SPAN&gt;&lt;SPAN style="font-family:Courier New;"&gt;mxd1.dataDrivenPages.pageRow.Name&lt;/SPAN&gt;&lt;SPAN&gt; could access it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only thing I couldn't do was tell the North Arrow on the bottom data frame to rotate correctly.&amp;nbsp; It wanted to follow the initial data frame ('Top').&amp;nbsp; The rotation control is not exposed in arcpy.mapping.&amp;nbsp; If anyone has an idea of how to do this, I'd appreciate it if you could share the solution.&amp;nbsp; If it's ArcObjects code, I'm not sure how to wrap it in Python.&amp;nbsp; Hopefully, it's much simpler than that.&amp;nbsp; You can tell in my code how I struggled to get this to work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here are the components of the two mxds that I set up:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; ----------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;The components of the DDP1.mxd&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;scale set to 1:3000&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Only one data frame named "Top"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;polyline named "FromMineralToElbe"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;strip map polygon named "FromMineralToElbe_grid" with 16 grids&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;one MAPSURROUND_ELEMENT named "North Arrow" found in properties dialog box under Tab Size and Position in the ElementName box&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;data driven pages set with constant scale&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;The components of the NoDDP.mxd&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;scale set to 1:3000&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;2 data frames named "Top" and "Bottom"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;polyline named "FromMineralToElbe" in Top and Bottom&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;strip map polygon named "FromMineralToElbe_grid" with 16 grids in Top and Bottom&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;2 TEXT_ELEMENT text boxes named "TitleA" and "TitleB" in the ElementName box&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;2 MAPSURROUND_ELEMENT elements named "North Arrow A" and "North Arrow B"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;2 MAPSURROUND_ELEMENT elements named "Alternating Scale Bar A" and "Alternating Scale Bar B"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;2 MAPSURROUND_ELEMENT elements named "Scale Text A" and "Scale Text B"&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;A TEXT_ELEMENT named "pages" that uses &amp;lt;dyn&amp;gt; text properties&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; ----------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the code that works with both odd or even number of strip map grids (except for the North Arrow):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcpy, os
path = os.getcwd()

mxd1 = arcpy.mapping.MapDocument(path + r"\DDP1.mxd")&amp;nbsp; #DDP enabled MXD
mxd1df1 = arcpy.mapping.ListDataFrames(mxd1, "Top")[0]&amp;nbsp;&amp;nbsp;&amp;nbsp; #Reference the DF that DDP is based on
totalPageCount = mxd1.dataDrivenPages.pageCount&amp;nbsp;&amp;nbsp; #get the total pages from DDP1.mxd (and use those extents on the NoDDP.mxd)
extraPage = 0
if totalPageCount%2 == 1:
&amp;nbsp; extraPage = 1

# setting up the second mxd with variables for the layers and elements
# so they can take the values of the first mxd
mxd2 = arcpy.mapping.MapDocument(path + r"\NoDDP.mxd")&amp;nbsp; #DDP is not enabled 
mxd2df1 = arcpy.mapping.ListDataFrames(mxd2, "Top")[0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Top panel
mxd2df2 = arcpy.mapping.ListDataFrames(mxd2, "Bottom")[0]&amp;nbsp; #Bottom panel
mxd2panelAtxt = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "TitleA")[0]
mxd2panelBtxt = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "TitleB")[0]
mxd2pages = arcpy.mapping.ListLayoutElements(mxd2, "TEXT_ELEMENT", "pages")[0]

# try to expose the North arrows on each dataframe so they can be rotated later
mxd2arrowA = arcpy.mapping.ListLayoutElements(mxd2, "MAPSURROUND_ELEMENT", "North Arrow A")[0]
mxd2arrowB = arcpy.mapping.ListLayoutElements(mxd2, "MAPSURROUND_ELEMENT", "North Arrow B")[0]

if os.path.exists(path + "\MapBook.pdf"):
&amp;nbsp; os.remove(path + "\MapBook.pdf")
pdfDoc = arcpy.mapping.PDFDocumentCreate(path + "\MapBook.pdf")

page = 1

while page &amp;lt;= totalPageCount:

&amp;nbsp; mxd1.dataDrivenPages.currentPageID = page&amp;nbsp;&amp;nbsp; #this will be all odd pages (get the extent info)
&amp;nbsp; mxd1df1.name = "Top"
&amp;nbsp; panelAExt = mxd1df1.extent
&amp;nbsp; panelARot = mxd1df1.rotation
&amp;nbsp; panelAtxt = mxd1.dataDrivenPages.pageRow.Name
&amp;nbsp; 
&amp;nbsp; # try to capture the characteristics of the top North arrow
&amp;nbsp; # since the page is odd
&amp;nbsp; northArrowA = arcpy.mapping.ListLayoutElements(mxd1, "MAPSURROUND_ELEMENT", "North Arrow")[0]

&amp;nbsp; # if the last 'page' is odd, delete all the layers for that page
&amp;nbsp; if page == totalPageCount and totalPageCount%2 == 1:
&amp;nbsp;&amp;nbsp;&amp;nbsp; df = arcpy.mapping.ListDataFrames(mxd2, "Bottom")[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd2, "", df):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.RemoveLayer(df, lyr)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # then move all the bottom data frame elements off the page
&amp;nbsp;&amp;nbsp;&amp;nbsp; for elem in arcpy.mapping.ListLayoutElements(mxd2):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if any("B" in s for s in elem.name):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if elem.name == 'Alternating Scale Bar A':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = 0&amp;nbsp; # empty variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elem.elementPositionX = 15

&amp;nbsp; if page &amp;lt; totalPageCount:
&amp;nbsp;&amp;nbsp;&amp;nbsp; page = page + 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #iterate the page number
&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd1.dataDrivenPages.currentPageID = page&amp;nbsp; #this will be all even pages
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # rename the dataframe object to force the North Arrow to recognize it
&amp;nbsp;&amp;nbsp;&amp;nbsp; # since the rotation angle is not exposed for the North arrow "MAPSURROUND_ELEMENT"
&amp;nbsp;&amp;nbsp;&amp;nbsp; # somehow the arrow still has the parent - child relationship to the "Top" dataframe
&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd1df_phantom_2 = mxd1df1
&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd1df2 = mxd1df_phantom_2
&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd1df2.name = "Bottom"
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; panelBExt = mxd1df2.extent
&amp;nbsp;&amp;nbsp;&amp;nbsp; panelBRot = mxd1df2.rotation
&amp;nbsp;&amp;nbsp;&amp;nbsp; panelBtxt = mxd1.dataDrivenPages.pageRow.Name
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # try to capture the characteristics of the top North arrow
&amp;nbsp;&amp;nbsp;&amp;nbsp; # since the page is even
&amp;nbsp;&amp;nbsp;&amp;nbsp; northArrowB = arcpy.mapping.ListLayoutElements(mxd1, "MAPSURROUND_ELEMENT", "North Arrow")[0]

&amp;nbsp; page = page + 1
&amp;nbsp; if page &amp;gt; totalPageCount + 2:
&amp;nbsp;&amp;nbsp;&amp;nbsp; break
&amp;nbsp; 
&amp;nbsp; mxd2df1.extent = panelAExt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Now update the NoDDP mxd based on extents preserved from DDP1.mxd
&amp;nbsp; mxd2df1.scale = 3000
&amp;nbsp; mxd2df1.rotation = panelARot
&amp;nbsp; mxd2arrowA = northArrowA
&amp;nbsp; mxd2panelAtxt.text = panelAtxt + ' - Top Frame'
&amp;nbsp; 
&amp;nbsp; mxd2df2.extent = panelBExt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Do it again for the second panel
&amp;nbsp; mxd2df2.scale = 3000
&amp;nbsp; mxd2df2.rotation = panelBRot
&amp;nbsp; mxd2arrowB = northArrowB
&amp;nbsp; mxd2panelBtxt.text = panelBtxt + ' - Bottom Frame'
&amp;nbsp; mxd2pages.text = "Page " + str(page/2) + " of " + str(totalPageCount/2 + extraPage)
&amp;nbsp; arcpy.mapping.ExportToPDF(mxd2, path + r"\Sheet" + str(page-2) + ".pdf")
&amp;nbsp; pdfDoc.appendPages(path + r"\Sheet" + str(page-2) + ".pdf")
&amp;nbsp; os.remove(path + r"\Sheet" + str(page-2) + ".pdf")

pdfDoc.saveAndClose()
del mxd1, mxd2, pdfDoc

&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's a jpeg of the last page of the map:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15235[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="color: #330033; font-style: italic;"&gt;I would like to solve the North Arrow problem.&amp;nbsp; When you have two extents with varying rotations, you have to know how to orient the map.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 10:34:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215896#M2292</guid>
      <dc:creator>K_Clark</dc:creator>
      <dc:date>2021-12-11T10:34:25Z</dc:date>
    </item>
    <item>
      <title>Re: Two data frames with different extents in one layout</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215897#M2293</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hmmm.&amp;nbsp; So if you add two North arrows (one for each data frame), they don't rotate?&amp;nbsp; Make sure the appropriate data frame is active when you insert each North Arrow.&amp;nbsp; Each North Arrow must be associated with a data frame.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Jeff&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jun 2012 13:58:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215897#M2293</guid>
      <dc:creator>JeffBarrette</dc:creator>
      <dc:date>2012-06-18T13:58:35Z</dc:date>
    </item>
    <item>
      <title>Re: Two data frames with different extents in one layout</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215898#M2294</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I was able to get this to work.&amp;nbsp; Attached are some results from a sample I'd like to post to the Resource Center.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15283[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Jeff&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jun 2012 14:12:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215898#M2294</guid>
      <dc:creator>JeffBarrette</dc:creator>
      <dc:date>2012-06-18T14:12:13Z</dc:date>
    </item>
    <item>
      <title>Default Strip maps with two extents on the same page</title>
      <link>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215899#M2295</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;. . .&amp;nbsp; Make sure the appropriate data frame is active when you insert each North Arrow.&amp;nbsp; Each North Arrow must be associated with a data frame.&lt;BR /&gt;&lt;BR /&gt;Jeff&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Perfect!&amp;nbsp; I activated the bottom data frame and re-inserted a North Arrow and it worked!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the result:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15296[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I had tried to associate the arrow with code, but obviously, the arrow is connected to the data frame via a GUID or other hidden attribute.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks, again.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jun 2012 16:13:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/two-data-frames-with-different-extents-in-one/m-p/215899#M2295</guid>
      <dc:creator>K_Clark</dc:creator>
      <dc:date>2012-06-18T16:13:40Z</dc:date>
    </item>
  </channel>
</rss>

