Data Driven Pages Thematic Map Book

4157
23
08-19-2014 12:46 PM
Status: Implemented
Labels (1)
MichaelGrieco
New Contributor II

 

Request:  Have Data Driven Pages actually produce a thematic map book.

 As discussed in the Esri Desktop help:

From the Ersi ArcGIS Help 10.2, 10.2.1, and 10.2.2

Thematic map book

A thematic map book is similar to a reference series, except that the detail pages show unique thematic maps of a single location.


The ability to display different unique themes (layers) covering a single location  would be invaluable to display the results of a multi phase analysis.  I have many clients that are tired of making a separate mxd for each theme.

 

 

Following is the clever solution supplied by Esri Support for my initial specific request:

 

 

import arcpy, os

 

mxd = arcpy.mapping.MapDocument(r"C; file location ")

mxdDDP = mxd.dataDrivenPages

 

for i in arcpy.mapping.ListLayers(mxd):

    if i in ["geology_geochem","glaciation","Precipitation Regime","geology_sed"]:

        i.visible = False

        arcpy.RefreshActiveView()

 

for i in range(mxdDDP.pageCount + 1):

    mxdDDP.currentPageID = i

    name = mxdDDP.pageRow.getValue(mxdDDP.pageNameField.name)

    print name

    if name == 'GEO':

        for i in arcpy.mapping.ListLayers(mxd):

            if i.name == "geology_geochem":

                i.visible = True

                arcpy.RefreshActiveView()

                mxdDDP.exportToPDF(r"C:\temp\GEO.pdf", "CURRENT")

                i.visible = False

                arcpy.RefreshActiveView()

    if name == 'GEO_sed':

        for i in arcpy.mapping.ListLayers(mxd):

            if i.name == "geology_sed":

                i.visible = True

                arcpy.RefreshActiveView()

                mxdDDP.exportToPDF(r"C:\temp\GEO_sed.pdf", "CURRENT")

                i.visible = False

                arcpy.RefreshActiveView()

    if name == 'GLA':

        for i in arcpy.mapping.ListLayers(mxd):

            if i.name == "glaciation":

                i.visible = True

                arcpy.RefreshActiveView()

                mxdDDP.exportToPDF(r"C:\temp\GLA.pdf", "CURRENT")

                i.visible = False

                arcpy.RefreshActiveView()

    if name == 'PRE':

        for i in arcpy.mapping.ListLayers(mxd):

            if i.name == "Precipitation Regime":

                i.visible = True

                arcpy.RefreshActiveView()

                mxdDDP.exportToPDF(r"C:\temp\PRE.pdf", "CURRENT")

                i.visible = False

                arcpy.RefreshActiveView()

 

 

 

This solution is just a go-by as my actual need is to display 40 different themes over the same extent.

 

23 Comments
MarcelSt-Germain

Hope this thematic map thing will allow multiple layout each one  pointing to a specific page.  For now it's time consuming to do so with map series.

KoryKramer

Adding a link here to the Thematic Map Series samples just shared for ArcGIS Pro http://www.arcgis.com/home/item.html?id=eba53351ceb84b58b505dec5272e526c 

MarcelSt-Germain

Nice but still waiting for useful cartographic map series to make map.  I think, Esri doesn't understand the needs.

KoryKramer

Hi Marcel,

Did you look at the Readme provided with the download?  From the first paragraph of the Background, I think it is clear that the team does understand the needs, and was just touching on the surface of some of the complexities that will need to be addressed in order to design a user interface for this. 

Background

A thematic map series is when the extent of the map doesn’t change but the layers displayed modified for each page in the map series.  An example might be a residential site location where you want to display parcel information on one page, then fire districts, school districts, flood zone information, an so on, all on different pages.  A thematic map series currently can’t be created in the ArcGIS Pro interface, but it can be done using Python map automation.  A thematic map series can be more complex than just turning layers on and off before exporting a page and that is why a solution in the application interface isn’t available.  In many cases, depending on the thematic page, layers may need to be displayed in a different order, or display different symbology, definition queries, and different scale thresholds might be applied to a layer as well.  The layer specific logic can be automated in a Python script more easily than an application user interface that may not always satisfy all requirements.  Esri hopes to build a basic user interface for thematic maps but there may always be a need to further customize it with Python.

That aside, the team created this recent sample in an effort to be helpful.  I shared it on this thread with the same motivation.  We hope that users seeking this functionality will be aided by the provided samples.

Thank you!

MarcelSt-Germain

Maybe I'm not on the right path.  Effectively, it's like I'm mistaken the thematic map functions.

For me, at least, I think the problem still there.  No way to make maps like we need.  Call it map series, datadriven pages or so, still no function to do it the way it should be to make maps.  In a project we can have hundred layouts with one or more maps on each. 

You can created annotations link to pages. Very nice feature introduces years ago to clean up annotation in adjacent pages.  The problem that ESRI has not taken in context is that the datadriven pages or map series is for pages only, or I miss something.  

I know ESRI have thought of datadriven or map series for one layout to many extent of one map only.  What we need is very simple.  

In a map workflow you can have more than one map in a page.  Each one with his one name (ie map 1, map2, map 2-A etc on the page one).  So, you can't make the layout on page 1 that is not the same on page 2 or 3 or...  

What we need is a map series were in opening the page of a layout the map series of each of the map inside is activated.  And so on for each of the layout with one or more map on it.  For now, only one map is allowed (map series) by pages and when you change layout, pro do not remember (arcmap does) the update the mapseries.

KirstenHazler

Currently, map series only support an extent-based series, where the extent of each map in the series is based on a set of features in a feature layer, or on a set of bookmarks.

I frequently need to make maps all with the same exact extent, but displaying a different layer or theme in each one. For example, I might want to show the same feature class symbolized based on different attributes. Or I might want to show a series of different layers based on different feature classes entirely. As it is now, I have to make a separate map and layout for each theme. What a waste of time!

It would be great to make a single map with all the layers I want to show, and a map series layout that cycles through the layers I specify, while keeping the same basemap. The title of each map should also change to match the particular layer being displayed.

Thanks for considering this idea.

JeffBarrette
Status changed to: In Product Plan

The Layout team does hope to implement this in the Pro application but not for a few releases.  In the meantime, this was always possible using Python Map Automation.  There is a python sample and detailed README at this location:

https://www.arcgis.com/home/item.html?id=eba53351ceb84b58b505dec5272e526c

 

Jeff - Layout and arcpy.mp teams

KirstenHazler
Thank you, Jeff!
KoryKramer
Status changed to: Under Consideration
 
StefanFreelanFreelan

I've been asking / hoping for a thematic map series tool for years.

In the meantime, here is my workaround:
I create set up the different thematic layers in my Map view to display at slightly different scales, so for example:
- zoning is set to draw from 1:24,000 to 1:24,002
- soils is set to draw at 1:24,003 to 1:24,005
- wetlands are set to draw from 1:24,006 to 1:24,008
etc.

Then I create a spatial map series (using the standard tools) where the the Zoning polygon is set for a map scale of 1:24,001; the Soils polygon is set for 1:24,004, the Wetlands polygon is set for 1:24,007...

This produces a series of map with slightly different spatial extents and thus different thematic map layers. But the change in scale is so small that the series looks like a thematic map series...

Kind of a pain, but it actually works great.