I'm trying to create a map series where the extent of each map is based on features other than the series' index layer. E.g., index feature 1 is within feature A, and I need the map extent to cover the entirety of feature A. Index feature 2 is within feature B, etc. The problem is map series extent isn't designed for such a scenario. I'm trying to brainstorm a workaround. I could use features A, B... as the index layer, but then I'm not sure how I'd create a page query to get the corresponding feature 1, 2... There is not a 1-to-1 ratio of features A, B to 1, 2. Feature A might contain features 1, 2, 3, 4 and I need a map page for each feature 1, 2, 3, 4. Plus, there are dynamic text elements in the layout driven by features 1,2..., so that really wouldn't work.
It's probably possible to do this with Python, but I'm not entirely sure how. I'm thinking it would be a For loop, looking for the index features (1, 2, 3) and an attribute of each feature would be used use to select the corresponding feature A, B, C. Could also use a spatial selection. Has anyone else attempted something similar? Would this even be handled like a map series in Python? I'm thinking probably not. Should this be an idea suggestion for a future version of map series in Pro? Thanks for reading my ramble!
Solved! Go to Solution.
Are features A,B always in the same layer? If so, you might be able to use the Linked Map Frame Extent map frame constraint to solve the issue. To that you would create the map series using the current map frame and index layer, but drag that map frame off the page or turn off its visibility. Then add a new map frame on the page and set the constraint using the A,B layer as the layer parameter. Then, the map frame will show the extent of A,B but a page will be created for each index feature.
I did a quick test with states and counties.
A page with 1 county in a state:
A page for one county, but the state contains 2 counties (you could use a page query to hide the other one if you wanted)
Unfortunately the page query function works against the map series page name so there isn't a good way to solve this. You can change the page name to be the A,B feature, but then you only have one page for each A,B feature and not a page for every 1,2 feature. You can display the data for all the 1,2 features using dynamic text or other dynamic elements but you wouldn't have a page for each.
To do more than I think you need Python.
Are features A,B always in the same layer? If so, you might be able to use the Linked Map Frame Extent map frame constraint to solve the issue. To that you would create the map series using the current map frame and index layer, but drag that map frame off the page or turn off its visibility. Then add a new map frame on the page and set the constraint using the A,B layer as the layer parameter. Then, the map frame will show the extent of A,B but a page will be created for each index feature.
I did a quick test with states and counties.
A page with 1 county in a state:
A page for one county, but the state contains 2 counties (you could use a page query to hide the other one if you wanted)
Thanks for your quick reply, @AubriKinghorn. This looks very promising! I'll give it a shot and report back. It's great that this option would retain my project as a "real" map series that can be seen in Pro. Whereas the Python option (as I'm envisioning it) would mean the resulting map pages only exist as exported PDFs.
I've played around with this a bit and it's close but not quite. In your example of states (my "A, B" features) and counties (my "1, 2" index features), you are not filtering to show just the subject state, which is what I need. Pro clearly knows what feature A is, because it's able to zoom to its extent based on index feature 1, but I can't get a page query to work on feature A. It either shows all of A, B (query off) or none of A, B (query on). I tried every combination of page queries on layer A, B between the two map frames.
There are a couple other minor issues, but that's most because of my data. I would figure out how to work around that if could figure out how to make page queries work on features A, B.
So close! Thank you for your help.
Unfortunately the page query function works against the map series page name so there isn't a good way to solve this. You can change the page name to be the A,B feature, but then you only have one page for each A,B feature and not a page for every 1,2 feature. You can display the data for all the 1,2 features using dynamic text or other dynamic elements but you wouldn't have a page for each.
To do more than I think you need Python.
Can't have everything, I guess. Thanks for your help. Even if I still have to do some manual steps to output my maps, using the linked map frame extent is still superior to the way I was doing it before.