In [1]:
"""
Cols to map - Multiple Layers
"""

main_mxd = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\npass_08h30_08h45.mxd'

LYRS_SRC = {
    "metro_passageiros" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp',
    "metro_s2"          : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp'
}

LYRS_JOKER = {
    "metro_passageiros" : 'joker',
    "metro_s2"          : 'joker_s2'
}

mapColsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\nr_passageiros.xlsx'

graphicsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\passageiros_legenda.xlsx'

OUT_MXD  = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\mxd'
OUT_MAPS = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\maps'

In [ ]:
"""
Cols to map - Multiple Layers
"""

main_mxd = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\lug_08h30_08h45.mxd'

LYRS_SRC = {
    "metro_passageiros" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp',
    "metro_s2"          : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp'
}

LYRS_JOKER = {
    "metro_passageiros" : 'joker',
    "metro_s2"          : 'joker_s2'
}

mapColsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\nr_lugares.xlsx'

graphicsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\lugares_legenda.xlsx'

OUT_MXD  = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\mxd'
OUT_MAPS = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\maps'

In [2]:
import arcpy
import os
from senpy.fromxls.pnd          import xls_to_dict
from senpy.arcgis.manage.fields import calculate_field
from senpy.arcgis.maps.graph    import get_elem_by_name
from senpy.arcgis.maps.wmap     import mxd_saveas
from senpy.arcgis.maps.wmap     import write_map

In [3]:
# Get maps to do
mapsToDo = xls_to_dict(mapColsTable)

In [4]:
# Get dict with association between maps and graphics elements
graphicElem = xls_to_dict(graphicsTable)

In [5]:
for newMap in mapsToDo:
    print "Producing {} Map".format(newMap)
    # Update JOKER's FIELD's
    for lyr in mapsToDo[newMap]:
        calculate_field(
            LYRS_SRC[lyr], LYRS_JOKER[lyr],
            "[{}]".format(str(mapsToDo[newMap][lyr]))
        )
    
    # Open mxd and change it
    mxd = arcpy.mapping.MapDocument(main_mxd)
    
    # Get Text elements in the main mxd to be changed
    elem_names = graphicElem[newMap].keys()
    text_elem  = get_elem_by_name(mxd, elem_names)
    
    if not text_elem:
        print 'No Graphic/Text element was finded'
    
    for e in text_elem:
        text_elem[e].text = graphicElem[newMap][e]
    
    outmap = write_map(mxd, os.path.join(OUT_MAPS, newMap + '.jpg'))
    
    # Create a new mxd
    mxd_saveas(mxd, os.path.join(OUT_MXD, newMap + '.mxd'))
    
    # Close mxd
    del mxd
    
    print "{} Map is done!".format(newMap)


Producing pa_hora_00 Map
pa_hora_00 Map is done!
Producing pa_hora_18 Map
pa_hora_18 Map is done!
Producing pa_hora_19 Map
pa_hora_19 Map is done!
Producing pa_hora_8 Map
pa_hora_8 Map is done!
Producing pa_hora_7 Map
pa_hora_7 Map is done!
Producing pa_hora_13 Map
pa_hora_13 Map is done!

In [ ]: