This is a workflow I used for a client's buildings and assets map using ESRI ArcMap's
Data Driven Pages toolbox. I originally attempted this job in November 2015 but it was 'messy'. I wanted to do a better job of organising the data and addressing the issues raised during the workflow.
Data Driven Pages are found under
Cartography Tools in the ESRI Arc Toolbox. Data Driven Pages are awesome because it allows you to create a series of maps linked to a group of feature classes. The main components that need to be prepared:
- A map template;
- A map grid index;
- Map layers
- Labels and annotation.
ESRI ArcMaps will generate the map series based on the grid index you assign to it.
For the purpose of this job I have feature classes relating to the client's buildings and assets, which are spread out across the Hawkesbury Local Government Area (LGA). There are hundreds of items all over the district and it would be time consuming to individually create a locality map for each building and asset.
The basis of this job was to create a series of locality maps containing all of the client's buildings and assets which can be taken to the field. Given the density, spatial distribution and the scale of the Hawkesbury LGA I opted to use three different scales to present information, maps and tables on multiple A4 pages.
This is an overview of the Map Grid Index with the different scales as shown below:
The first thing to prepare is a Map Template. For the purpose of this job I'm using the client's premade A4 landscape template. This may vary depending on your client's needs or corporate standard so use whatever is necessary to complete the task.
Map layouts can be changed on the fly. Go to the layout view in ArcMaps and enable the
Click on the
Change Layout button.
This will open a window to let you change your active template without having to start a new workspace. You will have to adjust the paper size and margins again under Map Document Properties if you make any paper size changes.
There are a few problems with this map output:
- The map scale is 1:400,000. Everything is too cluttered and small to be comprehensible.
- Not very useful as a locality or navigation map.
- Difficult to add any labels to the map at this scale.
Next we look at Data Driven Pages and Map Grids.
Map Grid Index
A Map Grid Index needs to be created in order for the
Data Driven Pages tool to function. This is essentially how the software will know what to show in the map series.
There are two methods to create a Map Grid Index. The standard Map Grid Index tool will create a group of rectangular polygons from an origin point of your designation. It will start from the bottom left corner and work left to right, bottom to top. Please use ESRI ArcMap's help for detailed instructions on the
Grid Index Features (Cartography) tool itself.
- Grid Index Features: Creates a grid of rectangular polygon features that can be used as an index to specify pages for a map book using Data Driven Pages. A grid can be created that only includes polygon features that intersect another feature layer.
Grid Index Features tool looks like this:
Alternatively you can also create a
Strip Map Index. Strip maps are a series of maps based on lineal features like roads and footpaths. This is not relevant to the job but the principle is the same.
Strip Map Index tool looks like this:
Custom Grids and Varying Scale
For this job I decided to create three grids at different scales.
- A town centre scale for densely populated areas with lots of assets (notably Windsor and Richmond)
- A suburban scale
- A rural scale
Having different scales ensures that we can actually see the client's buildings and assets on a map at the relevant scale. Otherwise you may find that showing items at an incorrect scale will generate a dense cluster of points and overlapping incomprehensible information. You may also have to adjust and move the size, scale and rotation of annotation and symbology to better suit the map reader.
You may choose to use the
Model Builder or build the grids from the toolbox.
Rural Grid Index Feature
Each grid is 20 x 20 kilometres
Suburban Grid Index Feature
Each grid is 10 x 10 kilometres
Town Centre Grid Index Feature
Each grid is 2.5 x 2.5 kilometres
Note: In ESRI ArcMaps version 10.1, there is a bug in the tool where the options below are greyed out. I have no clue if they have fixed it in later versions, but you can use SQL query expression to hide the irrelevant grid boxes. It's not the only way to do the job but it would have been nice if I could set the size of the grids based on map scale instead. I had to experiement with over 50 different grids initially to narrow down the desirable settings for this job.
Some changes need to be made:
- Too many pages, current count: 89.
- Overlapping grids covering the same items.
- Need to assign new page numbering.
To fix the above issues I'll use the rural grid for the greater Hawkesbury area, assign only 6 suburban grids to the lower Hawkesbury area and then only use the town centre grids for the Windsor and Richmond, where clusters of the client's buiildings and assets are found. My overall goal is to get the total page count down from 89 pages to <30 pages using the three different scales.
This can be done by adding a new field to each map grid layer and using definition queries to "hide" certain grids. I'm also assigning new map numbers to the grids once I have culled the number of pages. This can be demonstrated by the model below:
Model builder so far:
Thus before the cull, counting all the boxes we have 89 polygons:
Now we end up with 7x Rural, 6x Suburban and 15x Town Centre Grids:
With a few more boxes removed, showing all assets at various scales:
Custom Page Numbering
Assign page numbers and used the new numbers as labels. This will also help you sort your pages when using the
Data Driven Pages toolbar:
Map Layers or Base Map Data
If you haven't prepared your map data and styles then I would do it now. For this job the underlying data was already prepared as seen above and styled accordingly.
Labels & Annotation
The annotations and symbology will need to be tweaked separately in each workspace because the map scale is different.
Save your map symbology as layers! This is useful if you're working with multiple workspaces. Indicate the scale in the name of the layer if you are working in multiple scales like this job!
You may wish to convert labels in the current extent to annotation in layout view, in order to move annotations around the map. Tip: You can triple click in layout view to select the chosen annotation for rotation, resize or move operations.
Assign Domains & Definition Queries
As I am working with three different scales I want to have a way to toggle certain buildings and assets on or off. I created a new field earlier called
show_grid and assigned a domain
yesno, where "0" = No and "1" = Yes to it. Then through manual selection I assigned Yes or No to the grids in each attribute table. Then a simple definition query like
"show_grid" = 1 will only show the relevant grids without having to alter the underlying data or export new datasets.
First I will need to save new workspaces as so far I have only worked in the one "overview" workspace.
New Workspace: "Overview"
The overview workspace works as the Title Page for this map series. This page will contain the page numbers to all the maps so you won't need to show the client's buildings and assets here. Simply use a map layout template and show the whole coverage area with your page numbers. Fix the labels and annotation as required.
In this map layout I used two dataframes to show information at different scales (1:450,000 and 1:175,000). To do this you simply clone the main layout box and paste it into the layout view (don't bother adding a new dataframe and the relevant data layers again... unless you want to waste your time).
There is technically a third dataframe showing the extent of the map with reference to the Hawkesbury LGA in the legend.
New Workspace for Rural Extent
This workspace will cover the Rural scale pages only. You will need to resize and scale symbology, labels and annotation to match this extent. If you haven't turned on
Data Driven Pages toolbar you should do so now.
Click on the first button to enable the setup window. Click "Enable Data Driven Pages" check box, then select the "Rural" grid index layer, then use the field
New Page Number that you created earlier as the name, sorting field and page number. If your
New Page Number fields are blank then go back and fill the attributes in.
In the Extent tab you may want to set a custom map scale. I set it to 1:120,000. The window below the data driven map scale is based on a
map_scale field I added to the
Rural Map Index Grid layer.
You can turn off "Rural Extent" map index grids now. Either turn the layer off or make the polygon boundary colour transparent.
At this scale some icons may be stacked on top of each other. Think about it.... you're visualising a point feature class that is the same size as an entire township at the scale of 1:120,000. You will need to be creative in order to fit some items on to your map. You don't want to see this:
This is better.
Move the features directly or turn labels into annotations. Fitting strategies vary. Even if you have to fudge the location, at this scale it doesn't really matter if you are off by a couple of kilometres. The main issue is showing the pin in the general area and the
asset_rid which the map viewer can refer to in a supplementary report.
Using Feature Layers and Temporary File Geodatabases (or Scratch Disks)
I prefer making a feature layer and saving it into a scratch disk, and then moving the features as the labels will move with them (especially if you have enabled the
Maplex Label Engine). This is done by exporting your feature classes from the SDE to another location (because if you edit the SDE this way, your DBA / Manager will murder you). Then editing the shapefile or file geodatabase with the
Editor tool. The labels will adjust accordingly based on your placement strategy.
Note: If you somehow end up with two shapefiles using different label engines just restart ArcMaps. This is a bug. You can't have a dataframe using two separate label engines.
Rural Extent export
New Workspace for Suburban Extent
Suburban Extent layers, I've experimented and set the scale at 1:57,000. Using the same process as the
Rural Extent layers, I enable
Data Driven Pages tool and adjust the settings accordingly to the
Suburban Extent layer. The
map_scale field is also updated in the attribute table. As there were 6 pages in the
Rural Extent layer remember to set the starting page number to " 7 ".
Using Selections and Definition Queries
Town Centre Extent polygons are visible within the
Suburban Extents layer, I will need to hide the markers that correspond to those pages. This helps the reader know that information is contained in another page, and to look for the corresponding information like a street directory.
Features Shown In Both Suburban & Town Centre Extents
Make Use Of
Select By Location: You want to select from all three asset layers, COMPLETELY WITHIN the source
Town Centre Extent.
Hide Features Using A
Definition Query. Then assign the ones selected above to " 0 " and all the selected items should disappear from the screen. Note: This is different from deleting the objects from the table. This is simply scripting ArcMaps to display items defined by the
- "visible_suburban" = 1, where 1 = "Yes" and 0 = "No"
Suburban Extent export
New Workspace for Town Centre Extent
Basically the same as previous. Adjust the size of your symbology. You can turn off all the grids now and tweak the
Data Driven Pages tool for the
Town Centre Extent layer. You'll most likely spend most of the time moving features so that the labels and annotation fit because if you have a stack of features even at this scale you're probably looking at getting even closer than 1:14000 scale. Due to paper count limitations I'm just going to leave them as is and supply the client with a report with all the
asset_idsand their associated attributes like