Data Driven Pages
This is a feature of ArcGIS Desktop.
2018-10-01 I've learned so much since I wrote this page, but I've already forgotten most of it.
Use Data Driven Pages when you want to create a map series (printed or pdf or ?)
- Create a layout to be used for each map in the series.
- Create an index to define the extent of each page along with things like the page title
- Generate the maps by running the tool
Run python for every page
I don't want to run a separate script to generate the map series, because I want the mortals* to be able to just print one or more pages on their own. I know I set this up once, now I have to see what I did!
- mortal - one who uses ArcMap without wanting to be a Python programmer, i.e. a normal healthy person.
Bike map
I want to create a map series for a long bike ride. Page one should show the whole route. Successive pages will each show a segment of the ride. I will generate a PDF file containing all maps.
Create a route
- I create a route in Garmin's BaseCamp. It's clumsy but does understand routing and can generate GPX files. I can use the GPX in my Garmin when I am on the road too.
- Select the route and then File->Export "Selected User Data"
- Save the route as a GPX file
- Convert the route to a track and then select the track.
- File->Export "Selected User Data"
- Save the track as another GPX file
Import the route
- Jump over to ArcGIS.
- Use tool "GPX to features (Conversion)" to convert the route and track to feature classes.
- Convert the track to a line.
Build an index feature class
Decide how big you want each page and what reference scale it should use. I made an 8x8" box on my layout for the main map, and decide 1:48000 gives me a map that's useful while riding. You get about 10-12 miles of riding per map page.
- Use the track line as input in the Strip Map Index Features tool.
- I set the scale to 1:48000 to give a reasonable map for bicycling.
- I set the page extent overlap to 10%.
Generate pages
By default if I use the Angle field, track (the direction of travel) is DOWN the page, not what I want! I added a TrackUp field to the index feature class and then used Field Calculate with TrackUp = Angle + 180 to get the maps to show Track Up instead of Track Down.
Use the setup wizard in the Data Driven Pages toolbar to turn on DDP and use the index fc.
Make your map book
To use DDP to generate output in ArcMap you either "print" or "export".
In classic ESRI style, there is no feedback while it generates output other than a spinning cursor. So, when you run it and nothing appears to happen, maybe it works and it is slow or maybe it failed and is wasting your time. Your guess?
You can try outputting one page at a time! I did 1 page then 2 pages. That worked. Doing all 9? NOTHING.
I finally got it to work by some combination of removing nonvisible layers and turning off "Layers and attributes" in the Advanced tab in Export To PDF.
More ideas
An exercise: Python script, to make a bookmark for each page (instead of using DDP toolbar).
For each feature in the index feature class: Find centroid for each feature Generate a bookmark matching it
Another exercise: Write python to generate the strip index, and then have it insert as the first row as an extent that covers the entire route with Angle set to 0 so that we have a north up overview as page 1 in the map book. Then have it do the TrackUp calculation too.
The track is for a visual reference. The route is for creating the index.
The maps will just use the ESRI [http://www.esri.com/software/arcgis/arcgisonline/features/maps
ArcGIS Online] Basemap US topo for now. In ArcMap, use "Add Basemap" in the "add data" list.
Can I have an elevation profile for the segment appear on each page? As long as we're generating profiles, we should generate those nifty chevrons that bicycle maps always have. I mean, why not? Steep steeper steepest! I am starting a separate page, Elevation profiles.
Can I have an overview dataframe appear on each map?
Can I rotate each map so that I have direction of travel instead of north up?
Can I turn layers on or off on a page?
Can I turn on or off features like north arrows or scale bars?
Can I have a block of text appear on only certain pages? For example, attribution for a layer.
Page definition queries
A page definition query allows you to control what shows up on a given page.